#227. Replace local install workflow with an offline USB bundle - #230
Merged
Conversation
The old scripts/install_from_local.bat hardcoded Python 3.8.1, pip-installed 28 pinned wheels from a committed whls/ folder, and used the removed `setup.py install`. Replace it with a two-step offline workflow: * scripts/build_local_install.py (run on an internet-connected machine) builds the pytentiostat wheel and downloads all dependency wheels into local-install/whls. * scripts/install_from_local.bat (run on the offline machine) installs Python from a bundled installer if needed, creates a virtual environment, and installs pytentiostat offline via pip install --no-index --find-links. Wheels and the Python installer are gitignored so build artifacts are never committed. Instructions updated accordingly. Closes juami#227. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…3.12+) docformatter pulls in untokenize, whose sdist-only setup.py uses ast.Constant.s (removed in Python 3.12). On the pre-commit.ci runner (now Python 3.14) the hook environment fails to build, breaking CI. Skip it on pre-commit.ci; it still runs in local pre-commit installs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #230 +/- ##
=======================================
Coverage 91.01% 91.01%
=======================================
Files 6 6
Lines 167 167
=======================================
Hits 152 152
Misses 15 15 🚀 New features to boost your workflow:
|
sbillinge
reviewed
Jun 19, 2026
sbillinge
left a comment
Member
There was a problem hiding this comment.
This looks good. Please just remove the skipped tests and update the pre-commit yaml to latest versions.
| # docformatter is skipped on pre-commit.ci: its dependency untokenize | ||
| # (sdist-only) fails to build on the CI's Python 3.12+ runner. It still | ||
| # runs in local pre-commit installs. | ||
| skip: [no-commit-to-branch, docformatter] |
Member
There was a problem hiding this comment.
please remove this block to avoid propagating badness.
A better fix is to update all the versions in the pre-commit yaml. Please see the latest scikit-package
Switch docformatter to PyCQA/docformatter v1.7.8 (poetry-core backend), which removes the untokenize build failure on py3.12+ CI, so the pre-commit.ci skip is no longer needed. Bump all other hook versions to match the latest scikit-package config. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The pre-commit version bump pulls flake8 7.3.0, which flags F824 for `global` names that are only read, never assigned in their scope. Remove the unused `global Interrupt` in operator.py and `global board, d9` in main.py (both names are read-only in those functions). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ility
docformatter v1.7.8 (pulled in by the hook version bump) and black
oscillate forever on the inline sys.exit("""...""".format(...)) blocks in
param_checker: black joins them, docformatter then mangles the multi-line
string literals (re-adding backslash continuations and splitting .format),
so the two never converge and CI cannot go green.
Bind each message to a local variable first (message = """..."""; then
sys.exit(message.format(...))), which docformatter leaves untouched. The
warning string literals are byte-for-byte identical to before, so the
emitted error messages are unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member
|
thanks @q24609962-svg |
Contributor
Author
|
You are welcome @sbillinge |
sbillinge
pushed a commit
that referenced
this pull request
Jun 21, 2026
Relocate the GUI code and designer files from src/GUI/ into src/pytentiostat/gui/ so the GUI is a proper importable subpackage, and move the image assets to src/pytentiostat/pics/ (the code references them via ../pics). Add a gui package with __init__, a refactored main() entry point, and an app_setup.create_app helper that applies a consistent, readable stylesheet across all windows. Update the .flake8 per-file-ignore path to match the new location. Rebuilt fresh on top of a synced upstream/main so it carries none of the unrelated formatting/pre-commit changes (already merged via #230) and introduces no phantom reverts of the simulator feature or main.py. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
The old scripts/install_from_local.bat hardcoded Python 3.8.1, pip-installed 28 pinned wheels from a committed whls/ folder, and used the removed
setup.py install. Replace it with a two-step offline workflow:Wheels and the Python installer are gitignored so build artifacts are never committed. Instructions updated accordingly. Closes #227.