Skip to content

Commit e2a2871

Browse files
clean uo
1 parent c3ba47f commit e2a2871

File tree

3 files changed

+12
-43
lines changed

3 files changed

+12
-43
lines changed

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ make frontend-dev # Run React dev server on 127.0.0.1:3000
6868
* Use **pytest** for Python tests. However, all the tests take in excess of 30 minutes, so don't run the entire test suite. Instead run specific files or tests using pytest options.
6969

7070
```bash
71-
pytest core/tests/test_cli.py
71+
.venv/bin/pytest core/tests/test_cli.py
7272
```
7373

7474
---

CHANGELOG.md

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
11
### Upcoming
22

3+
#### Highligts
4+
5+
- Perform calibrations in the UI!
6+
37
#### Enhancements
48

9+
- Support for Pioreactor XR
10+
- Support for Optics calibration jig
11+
- faster Stop commands in the UI, listing plugins, and exporting data
512
- new events in the dosing_automation_events table & export detailing when dosing starts and stops.
613
- new query pattern for faster Experiment Overview chart loading. However, there is a random element to what data is displayed in a time series for large datasets. Let us know if this is too distracting.
7-
- support for the new Optics Standard Reference.
814
- OD calibrations now support multiple photodiode angles; `pio calibrations run --device od` can emit per-angle calibrations for 45/90/135.
915
- Added an update helper to migrate legacy OD calibrations into per-angle devices.
10-
- added calibration protocol execution UI with device/unit selection, MQTT-backed state, and a direct link to device-specific calibrations.
11-
- added API endpoints to run calibration protocols via the web UI (`/api/workers/<unit>/calibrations/protocols/run` and `/unit_api/calibrations/protocols/run`).
12-
- updated Self-test dialog action buttons to match the new protocol run button styling.
1316
- reorganized calibration protocol modules into `core/pioreactor/calibrations/protocols/` and extracted a `registry.py` for protocol registration.
1417

15-
#### Bug fixes
16-
17-
- enforce protocol name for calibration protocol runs to prevent non-interactive CLI prompts.
18-
19-
### To test still
20-
- new self tests `pio run self_test -k optical_reference_standard`
21-
- new self-test pattern on Inventory page
22-
2318
#### Breaking changes
2419
- Moved Self-test to Inventory page. Pioreactors no longer need to be assigned to an experiment to run self-test.
2520
- Removed `/api/workers/<pioreactor_unit>/configuration`; use `/api/units/<pioreactor_unit>/configuration`.
2621
- self-test logs are now part of "$experiment"
2722
- calibration flow modules were merged into protocol modules; old import paths like `pioreactor.calibrations.pump_calibration` and `pioreactor.calibrations.od_calibration_*` are removed.
23+
- removed experimental pump-detection failure from chemostat and turbidostat
24+
- OD calibration devices are now per-angle (`od45`, `od90`, `od135`) instead of just `od`. Physically, this changes the calibration directory in `~/.pioreactor/storage/calibrations/od` to `~/.pioreactor/storage/calibrations/{od45,od90,od135}`. Existing `od` calibration files and active calibrations are migrated during the update.
2825

2926
#### Bug Fixes
3027

31-
- fix logging prematurely closing for self-tests
32-
- OD calibration devices are now per-angle (`od45`, `od90`, `od135`) instead of just `od`. Physically, this changes the calibration directory in `~/.pioreactor/storage/calibrations/od` to `~/.pioreactor/storage/calibrations/{od45,od90,od135}`. Existing `od` calibration files and active calibrations are migrated during the update.
28+
- Fix logging prematurely closing for self-tests
29+
- Fix floating point error at the boundary of OD calibrations
3330

3431
### 25.12.10
3532

core/pioreactor/web/api.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1511,34 +1511,6 @@ def create_calibration(pioreactor_unit: str, device: str) -> DelayedResponseRetu
15111511
return create_task_response(task)
15121512

15131513

1514-
@api_bp.route("/workers/<pioreactor_unit>/calibrations/protocols/run", methods=["POST"])
1515-
def run_calibration_protocol(pioreactor_unit: str) -> DelayedResponseReturnValue:
1516-
body = request.get_json()
1517-
if body is None:
1518-
abort_with(400, description="Missing JSON payload.")
1519-
1520-
device = body.get("device")
1521-
if not device:
1522-
abort_with(400, description="Missing 'device'.")
1523-
1524-
protocol_name = body.get("protocol_name")
1525-
set_active = body.get("set_active", True)
1526-
if not isinstance(set_active, bool):
1527-
set_active = str(set_active).lower() == "true"
1528-
1529-
payload = {
1530-
"device": device,
1531-
"protocol_name": protocol_name,
1532-
"set_active": set_active,
1533-
}
1534-
1535-
if pioreactor_unit == UNIVERSAL_IDENTIFIER:
1536-
task = broadcast_post_across_workers("/unit_api/calibrations/protocols/run", payload)
1537-
else:
1538-
task = tasks.multicast_post("/unit_api/calibrations/protocols/run", [pioreactor_unit], payload)
1539-
return create_task_response(task)
1540-
1541-
15421514
@api_bp.route("/workers/<pioreactor_unit>/calibrations/sessions", methods=["POST"])
15431515
def start_calibration_session(pioreactor_unit: str) -> ResponseReturnValue:
15441516
if pioreactor_unit == UNIVERSAL_IDENTIFIER:

0 commit comments

Comments
 (0)