Files
LEDMatrix/mypy.ini
T
ChuckandClaude Opus 5.5 05deb1ee7d feat(install): support Raspberry Pi OS Bookworm (Python 3.11) alongside Trixie (3.13) (#689)
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>
2026-10-03 13:35:13 -04:00

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