Skip to main content

keepup

tests security PyPI licence

Project page · Package · Changes

Four badges, not six checks. These answer what somebody deciding whether to install asks: does it run on my Python, is there a known vulnerability in what it pulls in, what will I get, and may I use it. quality, build and codeql are housekeeping and live on the Actions page -- six badges in a row stop being read at all.

A badge shows; it does not require. What keeps a red check from being merged is a branch rule, not a picture -- see doc/keepup.md.

An admin framework over FastAPI. You give it settings; it gives you an application with a panel, a plugin runtime, users, a database layer, an audit, metrics and coordination between replicas already wired.

from keepup import KeepupSettings, create_app

app = create_app(KeepupSettings(title="Your product", project_name="yours"))

That is a running application with a working panel at /selfcare: the shell, the themes and eight administrative sections ship inside the package, so there is nothing to copy into your tree to see them.

Installed as keepup-admin; imported as keepup. The name keepup on PyPI belongs to an unrelated project from 2015 that installs a script and no module, so the import name is free.

What it gives you

Application assembly create_app(settings) — FastAPI, middleware, lifespan, static mounts
Plugin runtime features as plugins; routes are data, not decorators
Panel the shell, visual themes, and the catalogue of sections with role grants
Users local accounts, roles, panel sessions, sign-in through an external provider
Database a SQLAlchemy layer with a pool, table declarations for two dialects
Replicas distributed locks, a message bus, a cluster registry, performance settings in one place
Observability audit of incoming requests, an event log, metrics, log shipping

What it does not decide for you

The framework carries no product. Anything it cannot know arrives through KeepupSettings: your name and version, where your logs are shipped, which fields of a request are secret, what a password must look like, which tables belong to you, which origins may read your answers.

Where a default would have to guess, it closes rather than opens. Metrics are not served without credentials, no origin is allowed cross-origin, the audit keeps field names and not values, and there is no collector address, no signing key and no password anywhere in the source. An application says what it needs open; the package does not decide that on its behalf.

What is public

A module that an application may import from declares __all__. Everything else is internal and may change without notice — including any name starting with an underscore, whatever module it sits in.

keepup/tests/public_interface_tests.py holds this to the applications in the repository: a name taken out of the framework and not declared public fails the run, and the failure says what to do about it.

Requirements

Python 3.11 or newer. PostgreSQL in production; SQLite works and is meant for development. pip install keepup-admin[postgres] adds the driver the bus between replicas needs.

Tests

pip install -e ".[test]" -e packages/keepup-*
pytest tests/

Install first, then test. Pointing pytest at the checkout does not work on its own: import keepup has to resolve, and the directory a clone lands in is called keepup-admin, so nothing is named keepup until the package is installed. The capabilities are distributions of their own in packages/ — each carries the libraries it needs, and the suite imports them — so a clone installs them from the tree; the extras name the same ones for an installation from the index.

The suite runs against SQLite with no network, needs no application beside the package, and holds a coverage floor declared in pyproject.toml. Checks that genuinely need a consumer of the framework find one by trait and skip with a reason when there is none, so a skip here always says what is missing.

Every one of these runs on push and on a pull request; see .github/workflows/. security.yml also runs weekly, because that check goes red without anybody touching the repository — an advisory gets published against a version that was fine yesterday.

Licence

Apache 2.0. See LICENSE, and NOTICE for the attribution that clause 4(d) asks to travel with a derivative.

The panel's front end also ships five third-party bundles -- Tailwind, Feather, AOS, Chart.js and its date adapter. All five are MIT and stay under their own terms; minification stripped their headers, so their notices live in THIRD-PARTY.md.

Metadata

Release files for keepup-admin 0.4.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 keepup-admin 0.4.0
File Size Uploaded
keepup_admin-0.4.0.tar.gz 499.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keepup-admin 0.4.0
File Interpreter ABI Platform
keepup_admin-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / keepup_admin-0.4.0.tar.gz

Download URL keepup_admin-0.4.0.tar.gz
Size 499.9 kB
Tags Source
SHA-256 checksum
How to use checksums
37d803f9f82aafb01b932db392999cbe9e547e31483b813d840c6a0f345f37ce
BLAKE2b-256 checksum
How to use checksums
97d1f37bd0426956d59b13ff6de312906e68f04092c2b3c0cc7729bc3159813c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / keepup_admin-0.4.0-py3-none-any.whl

Download URL keepup_admin-0.4.0-py3-none-any.whl
Size 549.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d519579287638411069449743a6f1860bb4caf0a517483389fbba7d0130c5a0
BLAKE2b-256 checksum
How to use checksums
21210fa2edc5278bf6082a2d007da2647497210f5c1484e1926a42f6708aa770
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

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