mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-10 09:06:36 +00:00
* feat(common): sports_rotation -- the reconciled other-games rotation (sports family 7) New hardware-free module src/common/sports_rotation.py, copied from ledmatrix-plugins claude/family7-reconcile once the nine scoreboards made _by_importance, _other_games_window, _advance_other_games_if_due (two bodies each), _rotate_other_games_on_display (two) and _attach_odds_to_rotated_games (three; ufc had none) one body each. All of them live on the plugins' SportsCore, so one mixin, SportsRotationMixin, carries exactly those five plus the default _rankings_loaded, and no manager gains a method it lacks today. - The window advances under _games_lock: update() and display() both advance it, and interleaved, each added a width and skipped a window. - The display path's due-check reads the pool _compose_selection will cut, unfiltered fallback included. - Rotated-in games get odds when show_odds is on (decided 2026-10-09: ufc too), skipped without an odds manager. - _rankings_loaded() is the seam _by_importance asks: the abbreviation table by default; football overrides it to count its by-id rankings. - test/test_sports_rotation.py: the plugins' pinned cases (importance order per rankings table and the seam, the window over time, the display-path rotation incl. the card on screen, redraws and recompose counts, update() and display() in sequence and interleaved on two threads -- with and without the lock -- and rotated-in odds), plus the host contract. - test/test_sports_rotation_parity.py: with LEDMATRIX_PLUGINS, compares each body with every plugin copy (drift-report normalisation plus decorators), checks no other plugin class carries a copy, and that only football overrides _rankings_loaded. Passes against claude/family7-reconcile; fails against the pre-reconcile tree, as it should. - mypy ratchet, src/common/README.md, CHANGELOG (Unreleased, New modules). - sports_shared docstring: _by_importance and _other_games_window (and the long-promoted _is_favorite_game) leave the "stay per-plugin" list. - docs/SPORTS_UNIFICATION.md: family 7 status, decisions, the _rankings_loaded seam; families 5 and 6 marked done and adopted (3.8.1 / ledmatrix-plugins #631, 3.8.2 / #637) instead of "adoption waits". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(sports): stage 4 is adopted (core 3.8.0, ledmatrix-plugins #594) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: cite ledmatrix-plugins #641 for the family 7 reconcile Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
109 lines
3.4 KiB
Plaintext
109 lines
3.4 KiB
Plaintext
# The mypy ratchet: modules that type-check clean, one path per line, sorted.
|
|
#
|
|
# CI ("Type check (mypy ratchet)") runs `python scripts/check_types.py`, which
|
|
# runs mypy on exactly these files (imports followed silently, so errors in an
|
|
# unlisted module they import don't count) and fails on any error, so a listed
|
|
# module stays clean. Most of src/ isn't clean yet. When you make a module
|
|
# clean, add it here. Don't take a module off to get CI green -- fix the error
|
|
# (annotation-only where you can: hints, typing.cast, TYPE_CHECKING imports;
|
|
# widen an annotation rather than delete a defensive runtime check).
|
|
|
|
src/__init__.py
|
|
src/adaptive_images.py
|
|
src/auto_update_setup.py
|
|
src/backup_manager.py
|
|
src/base_odds_manager.py
|
|
src/cache/__init__.py
|
|
src/cache/cache_strategy.py
|
|
src/cache/memory_cache.py
|
|
src/common/__init__.py
|
|
src/common/api_helper.py
|
|
src/common/bdf_font.py
|
|
src/common/espn_dates.py
|
|
src/common/favorite_team_check.py
|
|
src/common/fetch_service.py
|
|
src/common/font_layout.py
|
|
src/common/frame_timing.py
|
|
src/common/json_body.py
|
|
src/common/logo_helper.py
|
|
src/common/path_safety.py
|
|
src/common/permission_utils.py
|
|
src/common/render_gate.py
|
|
src/common/scroll_config.py
|
|
src/common/snapshot_policy.py
|
|
src/common/sports_card.py
|
|
src/common/sports_card_wrappers.py
|
|
src/common/sports_celebration.py
|
|
src/common/sports_display_rules.py
|
|
src/common/sports_favorites.py
|
|
src/common/sports_fetch.py
|
|
src/common/sports_font_path.py
|
|
src/common/sports_game_over.py
|
|
src/common/sports_live_scroll.py
|
|
src/common/sports_plugin_host.py
|
|
src/common/sports_rotation.py
|
|
src/common/sports_scroll.py
|
|
src/common/sports_timezone.py
|
|
src/common/sports_vegas.py
|
|
src/config_service.py
|
|
src/core_config_keys.py
|
|
src/deprecation.py
|
|
src/device_location.py
|
|
src/display_arbiter.py
|
|
src/display_geometry.py
|
|
src/dynamic_team_resolver.py
|
|
src/exceptions.py
|
|
src/font_usage.py
|
|
src/ipc/__init__.py
|
|
src/ipc/client.py
|
|
src/ipc/contract.py
|
|
src/ipc/server.py
|
|
src/logging_config.py
|
|
src/logo_downloader.py
|
|
src/malloc_tuning.py
|
|
src/matrix_support.py
|
|
src/pi5_matrix_support.py
|
|
src/plugin_system/__init__.py
|
|
src/plugin_system/compatibility.py
|
|
src/plugin_system/field_model.py
|
|
src/plugin_system/operation_history.py
|
|
src/plugin_system/operation_queue.py
|
|
src/plugin_system/operation_types.py
|
|
src/plugin_system/plugin_catalog.py
|
|
src/plugin_system/plugin_dirs.py
|
|
src/plugin_system/plugin_executor.py
|
|
src/plugin_system/plugin_health.py
|
|
src/plugin_system/plugin_loader.py
|
|
src/plugin_system/plugin_runtime.py
|
|
src/plugin_system/plugin_state.py
|
|
src/plugin_system/repo_urls.py
|
|
src/plugin_system/resource_monitor.py
|
|
src/plugin_system/saved_repositories.py
|
|
src/plugin_system/schema_manager.py
|
|
src/plugin_system/state_reconciliation.py
|
|
src/plugin_system/testing/__init__.py
|
|
src/plugin_system/testing/bounds_display_manager.py
|
|
src/plugin_system/testing/loading.py
|
|
src/plugin_system/testing/mocks.py
|
|
src/plugin_system/testing/plugin_test_base.py
|
|
src/plugin_system/testing/sizes.py
|
|
src/plugin_system/testing/vegas.py
|
|
src/plugin_system/vegas_elements.py
|
|
src/redaction.py
|
|
src/scan_order.py
|
|
src/screen_runner.py
|
|
src/startup_validator.py
|
|
src/vegas_mode/__init__.py
|
|
src/vegas_mode/config.py
|
|
src/vegas_mode/coordinator.py
|
|
src/vegas_mode/elements.py
|
|
src/vegas_mode/geometry.py
|
|
src/vegas_mode/live_worker.py
|
|
src/vegas_mode/stream_manager.py
|
|
src/web_interface/api_helpers.py
|
|
src/web_interface/config_arrays.py
|
|
src/web_interface/error_handler.py
|
|
src/web_interface/errors.py
|
|
src/web_interface/secret_helpers.py
|
|
src/web_interface/validators.py
|