Skip to main content

SPLENT Framework

Core library for building modular, feature-driven Flask applications using Software Product Line principles.

Quick start

from splent_framework import create_splent_app

app = create_splent_app(__name__, config_name="development")

Production defaults

A product built with create_splent_app gets these without any code. Each one is a variable in the deployment's .env. The header and asset settings can also be fixed in the product's config.py, which then wins over the .env. For SPLENT_COOKIE_SECURE and MAX_CONTENT_LENGTH the .env wins over the product and over any feature's inject_config, because only the deployment knows whether it runs over HTTPS and how large its uploads are. The factory applies both again after the features load.

Variable Default What it does
SPLENT_TRUSTED_PROXIES 0 Number of reverse proxies in front of the app. Set it to 1 behind a TLS proxy (nginx, Caddy, Traefik) so the app sees the client address and the https the proxy was reached on, builds https:// links and sends HSTS. Leave it at 0 when the app port is reachable without the proxy.
SPLENT_COOKIE_SECURE auto Session and remember-me cookies are always HttpOnly and SameSite=Lax. Left unset, every cookie is Secure when the request arrived over HTTPS, directly or through a trusted proxy, so behind TLS set SPLENT_TRUSTED_PROXIES. true forces Secure, false never sets it.
MAX_CONTENT_LENGTH 16M Largest request body. Bigger ones get 413, as JSON for a client that sent or asked for JSON. Accepts bytes or K, M, G, and 0 for no limit.
SPLENT_SECURITY_HEADERS true nosniff, X-Frame-Options, Referrer-Policy, Permissions-Policy and Cache-Control: no-store for signed-in users. false leaves them all to the proxy.
SPLENT_FRAME_OPTIONS SAMEORIGIN DENY, or off to send nothing.
SPLENT_REFERRER_POLICY strict-origin-when-cross-origin Any Referrer-Policy value.
SPLENT_PERMISSIONS_POLICY camera, microphone, geolocation, payment and USB off The whole Permissions-Policy value. Embedded maps lose their location button under the default; allow geolocation here if a product needs it.
SPLENT_NO_STORE_SIGNED_IN true Cache-Control: no-store on pages for a signed-in user.
SPLENT_HSTS_MAX_AGE 31536000 Sent only over HTTPS. 0 turns HSTS off.
SPLENT_HSTS_INCLUDE_SUBDOMAINS, SPLENT_HSTS_PRELOAD false The optional HSTS directives.
SPLENT_CONTENT_SECURITY_POLICY none A Content-Security-Policy to send. Opt in, since existing templates use inline scripts.
SPLENT_CSP_REPORT_ONLY false Send that policy as Content-Security-Policy-Report-Only to try it first.
SPLENT_ASSET_MAX_AGE 31536000 How long a versioned asset (?v=<mtime>) may be cached. 0 turns it off.
SPLENT_ASSET_VERSIONING true Add ?v=<mtime> to the asset URLs url_for builds.

Database connections are pinged when they leave the pool and recycled after an hour (SQLALCHEMY_ENGINE_OPTIONS), so a database restart or MariaDB's eight hour wait_timeout never reaches a visitor as a 500. A product changes them in its config.py.

Requirements

  • Python 3.13+
  • Flask 3.1+
  • SQLAlchemy 2.0+

Documentation

Full docs, tutorials, and architecture reference at docs.splent.io

License

splent_framework is free software under the GNU Lesser General Public License, version 3 or any later version (LGPL-3.0-or-later). See COPYING.LESSER, and COPYING for the GNU General Public License it builds on. A product built on the framework can carry any license of its own choice.

Metadata

Release files for splent-framework 1.18.2

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

Source distribution (sdist)

Source distribution for splent-framework 1.18.2
File Size Uploaded Provenance
splent_framework-1.18.2.tar.gz 281.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for splent-framework 1.18.2
File Interpreter ABI Platform
splent_framework-1.18.2-py3-none-any.whl Python 3 none any Details

Total release size: 454.5 kB

Release files / splent_framework-1.18.2.tar.gz

Download URL splent_framework-1.18.2.tar.gz
Size 281.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c2d56c14c999a607415746eb4d5f05cae90b3604cb74c81f427dcaa399b830f9
BLAKE2b-256 checksum
How to use checksums
cb934bb7153fc6bc74ddd01bf3ef5ece62e41aa88f331b6e3af08f5e6ad74c64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / splent_framework-1.18.2-py3-none-any.whl

Download URL splent_framework-1.18.2-py3-none-any.whl
Size 173.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f2a6bb5599e462b149245eb826d0a24b2138fcd68e4de7d73067573fe600ade
BLAKE2b-256 checksum
How to use checksums
7481aa453609dcec7ca8cd90f1c7a57fb4c666636c0db0b068a8f1d8fd23dab6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Security for splent-framework 1.18.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.18.2 This release

2 release files No provenance

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