Skip to main content

Edron

CI PyPI version Python versions License Status: Beta

Build polished, server-rendered Python apps with a small, explicit API. The current Edron train is 0.9.x, built on Hedron 0.67.0.

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>=0.9,<0.10" "hedron>=0.67.0,<0.68" "hedron-data>=0.67.0,<0.68"
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.9.0.tar.gz (64.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.9.0-py3-none-any.whl (77.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: edron-0.9.0.tar.gz
  • Upload date:
  • Size: 64.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.9.0.tar.gz
Algorithm Hash digest
SHA256 4082e7d74bd455ac6d4dc02f5d80a688fc0cb3bdc919a12accfbf747b1fcc974
MD5 c5fd45c7d46b5765be83ded504e72396
BLAKE2b-256 7ac2c27c5062acda02bf081a2c6634df3d87ffe44f07a7c5cac87baa51aaa175

See more details on using hashes here.

Provenance

The following attestation bundles were made for edron-0.9.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.9.0-py3-none-any.whl.

File metadata

  • Download URL: edron-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 77.0 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.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38e147fe4bacaaddd0c5a327ebe1a0b4f46231db504091651807a8c57c2367e4
MD5 5a5d3b668188a076588dd721e7ab537d
BLAKE2b-256 f8c6fa1c9713055bd680c7c6fddb682ddad2d78b58e79e2b720947d4a98ae6cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for edron-0.9.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

This release

0.9.0 This release

2 files

0.8.0

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