Skip to main content

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

  1. SpecMakerBase.mk_spec compiles a short-language configuration (plus a convention of defaults) into a long-language FrontSpec (app_spec, obj_spec, rendering_spec).
  2. ElementTreeMaker.mk_tree builds a composite tree of FrontElementBase elements from the rendering spec: a root container (e.g. FrontContainerBase) with one child per object, built from FrontComponentBase/InputBase/OutputBase subclasses.
  3. AppMaker.mk_app chains 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.109

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

Source distribution (sdist)

Source distribution for front 0.1.109
File Size Uploaded Provenance
front-0.1.109.tar.gz 274.2 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 560.3 kB

Release files / front-0.1.109.tar.gz

Download URL front-0.1.109.tar.gz
Size 274.2 kB
Tags Source
SHA-256 checksum
How to use checksums
042f3fdada82b84ce4ca976e9e347019376488e3e5b60761c29ebf7c40a64592
BLAKE2b-256 checksum
How to use checksums
1aadea641b80ea6b14658728cc5674c5e19366d668ab6b4e57665db082e683b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","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.109-py3-none-any.whl

Download URL front-0.1.109-py3-none-any.whl
Size 286.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc7fb0558dfc499981c2be9969dcf4e44055ec733affceffa4920e350fcd5ec2
BLAKE2b-256 checksum
How to use checksums
f362d4df6c093ee0c32d1a5ab1da63b8f9b1e687194b0ed8dbe2d12e84bf5eec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","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.109

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

0.1.109 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