EPICS Bridge
epics-bridge is a Python framework for synchronous, high-availability EPICS
daemons over PVA. It provides the control-loop contract, watchdog/heartbeat
behavior, logging PVs, and failure handling used by daemon projects built on
top of it.
Start here
Build a new daemon
Use the cookiecutter scaffold:
- Canonical repo:
https://gitlab.esss.lu.se/icshwi/pydaemon/cookiecutter-epics-bridge - Generate a project:
cookiecutter git@gitlab.esss.lu.se:icshwi/pydaemon/cookiecutter-epics-bridge.git
cd <project_name>
conda env create -f environment.yml
conda activate <project_name>
pre-commit install
pytest -m "not slow" -v
The scaffold is the primary starting point for new daemon development. It creates a standalone Python package, IOC startup files, a test harness, and project-local docs.
Understand the framework
Use these docs when you need framework behavior, design constraints, or the reference example:
- User guide:
docs/README.md - Contributor workflow:
CONTRIBUTING.md - Reference example:
examples/README.md
What this repo contains
epics_bridge/: framework packagetests/: framework and example verificationexamples/echo_daemon/: end-to-end reference daemon + IOCdocs/README.md: canonical framework guide
Install and verify
For local framework work:
pip install -e .
pip install -r requirements-test.txt
pytest -m "not slow" -v
For IOC-backed integration work, use the provided conda environment:
conda env create -f environment.yml
conda activate epics-bridge
pip install -e .
pytest -m slow -v
For the full project verifier used in this repo, prefer running the entire suite through the environment directly:
mamba run -n epics-bridge pytest -q
environment.yml uses ess-conda-local and conda-forge. If you are outside
ESS, you may need to adjust channel/package availability for the EPICS toolchain.
Architecture summary
epics-bridge uses two threads:
- Main thread: synchronous control loop (
trigger -> run_task -> reset -> telemetry) - Heartbeat thread: independent watchdog with its own PVA context
If the main loop stalls, the heartbeat stops pulsing. If I/O failures persist past the configured threshold, the daemon exits so an external supervisor can restart it.
For the full EPICS contract, TaskStatus semantics, PV model, and extension
points, see docs/README.md.
Metadata
Release files for epics-bridge 5.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| epics_bridge-5.0.0.tar.gz | 24.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| epics_bridge-5.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.4 kB
Release files / epics_bridge-5.0.0.tar.gz
| Download URL | epics_bridge-5.0.0.tar.gz |
|---|---|
| Size | 24.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f055876524041bb644156cf47fd18eb897ba648f331398c806584789ba1618e
|
|
BLAKE2b-256 checksum How to use checksums |
6c35132e471e50110be820d48467cacd50d4a25d673ec715742c55e4da6d7df9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / epics_bridge-5.0.0-py3-none-any.whl
| Download URL | epics_bridge-5.0.0-py3-none-any.whl |
|---|---|
| Size | 29.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
506cdff5f1fe553f531a08d89e362115e75a9e5a9174a1ad778d0fbf2cf081f1
|
|
BLAKE2b-256 checksum How to use checksums |
f7ba23a56a3f3cdeea628ad571c651dcc23825ad45200c28ba16ecc3439740b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|