mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
The installer and scripts/check_system_compatibility.sh share one set of OS rules (scripts/install/lib_os.sh): Bookworm (Debian 12, Python 3.11) and Trixie (Debian 13, Python 3.13) are supported, python3 older than 3.11 stops the install before anything changes, and dhcpcd gets a warning with directions. setcap targets /usr/bin/python3, the apt fallback honours the requirement floors, and the desktop check no longer misreads under pipefail. CI runs the unit and plugin-safety suites on 3.11 and 3.13 (tooling jobs on 3.13); mypy targets 3.11. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
122 lines
3.0 KiB
INI
122 lines
3.0 KiB
INI
[mypy]
|
|
# Mypy configuration for LEDMatrix
|
|
|
|
# What a bare `mypy` checks. ini values can't span lines or carry trailing
|
|
# comments -- this file used to have both, so mypy refused to read it at all.
|
|
files = src
|
|
exclude = (^|/)(test|__pycache__)/
|
|
|
|
# Python version: the oldest the installer supports (Raspberry Pi OS
|
|
# Bookworm ships 3.11; Trixie ships 3.13).
|
|
python_version = 3.11
|
|
|
|
# Platform (Linux/Raspberry Pi)
|
|
platform = linux
|
|
|
|
# Follow imports
|
|
follow_imports = normal
|
|
|
|
# Ignore missing imports (for optional dependencies)
|
|
ignore_missing_imports = True
|
|
|
|
# Show error codes
|
|
show_error_codes = True
|
|
|
|
# Warn about unused ignores
|
|
warn_unused_ignores = True
|
|
|
|
# Warn about unreachable code
|
|
warn_unreachable = True
|
|
|
|
# Strict optional checking
|
|
strict_optional = True
|
|
|
|
# Disallow untyped definitions (set to True once all code is typed)
|
|
disallow_untyped_defs = False
|
|
|
|
# Disallow untyped calls (set to True once all code is typed)
|
|
disallow_untyped_calls = False
|
|
|
|
# Check untyped definitions
|
|
check_untyped_defs = True
|
|
|
|
# No implicit optional
|
|
no_implicit_optional = True
|
|
|
|
# Warn about return Any
|
|
warn_return_any = True
|
|
|
|
# Warn about unused configs
|
|
warn_unused_configs = True
|
|
|
|
# Per-module options
|
|
[mypy-src.*]
|
|
# Allow untyped for now, but check typed code
|
|
disallow_untyped_defs = False
|
|
disallow_untyped_calls = False
|
|
|
|
[mypy-src.cache_manager]
|
|
# Cache manager has comprehensive type hints
|
|
disallow_untyped_defs = True
|
|
disallow_untyped_calls = True
|
|
|
|
[mypy-src.config_manager]
|
|
# Config manager has comprehensive type hints
|
|
disallow_untyped_defs = True
|
|
disallow_untyped_calls = True
|
|
|
|
[mypy-src.plugin_system.*]
|
|
# Plugin system has type hints
|
|
disallow_untyped_defs = False
|
|
disallow_untyped_calls = False
|
|
|
|
[mypy-src.exceptions]
|
|
# Exceptions module
|
|
disallow_untyped_defs = True
|
|
|
|
# Ignore third-party libraries that may not have type stubs
|
|
[mypy-rgbmatrix.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-RGBMatrixEmulator.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-PIL.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-freetype.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-pytz.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-requests.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-Flask.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-google.*]
|
|
ignore_missing_imports = True
|
|
|
|
[mypy-spotipy.*]
|
|
ignore_missing_imports = True
|
|
|
|
|
|
# numpy's own stubs (numpy>=2.3) use Python 3.12 `type` statements, which mypy
|
|
# refuses to parse under python_version = 3.11 -- and 3.11 (Bookworm) is the
|
|
# floor this code has to run on, so it stays. Treat numpy as Any instead: skip it, and
|
|
# follow_imports_for_stubs makes the skip apply to its .pyi files too.
|
|
[mypy-numpy.*]
|
|
follow_imports = skip
|
|
follow_imports_for_stubs = True
|
|
|
|
# orjson is optional (see requirements.txt): the modules that use it fall back
|
|
# to the stdlib when `import orjson` fails. Whether mypy sees its stubs would
|
|
# otherwise depend on whether it happens to be installed -- installed, the
|
|
# `orjson = None` fallback is a type error and the stdlib branch "unreachable";
|
|
# not installed, silencing either is an unused ignore. Treat it as Any always.
|
|
[mypy-orjson.*]
|
|
follow_imports = skip
|
|
follow_imports_for_stubs = True
|