scitex-events
Zero-dep async event bus for the SciTeX ecosystem.
Full Documentation · uv pip install scitex-events[all]
Quick Start
import scitex_events as ev
ev.emit("test_complete", project="figrecipe", status="success",
payload={"exit_code": 0, "module": "stats"})
ev.latest("test_complete") # most recent event of this type
list(ev.history(limit=20)) # recent history
Demo
flowchart LR
Producer[ev.emit] --> JSONL[(JSONL store)]
JSONL --> Latest[ev.latest]
JSONL --> History[ev.history]
JSONL -. optional .-> Webhook[Cloud webhook]
Figure 1. Demo path. One emit call lands in the JSONL store and is immediately readable via latest/history.
Installation
uv pip install "scitex-events[all]"
Per-module extras
| Extra | Pulls in |
|---|---|
all |
dev + docs (recommended) |
dev |
pytest, pytest-cov, pytest-timeout, ruff |
docs |
Sphinx + RTD theme + myst-parser (docs build only) |
uv pip install -e ".[dev]" # editable install for contributors
flowchart LR
Emit[ev.emit] --> Schema[_schema.Event]
Schema --> Store[(JSONL store)]
Store --> Latest[ev.latest]
Store --> History[ev.history]
Store -. optional .-> Webhook[webhook delivery]
Registry[_types registry] --> Info[ev.list_types / get_type_info]
Figure 2. Event flow. Emission validates against the schema, appends to the local JSONL store, and fans out to readers plus an optional webhook.
1 Interfaces
Python API
import scitex_events as ev
# Emit an event (any kwargs become payload fields).
ev.emit("test_complete", project="figrecipe", status="success",
payload={"exit_code": 0, "module": "stats"})
# Latest event of a given type.
ev.latest("test_complete")
# Recent history (newest first).
list(ev.history(limit=20))
# Schemas / introspection.
ev.list_types()
ev.get_type_info("test_complete")
Events are stored locally as JSON-Lines files under ~/.scitex/events/runtime/
(resolved via local_state.runtime_path("events")) and can optionally be forwarded
to a cloud webhook.
Status
Standalone fork of scitex.events. Pure stdlib — zero runtime deps except
scitex-config (canonical local-state directory resolver per the SciTeX
local-state directories skill). The umbrella package's scitex.events import
path is preserved via a sys.modules-alias bridge so existing code continues
to work.
Part of SciTeX
scitex-events is part of SciTeX. Install via
the umbrella with pip install scitex[events] to use as
scitex.events (Python) or scitex events ... (CLI).
Four Freedoms for Research
- The freedom to run your research anywhere — your machine, your terms.
- The freedom to study how every step works — from raw data to final manuscript.
- The freedom to redistribute your workflows, not just your papers.
- The freedom to modify any module and share improvements with the community.
AGPL-3.0 — because we believe research infrastructure deserves the same freedoms as the software it runs on.
License
AGPL-3.0-only (see LICENSE).
Metadata
Release files for scitex-events 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scitex_events-0.1.7.tar.gz | 7.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scitex_events-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.4 MB
Release files / scitex_events-0.1.7.tar.gz
| Download URL | scitex_events-0.1.7.tar.gz |
|---|---|
| Size | 7.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1cbe1a9022fbb52df3fa50a8376213fe1dfaefc2fef3da25ffcc4a000766a5ca
|
|
BLAKE2b-256 checksum How to use checksums |
25546a9d20abffbd1366351fb2b57302e3b07f8bc661f45a5d000cdc235cd0dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / scitex_events-0.1.7-py3-none-any.whl
| Download URL | scitex_events-0.1.7-py3-none-any.whl |
|---|---|
| Size | 7.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31730604e76e123393e4160c7c0a3ee6363e47f56697ff3e0a1e88af0b94ee75
|
|
BLAKE2b-256 checksum How to use checksums |
403f6b61f945c6469bd782d37463ee873242bff80605952c7ce245b268ae469c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|