Codebase list python-faraday / master doc / overview.rst
master

Tree @master (Download .tar.gz)

overview.rst @masterview markup · raw · history · blame

Overview

This is the developer documentation of the Faraday server. If you are a user instead, you should go to the Faraday Wiki at GitHub.

The Faraday server ecosystem

We are using the following Python libraries to keep our server running:

Flask

A minimalistic web framework for Python with a great (but a bit messy) ecosystem.

SQLAlchemy

A really powerful but complex Object Relational Mapper for Python that allows us to map results of SQL queries to instances of Python objects. Sometimes it looks made by Java developers rather than Python devs.

Flask-Classful

A pretty simple library to create RESTful API endpoints inside a class defining one or many routes related to that endpoint. Is takes the idea of Flask Pluggable Views.

The library is a fork of Flask-Classy, a library that stopped being maintained 4 years ago.

Marshmallow

Framework-agnostic serialization and deserialization library to define the input and output schema of our RESTful API in a declarative, pythonic web. It is heavily inspired on Django REST Framework serializers, but with the goal of supporting many frameworks and ORMs

Flask-Security

A library prodiving a users and role system with support with Flask and SQLAlchemy. It gives us customizable registration and login endpoints.

It was build on top of other common Flask libraries such as:

System Message: INFO/1 (<string>, line 60); backlink

Duplicate implicit target name: "flask".

System Message: INFO/1 (<string>, line 62); backlink

Duplicate implicit target name: "flask-classful".

System Message: INFO/1 (<string>, line 64); backlink

Duplicate implicit target name: "sqlalchemy".

System Message: INFO/1 (<string>, line 65); backlink

Duplicate implicit target name: "marshmallow".

System Message: INFO/1 (<string>, line 67); backlink

Duplicate implicit target name: "flask-security".

Other libraries we use

  • Flask-SQLAlchemy provides us a nice way to use the framework and the ORM together. It also has a good pagination system that is used on many API endpoints
  • Webargs to parse the request arguments given a Marshmallow Schema
  • Depot to have pluggable file storage backends

Docutils System Messages

System Message: INFO/1 (<string>, line 81)

Hyperlink target "pagination system" is not referenced.