mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
feat(common): favorite_team_check and sports_timezone, promoted from the scoreboards (sports consolidation stage 2) (#665)
* feat(common): favorite_team_check and sports_timezone, promoted from the scoreboards (sports consolidation stage 2) Two new hardware-free modules, taken from files the scoreboard plugins carry as copies: - src/common/favorite_team_check.py: FavoriteTeamCheck(logger, leagues), the seven byte-identical <sport>_favorite_check.py copies. Same code; the only additions are two type annotations (for the mypy ratchet). - src/common/sports_timezone.py: resolve_timezone_name(), resolve_timezone(), system_timezone_name(), from the ten <sport>_timezone.py copies. They differed only in the plugin label named in the nothing-resolved warning and the write-back-bug values, which become keyword-only arguments (plugin_label, writeback_fixed_in). Same resolution order and log text. Tests are ported from the plugins' own (test_favorite_check.py, test_schedule_note_uses_game_dates.py, test_timezone_resolution.py; the timezone ones run once per plugin's values and pin the exact warning text). Both modules are on the mypy ratchet, in src/common/README.md, the CHANGELOG's Unreleased section and SPORTS_UNIFICATION's module table. Nothing in core uses them yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(common): bdf_font and json_body shipped in 3.5.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(common): annotate the favourite check's deliberate except/pass for Bandit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,24 @@ accepts both, but the store flags the old spelling as deprecated
|
||||
|
||||
## Unreleased
|
||||
|
||||
New modules a plugin may import via `src.*` (floor on the release that ships
|
||||
them). Both are promoted from files the scoreboard plugins carry as copies;
|
||||
the plugins keep their copies as a fallback until they floor on that release.
|
||||
|
||||
- `src/common/favorite_team_check.py` — `FavoriteTeamCheck(logger, leagues)`:
|
||||
checks configured favourite team codes against ESPN once per league, on a
|
||||
daemon thread, and logs why a league shows nothing (a wrong code, with the
|
||||
nearest real one, or a season that has not started). The seven copies
|
||||
(`<sport>_favorite_check.py`) were byte-identical; this is the same code,
|
||||
with type annotations added.
|
||||
- `src/common/sports_timezone.py` — `resolve_timezone_name()` /
|
||||
`resolve_timezone()` (plus `system_timezone_name()`): the timezone a
|
||||
scoreboard draws start times in. The ten copies (`<sport>_timezone.py`)
|
||||
differed only in two values, which are keyword-only arguments here:
|
||||
`plugin_label` (named in the warning logged when nothing resolves) and
|
||||
`writeback_fixed_in` (for a plugin that once wrote `"UTC"` back into the
|
||||
saved config; `None` otherwise). Same resolution order and log messages.
|
||||
|
||||
## 3.5.0
|
||||
|
||||
New modules a plugin may import via `src.*` (floor on 3.5.0):
|
||||
|
||||
Reference in New Issue
Block a user