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.106

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.106
File Size Uploaded
front-0.1.106.tar.gz 269.4 kB Details

Built distribution (wheel)

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

Total release size: 550.4 kB

Release files / front-0.1.106.tar.gz

Download URL front-0.1.106.tar.gz
Size 269.4 kB
Tags Source
SHA-256 checksum
How to use checksums
869fea5ddff8e2d9f8d3cb9c267600ddaf5733408f4ea130be495d30dfb9fdb8
BLAKE2b-256 checksum
How to use checksums
20f999c16c213849aca44f813955187efe635a939e8a4666b1122f7707f26ef2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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.106-py3-none-any.whl

Download URL front-0.1.106-py3-none-any.whl
Size 280.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a0023ed6bc6f3b85fa16e597086fd719349ea879434f5d1b2ba3ffdfdfd65fc
BLAKE2b-256 checksum
How to use checksums
fc2ab1ecc60107a3d9cc26f9c3b0d6cf145d9f54b53dcb5d2bd15f9cec16197b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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 history Release notifications | RSS feed

This release

0.1.106 This release

2 release files

0.1.99

2 release files

0.1.98

2 release files

0.1.97

1 release file

0.1.96

1 release file

0.1.95

1 release file

0.1.94

1 release file

0.1.93

1 release file

0.1.92

1 release file

0.1.91

1 release file

0.1.90

1 release file

0.1.89

1 release file

0.1.88

1 release file

0.1.87

1 release file

0.1.86

1 release file

0.1.85

1 release file

0.1.84

1 release file

0.1.83

1 release file

0.1.82

1 release file

0.1.81

1 release file

0.1.80

1 release file

0.1.79

1 release file

0.1.78

1 release file

0.1.77

1 release file

0.1.76

1 release file

0.1.75

1 release file

0.1.74

1 release file

0.1.73

1 release file

0.1.72

1 release file

0.1.71

1 release file

0.1.70

1 release file

0.1.69

1 release file

0.1.68

1 release file

0.1.67

1 release file

0.1.66

1 release file

0.1.65

1 release file

0.1.64

1 release file

0.1.63

1 release file

0.1.62

1 release file

0.1.61

1 release file

0.1.60

1 release file

0.1.59

1 release file

0.1.58

1 release file

0.1.57

1 release file

0.1.56

1 release file

0.1.55

1 release file

0.1.54

1 release file

0.1.53

1 release file

0.1.52

1 release file

0.1.51

1 release file

0.1.50

1 release file

0.1.49

1 release file

0.1.48

1 release file

0.1.47

1 release file

0.1.46

1 release file

0.1.45

1 release file

0.1.44

1 release file

0.1.43

1 release file

0.1.42

1 release file

0.1.41

1 release file

0.1.40

1 release file

0.1.39

1 release file

0.1.38

1 release file

0.1.37

1 release file

0.1.36

1 release file

0.1.35

1 release file

0.1.34

1 release file

0.1.33

1 release file

0.1.32

1 release file

0.1.31

1 release file

0.1.30

1 release file

0.1.29

1 release file

0.1.28

1 release file

0.1.27

1 release file

0.1.26

1 release file

0.1.25

1 release file

0.1.24

1 release file

0.1.23

1 release file

0.1.22

1 release file

0.1.21

1 release file

0.1.20

1 release file

0.1.19

1 release file

0.1.18

1 release file

0.1.17

1 release file

0.1.16

1 release file

0.1.15

1 release file

0.1.14

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.4

2 release files

0.0.3

2 release files

0.0.2

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