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.104
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| front-0.1.104.tar.gz | 268.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| front-0.1.104-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 549.2 kB
Release files / front-0.1.104.tar.gz
| Download URL | front-0.1.104.tar.gz |
|---|---|
| Size | 268.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5de42548d51ec8b3b1f3657d151b760e875e6c339330f1be5ffd35e25ba83f3e
|
|
BLAKE2b-256 checksum How to use checksums |
fcf2230ff451a1d09951c6c74949aacd046ccc3b99a16940fbe2c398c003ca19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.104-py3-none-any.whl
| Download URL | front-0.1.104-py3-none-any.whl |
|---|---|
| Size | 280.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
51bfb2d7a93a8f0de7d90ac4b81f790922a68a80ba5975acc9afeda91654fdb8
|
|
BLAKE2b-256 checksum How to use checksums |
ffc68ecd0546ffa59c68699e8cb1fd395857b72f4f1d7c4f9cf99321ed840756
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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}
|