Conversation
BanjoR
force-pushed
the
codex/ex-installer-preflight
branch
from
August 16, 2026 12:19
e2604a1 to
6d83dc3
Compare
BanjoR
marked this pull request as ready for review
August 17, 2026 09:29
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope This PR is a bounded preflight improvement for the Python-run EX-Installer path: - Check for Python 3.10 or newer before importing GUI dependencies. - Check that the serial module supplied by pyserial is importable before startup, and print the exact recovery command when it is missing. - Document venv setup and the supported Python minimum. - Add isolated regression tests for supported/unsupported Python versions, missing pyserial, combined failures, and formatted output. Explicitly out of scope: - A broad dependency-pin rewrite or an unverified claim that every Python 3.13/3.14 package combination installs successfully. - Rebuilding or replacing packaged binaries. - Changes to upload protocols, product configuration, firmware, hardware behavior, or unrelated application modules. - Physical hardware validation or treating the fork as approval to merge. ## Issue and PR context - Issue #208 reports a missing serial module during Linux ESP32 upload; the source requirements already list pyserial, so this makes the missing runtime dependency actionable before the GUI loads. - Issue #216 reports installation problems with Python 3.13.5; this PR enforces and documents the existing Python 3.10 minimum without claiming unverified dependency compatibility. - This PR supersedes the incomplete dependency/README-only approach in PR #214. PR #214 remains open and is not being closed or modified by this PR. ## Verified local results - PASS - bundled Python unittest discover -s tests -v: 4 tests passed. - PASS - no-write AST/compile audit: all 28 tracked Python files compiled successfully. - PASS - git diff --check. - PASS - introduced-line length check against the repository's 120-character configuration. - PASS - bundled Python 3.12.13 pip check: no broken requirements found. - PASS - python -m ex_installer --help launcher smoke test exited 0. - PASS - final diff contains exactly README.md, ex_installer/main.py, ex_installer/preflight.py, and tests/test_preflight.py; worktree is clean. - NOTICE - the no-write compile audit reports two pre-existing invalid-escape warnings in ex_installer/ex_commandstation.py and ex_installer/file_manager.py; neither file is changed here. ## Validation limits - PASS - bundled Python 3.12.13
compileallwithPYTHONPYCACHEPREFIXredirected to a writable temporary cache compiledex_installerandtestssuccessfully; the checkout remained clean. - N/A - flake8 and ruff are not installed in the bundled runtime. - N/A - repository-root unittest discover found no tests; the repository's available suite is under tests and passes with the explicit command above. - N/A - no current fork Actions run exists for this exact head, so there is no hosted application check to report. Required checks could not be independently established because the branch-protection status endpoint returned 404. - NOT RUN - no hardware is available. Maintainer bench criteria for hardware follow-up: in a clean supported-Python virtual environment, install requirements.txt, connect a supported DCC-EX/ESP32 device, launch EX-Installer, reach Compile and Load, and verify that startup/upload proceeds without a missing serial-module error; record OS, Python version, device/USB serial identity, and the resulting log. The PR is ready for maintainer review and is not ready for merge.Current exact-head CI status
N/A — No BanjoR fork Actions run exists for exact head
6d83dc3151de282fccece101c242277f57db661e; no hosted code-test result is claimed. Local validation above is the available evidence.