Skip to main content

Edron

CI PyPI version Python versions License Status: Beta

Build polished, server-rendered Python apps with a small, explicit API.

Edron keeps the first page simple and gives the same codebase room to grow into dashboards, internal tools, data workspaces, long-running jobs, and reusable feature packages. You write ordinary Python, run one command, and get accessible HTML with progressive enhancement—without maintaining a separate frontend application or learning a callback-heavy UI model.

For existing Streamlit projects, edron migrate streamlit app.py --out migrated-app produces a fresh Edron project, deterministic review report, and source map. The migration is static and review-first: source files are never executed or overwritten, and uncertain behavior is called out as a finding or TODO.

A first page in minutes

Install Edron, create app.py, and start the development server:

python -m pip install edron
edron run app:app --reload
import edron as ed

app = ed.App(title="Hello Edron")


@app.page("/", title="Hello")
class Home(ed.Page):
    def render(self) -> None:
        self.heading("Hello, Edron")
        self.text("A small Python API for useful web applications.")

That is the whole application. Add a route, compose a layout, or wire an action when you need it—there is no generated frontend project to keep in sync.

For a guided starting point, use a teaching scaffold:

edron new my-app --template minimal
cd my-app
edron run app:app --reload

Why developers reach for Edron

  • Python all the way down. Pages, components, actions, forms, data, and jobs use familiar functions, classes, and type hints.
  • A fast path and an escape hatch. Start with a handful of readable Edron primitives. Keep full control of the underlying application when an advanced integration needs it.
  • Server-first by default. HTML is useful on its own; HTMX-style enhancement adds smooth interactions without making JavaScript a requirement.
  • Batteries included for real work. Compose navigation and layouts, render charts and media, build bounded data tables and editors, manage resources and caching, and expose durable jobs.
  • Inspectable instead of magical. edron check, edron explain, and edron doctor make registration, dependencies, capabilities, and deployment facts visible before production.
  • Easy to test and review. Explicit routes, typed inputs, bounded payloads, and deterministic manifests keep behavior straightforward to assert in unit tests and code review.

A small API that scales

The same page vocabulary works for a simple screen or a complete workflow:

import edron as ed

app = ed.App(title="Sales")


@app.page("/sales", title="Sales")
class Sales(ed.Page):
    def render(self) -> None:
        self.heading("Sales overview")
        with self.layout(ed.layout("grid", columns=2)) as body:
            body.text("A layout is just Python composition.")

Common building blocks include:

Need Edron API
Pages and reusable UI Page, @app.page, fragment, inherit, expose
Navigation and layout navigation_target, layout, NavLink-compatible targets
Forms and interactions typed action, fragment, Outcome, refresh, success
Tables and editing DataSource, DataWorkspace, Column, EditPolicy
Charts and media chart, map, image, audio, video
Resources and performance resource, dependency, cache_data
Long-running work JobFlow, JobBackend, status polling/events
Reusable app features feature_package, include_package, capability promotion

Data, resources, and jobs stay explicit

Edron makes application boundaries visible instead of hiding them in global state. For example, resources are lazy and app-owned, cache policy is declared beside the function it protects, and data editing is deny-by-default:

db = app.resource("database", create_database, secret_refs={"dsn": "DATABASE_URL"})


@ed.cache_data(ttl=60, scope="tenant", vary_on=("tenant_id",))
def load_summary(tenant_id: str) -> dict[str, int]:
    return query_summary(db, tenant_id)

Use DataWorkspace for bounded paging, filtering, sorting, selection, CSV export, and typed edit intents. Use JobFlow when work must outlive a request. Your application still owns the database session, transaction, authorization, persistence, and audit decisions.

Tooling that helps before deployment

# Check source without importing application code
edron check app.py

# Inspect registered pages and surfaces
edron explain app:app

# Check installed required and optional capabilities
edron doctor

# Validate a deployment profile without importing application code
edron deploy-check --profile reverse-proxy --format json

For CI, edron check --format sarif produces review-friendly diagnostics. Applications can also expose deterministic app.manifest() and app.conformance() reports for release checks.

Installation and optional integrations

Edron supports Python 3.11–3.14. Install only what your application needs:

python -m pip install edron

Optional extras are available for pandas, Polars, PyArrow, Plotly, Altair, Matplotlib, and SQLAlchemy (for example, pip install "edron[polars,sqlalchemy]").

Read the getting started guide, browse the API guides, or see the Edron user guide, the Edron roadmap and deployment guide.

How Edron fits in

Edron is the authoring layer: it gives application developers a friendly, typed vocabulary and keeps the important boundaries explicit. A mature native web engine handles the lower-level rendering, routing, interaction, styling, and security work underneath. Most applications never need to think about that implementation detail; when they do, the exact native application remains available through app.native / app.hedron and Page.include().

Edron is currently a Beta API line. Feedback, issues, and contributions are welcome in the Hedron repository.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edron-0.8.0.tar.gz (62.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edron-0.8.0-py3-none-any.whl (74.3 kB view details)

Uploaded Python 3

File details

Details for the file edron-0.8.0.tar.gz.

File metadata

  • Download URL: edron-0.8.0.tar.gz
  • Upload date:
  • Size: 62.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for edron-0.8.0.tar.gz
Algorithm Hash digest
SHA256 b7dec7262afdf82acccb081b705221ff871d2e9e773ab2911be44144fd01ba37
MD5 01535f08d5923a5e80ff1b8ae5de0ed5
BLAKE2b-256 bfeabb221f61350fe944f46bf4867107cf84c1cead8a39140cbc0ecab71d1afe

See more details on using hashes here.

Provenance

The following attestation bundles were made for edron-0.8.0.tar.gz:

Publisher: edron-release.yml on eddiethedean/hedron

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file edron-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: edron-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 74.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for edron-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 88c45992dcbca6aa558294c91ed2d16f8c717f225bfb62109b403a575225b28a
MD5 cf6c1c745ec584fdfa2dfdfc34df61dc
BLAKE2b-256 db9b90b0f3abef06eab73b79ab6a663e0251f35c2b2efdd2b2067f5507790eaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for edron-0.8.0-py3-none-any.whl:

Publisher: edron-release.yml on eddiethedean/hedron

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.9.0

2 files

This release

0.8.0 This release

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 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