mirror of
https://github.com/bckelley/tconnectsync.git
synced 2026-08-24 11:44:12 -05:00
Fix #156: handle LidMalfunctionActivated in ProcessAlarm; add typed guardrail
ProcessAlarm.skip_event() read event.alarmId on every EventClass.ALARM event, but LidMalfunctionActivated (a sibling of LidAlarmActivated in that class) has no alarmId, so a malfunction alarm crashed the sync with AttributeError. - Narrow with isinstance before reading alarmId; malfunction events now upload as "Malfunction" as intended, and sync continues. - Type the alarm handlers against an explicit AlarmEvent union and add an assert_never exhaustiveness guard, so a type checker rejects unguarded subtype attribute access and flags any newly added ALARM event type. - Fix a latent None-leak: alarm_to_nsentry now always returns a dict. - Add mypy as a gradual-typing beachhead (setup.cfg [mypy], CI step, Pipfile typecheck script), scoped to process_alarm.py. This configuration fails on exactly the #156 class of bug. - Add regression tests: malfunction processing, mixed alarm batches, the event shape, and an AlarmEvent/EventClass.ALARM sync guard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LpMTd5LzkqFLZTUKd3H8em
This commit is contained in:
@@ -27,7 +27,7 @@ jobs:
|
||||
run: |
|
||||
python -m venv .venv
|
||||
.venv/bin/python -m pip install --upgrade pip
|
||||
.venv/bin/python -m pip install -e . flake8 pytest coverage
|
||||
.venv/bin/python -m pip install -e . flake8 pytest coverage mypy
|
||||
# - name: Run pipenv check
|
||||
# run: |
|
||||
# # DDoS attacks in wheel and setuptools packages, not relevant
|
||||
@@ -53,6 +53,9 @@ jobs:
|
||||
.venv/bin/flake8 . --exclude=.venv --count --select=E9,F63,F7,F82 --ignore=F824 --show-source --statistics
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
.venv/bin/flake8 . --exclude=.venv --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
||||
- name: Type-check annotated modules with mypy
|
||||
run: |
|
||||
.venv/bin/mypy
|
||||
- name: Run tconnectsync --help
|
||||
run: |
|
||||
.venv/bin/tconnectsync --help
|
||||
|
||||
Reference in New Issue
Block a user