Skip to main content

Edron

Edron is a class-oriented Python authoring facade over Hedron. It keeps Hedron as the renderer, router, interaction, state, styling, and security authority.

import edron as ed

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


@app.page("/", title="Hello")
class Home(ed.Page):
    def render(self) -> None:
        self.heading("Hello, Edron")
        self.text("A small Python vocabulary over native Hedron.")

Edron 0.5 is an in-tree Beta implementation line. Native Hedron objects remain available through app.hedron and Page.include(). Use edron check for non-executing editor feedback, edron explain for source-mapped registration facts, and edron new for teaching scaffolds.

Phase 0.5 adds explicit resource lifetimes, native-backed cache policy, durable job wiring, and deployment diagnostics without creating a second registry or worker runtime:

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)

Resources are lazy and closed by the native app lifespan. app.operations() reports backend durability and resource metadata without resolving factories or exposing secrets. JobFlow keeps polling and ordinary HTTP as the correctness baseline; optional live observations are native SSE projections with the same authorization and no-JavaScript fallback.

Phase 0.4 adds explicit visualization and media composition while keeping native Hedron as the rendering and security authority:

from pydantic import BaseModel
from hedron_charts import Chart, beginner_to_spec

chart = Chart(
    spec=beginner_to_spec(
        kind="line",
        data=rows,
        x="month",
        y="revenue",
        title="Revenue",
        description="Revenue by month",
    )
)


@app.page("/sales", title="Sales")
class Sales(ed.Page):
    def render(self) -> None:
        self.chart(chart, alternative="The table below contains the exact values.")
        self.image("/assets/sales.png", alt="Revenue trend")

Typed chart/map links are registered with app.chart_interaction(...) or app.map_interaction(...); they lower to native ChartInteraction/MapInteraction bundles and never execute client callbacks. Selection payloads remain bounded, typed, and subject to the native authorization and CSRF policies.

Data workspaces are explicit and application-owned:

columns = (ed.Column("id", read_only=True), ed.Column("name", writable=True))
source = ed.DataSource.in_memory(
    [{"id": "1", "name": "Ada"}],
    columns=columns,
    writable_fields=("name",),
)
workspace = ed.DataWorkspace("people", source=source, columns=columns)

Add an EditPolicy with explicit authorization to make a workspace editable. Edron never owns database sessions, transactions, authorization state, persistence, or audit storage.

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.5.0.tar.gz (40.5 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.5.0-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for edron-0.5.0.tar.gz
Algorithm Hash digest
SHA256 966e5c2ee6bbcdca15d4b72eebb4adf181299c64fd7f0610d57d5ece1b211a35
MD5 922d73b645155114991abac2b0e6b250
BLAKE2b-256 e25d7705ca7d4a94b9e37171c34ec6dba0351c9ddf53146e595b8e47b0b07694

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: edron-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 47.6 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad4f804b27751360a8620b1229f9aaed645c516f4dda27f33cb68065ef03f35d
MD5 906c32f30ce4104e541cc8bafdc02579
BLAKE2b-256 e1f58955e454b87d9e15f67a7d95b540fd51d200d28e113e0a42537ad4a7b93d

See more details on using hashes here.

Provenance

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

0.8.0

2 files

0.6.0

2 files

This release

0.5.0 This release

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