front
Compile a Python function's configuration into a runnable UI (web app, CLI, GUI...) without writing framework glue by hand.
To install: pip install front
Quick example
front itself is not a UI framework: it's the core library concrete front frameworks (e.g. streamlitfront) build on. A minimal in-memory framework, whose "app" is a container rendering each function's docstring:
from collections.abc import Callable
from front import SpecMakerBase, APP_KEY, OBJ_KEY, RENDERING_KEY, ELEMENT_KEY, AppMaker
from front.elements import FrontContainerBase, FrontComponentBase
from front.util import dflt_trans
class App(FrontContainerBase):
def render(self):
return {child.name: child() for child in self.children}
class Doc(FrontComponentBase):
def render(self):
return self.obj.__doc__
class SpecMaker(SpecMakerBase):
@property
def _dflt_convention(self):
return {
APP_KEY: {"title": "Untitled"},
OBJ_KEY: {"trans": dflt_trans},
RENDERING_KEY: {ELEMENT_KEY: App, Callable: {ELEMENT_KEY: Doc}},
}
def foo(a, b):
"Adds a and b."
return a + b
app_maker = AppMaker(spec_maker_factory=SpecMaker)
app = app_maker.mk_app([foo], config={APP_KEY: {"title": "My App"}})
app.name
# 'My App'
app()
# {'foo': 'Adds a and b.'}
The three-step workflow
SpecMakerBase.mk_speccompiles a short-language configuration (plus a convention of defaults) into a long-languageFrontSpec(app_spec,obj_spec,rendering_spec).ElementTreeMaker.mk_treebuilds a composite tree ofFrontElementBaseelements from the rendering spec: a root container (e.g.FrontContainerBase) with one child per object, built fromFrontComponentBase/InputBase/OutputBasesubclasses.AppMaker.mk_appchains the two and returns the root element, callable as the app.
To implement a concrete front framework, subclass SpecMakerBase to supply the concrete element classes as the default convention, and hand it to AppMaker (see the example above, and streamlitfront for a real one).
Crudifying functions
Crudifier/prepare_for_crude_dispatch (in front.crude) let functions with complex arguments (objects that don't fit in a text box or URL) be dispatched through string keys into stores instead — the "CRUD-Execution" pattern. front.dag applies the same crudification to the variable nodes of a meshed DAG.
Docs
Rendered documentation · flat front.md for a single-file view.
For AI agents
front publishes its documentation in forms made for coding agents. If you are one, start here.
The documentation, machine-readable: llms.txt indexes every page; front.md is the whole documentation in one file; every page has a .md twin; objects.inv maps symbols to URLs.
If you are a control freak, the rest of this README is written for you, starting at the top of the page.
Metadata
Release files for front 0.1.114
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| front-0.1.114.tar.gz | 277.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| front-0.1.114-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 564.7 kB
Release files / front-0.1.114.tar.gz
| Download URL | front-0.1.114.tar.gz |
|---|---|
| Size | 277.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
169e3408c0bd936c82060ad1eb5c1b248d055eaec3e445e4d3596c990a82f7ab
|
|
BLAKE2b-256 checksum How to use checksums |
bf3da9017a23767cd59ec6e947bfc06c7147cd7e8d1e95e51947058de334268a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / front-0.1.114-py3-none-any.whl
| Download URL | front-0.1.114-py3-none-any.whl |
|---|---|
| Size | 287.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
75728864f253f3e14c594abfcf1a09c0472d71eed29f355c4289aba1d70298a6
|
|
BLAKE2b-256 checksum How to use checksums |
877dfa89c44275a2bed1fb6a4c9d717489d9c06a49d6717b0fac339270dcb78e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for front 0.1.114
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.