wake-alarm/wake_alarm/tests
Krzysztof kuhy Rudnicki c1dbdcda22 Grade against 3.14 too, not just run on it
`requires-python` and the CI pin already said 3.14, but ruff, mypy and pylint
were still grading against 3.10/3.11 -- three tools judging an interpreter
nothing runs any more, and ruff withholding the pyupgrade fixes that only
become safe at the newer target. `pin_ci_python.py` rewrites these three knobs.

What the stale target was hiding: `datetime.timezone.utc` where `datetime.UTC`
is now correct (UP017), `socket.timeout` where `TimeoutError` is (UP041), and
ruff's stable formatter applying PEP 758 -- `except (A, B):` becomes
`except A, B:`. That makes the source 3.14-only at the syntax level, which is
what `requires-python = ">=3.14"` already promised; kuhy chose it deliberately
over holding ruff a release back (2026-08-29).

ruff, ruff-format, mypy --strict and pylint all clean at the new target.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfnJmxxsZ534AKk16rC2Gr
2026-08-29 11:39:33 +02:00
..
__init__.py Add tests and fix pre-commit issues across all projects 2026-04-12 20:45:24 +02:00
conftest.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_alarm_audio.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_challenges.py Fire alarm daily, harden dismissal challenge; ignore wake_state.json 2026-07-10 23:14:40 +02:00
test_alarm_dismiss.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_display.py Extract wake_alarm from testsAndMisc as a standalone repo 2026-06-22 12:31:40 +02:00
test_alarm_fanout.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_flash_challenge.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_main.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_part2.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_alarm_part3.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_alarm_part4.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_alarm_payload.py Split _sync.py along the transport/resolution seam item 8 needs 2026-08-27 23:44:24 +02:00
test_alarm_playback.py Play alarm audio on every sink, not one hardcoded output 2026-07-11 18:12:39 +02:00
test_alarm_session_refire.py Grade against 3.14 too, not just run on it 2026-08-29 11:39:33 +02:00
test_alarm_session.py Phase 6: vmbox becomes the gate for the system scripts (item 10) 2026-08-27 20:49:16 +02:00
test_alarm_sinks.py Split _sinks.py and home_screen.dart under the 250-line gate 2026-08-27 23:30:02 +02:00
test_alarm_timers_flash.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_alarm.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_beep_loop.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_brightness.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_correlation.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_curtains.py Phase 7: curtains open on the alarm, no-op until hardware exists (item 5) 2026-08-27 21:00:11 +02:00
test_escalation.py Phase 2b: add the 5-minute audio failsafe, and retune escalation to fit it 2026-08-26 23:17:41 +02:00
test_escape_flow.py Split _escape_flow.py: the dialog moves out, the policy stays 2026-08-27 23:34:38 +02:00
test_escape_integration.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_gating.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_inhibit_cleanup.py Phase 6: vmbox becomes the gate for the system scripts (item 10) 2026-08-27 20:49:16 +02:00
test_inhibit.py Phase 6: vmbox becomes the gate for the system scripts (item 10) 2026-08-27 20:49:16 +02:00
test_log_dedupe.py Phase 1: structured JSONL logging with cross-process dedupe 2026-08-26 23:00:08 +02:00
test_log_sink.py Phase 1: structured JSONL logging with cross-process dedupe 2026-08-26 23:00:08 +02:00
test_logging_setup.py Phase 1: structured JSONL logging with cross-process dedupe 2026-08-26 23:00:08 +02:00
test_pcspkr.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_reactivate.py Phase 4: wire sink reactivation into the alarm (finishes item 6) 2026-08-27 20:14:00 +02:00
test_sinks_activate.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_sinks_restore.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_sinks_warn.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_smart_plug_ops.py Split test_smart_plug.py at the config/operations seam 2026-08-27 23:22:12 +02:00
test_smart_plug.py Split test_smart_plug.py at the config/operations seam 2026-08-27 23:22:12 +02:00
test_state_queries.py Apply ruff-format to the split test file 2026-08-27 23:45:42 +02:00
test_state.py Split test_state.py at the write/read seam 2026-08-27 23:23:07 +02:00
test_sync_backends.py Split _sync.py along the transport/resolution seam item 8 needs 2026-08-27 23:44:24 +02:00
test_sync_cli.py Split _sync.py along the transport/resolution seam item 8 needs 2026-08-27 23:44:24 +02:00
test_sync_token.py Split _sync.py along the transport/resolution seam item 8 needs 2026-08-27 23:44:24 +02:00
test_sync.py Split _sync.py along the transport/resolution seam item 8 needs 2026-08-27 23:44:24 +02:00
test_tone.py Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules 2026-08-26 23:46:10 +02:00
test_trigger_clamp.py Make the alarm fully automatic and un-weakenable (08:00, earlier-only) 2026-08-27 23:03:00 +02:00
test_trigger_main.py Phase 5: the power button no longer ends the alarm (item 2) 2026-08-27 20:26:37 +02:00
test_trigger.py Grade against 3.14 too, not just run on it 2026-08-29 11:39:33 +02:00