Skip to main content

Latest Version Supported Python versions License: GPL v3 Python application Codacy Badge Downloads

SAFRS

Expose SQLAlchemy models as JSON:API resources and generate API documentation with minimal boilerplate.

SAFRS is built around SQLAlchemy models and JSON:API-style resource handling. The repository includes FastAPI and Flask adapters.

SAFRS demo

Start here

Functionality

  • JSON:API collection and instance endpoints for SQLAlchemy models
  • relationship endpoints and include support
  • filtering, sorting, pagination, sparse fieldsets, and bulk request support
  • custom RPC methods with @jsonapi_rpc
  • generated Swagger / OpenAPI documentation
  • serialization hooks, computed attributes, and model-level customization
  • stateless service-style endpoints through JABase

Install

SAFRS currently requires Python >=3.10.

Install from PyPI:

pip install safrs

Editable install from a clone:

git clone https://github.com/thomaxxl/safrs
cd safrs
python -m venv venv
source venv/bin/activate
pip install -e .

For the broader example set, including auth and admin examples:

pip install -r examples/requirements.txt

More setup details: Installation wiki page

Quick start from this repository

SAFRS models inherit both SAFRSBase and the SQLAlchemy model base. You then expose them with:

  • SafrsApi(...).expose_object(Model) for Flask
  • SafrsFastAPI(...).expose_object(Model) for the FastAPI adapter

Run the smallest Flask example:

python examples/mini_app.py

Run the smallest FastAPI example:

python examples/mini_fastapi_app.py

Quickstarts and walkthroughs:

Example files worth opening first

The full examples index is in the wiki: Examples

Documentation map

Getting started:

Core JSON:API behavior:

Customization and extension:

Advanced topics:

Notes

  • Flask is still the main documented SAFRS path.
  • The FastAPI adapter exists in the repository and is documented, but it should still be treated as experimental.
  • The older expose-existing-database workflow is no longer the main recommended entry point and is kept as legacy documentation.

SAFRS originally stood for SqlAlchemy Flask-Restful Swagger. The project has since grown beyond the original Flask-only framing, but the historical name remains.

Metadata

Release files for safrs 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for safrs 3.2.0
File Size Uploaded
safrs-3.2.0.tar.gz 139.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for safrs 3.2.0
File Interpreter ABI Platform
safrs-3.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 277.3 kB

Release files / safrs-3.2.0.tar.gz

Download URL safrs-3.2.0.tar.gz
Size 139.8 kB
Tags Source
SHA-256 checksum
How to use checksums
19cdce80fd0abc17320b313ba61721c0e3591b56aa16ff424efbb1f3bc43f73c
BLAKE2b-256 checksum
How to use checksums
240030427071b9041fdac187f10ede8b189d5b296feb17fe3a406c56fea8bd22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / safrs-3.2.0-py3-none-any.whl

Download URL safrs-3.2.0-py3-none-any.whl
Size 137.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab0b9e52534b40c6b4617d05a7a362695a536843c4b9f6597dd6547bbd25736e
BLAKE2b-256 checksum
How to use checksums
c311cd15c93da768cb45434e85f410e672543e8e18821e7b776269bebbc35786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

3.2.0 This release

2 release files

3.1.7

2 release files

3.1.6

2 release files

3.1.5

1 release file

3.1.4

2 release files

3.1.3

1 release file

3.1.1

2 release files

3.1.0

2 release files

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.12.5

1 release file

2.12.4

1 release file

2.12.3

1 release file

2.12.2

1 release file

2.12.1

1 release file

2.12.0

1 release file

2.11.5

1 release file

2.11.4

1 release file

2.11.3

1 release file

2.11.2

1 release file

2.11.1

1 release file

2.11.0

1 release file

2.10.7

1 release file

2.10.6

2.10.5

1 release file

2.10.4

1 release file

2.10.3

1 release file

2.10.2

1 release file

2.10.1

1 release file

2.10.0

1 release file

2.9.3

1 release file

2.9.2

1 release file

2.9.1

1 release file

2.9.0

1 release file

2.8.1

1 release file

2.8.0

1 release file

2.7.0

1 release file

2.6.2

1 release file

2.6.1

1 release file

2.6.0

1 release file

2.5.5

1 release file

2.5.4

1 release file

2.5.3

1 release file

2.5.2

1 release file

2.5.1

1 release file

2.5.0

1 release file

2.4.0

1 release file

2.3.2

1 release file

2.3.1

1 release file

2.3.0

1 release file

2.2.3

1 release file

2.2.2

1 release file

2.2.1

1 release file

2.2.0

1 release file

2.1.0

1 release file

2.0.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.22

1 release file

1.0.21

1 release file

1.0.20

1 release file

1.0.19

1 release file

1.0.18

1 release file

1.0.17

1 release file

1.0.16

1 release file

1.0.15

1 release file

1.0.14

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.11

1 release file

1.0.10

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.1.1

1 release file

0.1

1 release 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