Conversation
lord63
commented
Mar 21, 2026
- migrate ci to github action;
- migrate to use uv;
- drop 2.x, support 3.10+
There was a problem hiding this comment.
Pull request overview
Modernizes the project’s packaging, dependency management, and CI by migrating from legacy setup.py/tox/Travis to pyproject.toml + uv and GitHub Actions, while raising the supported Python baseline to 3.10+.
Changes:
- Add
pyproject.toml(hatchling build) anduv.lockfor uv-managed dependency locking. - Replace Travis CI with a GitHub Actions workflow that runs pytest on Python 3.10–3.13.
- Remove legacy packaging/testing configs (
setup.py,setup.cfg,tox.ini,dev-requirements.txt,.travis.yml).
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
uv.lock |
Introduces uv lockfile to make dependency installs reproducible. |
pyproject.toml |
Defines project metadata, Python requirement (3.10+), hatchling build config, and dev dependency group. |
pyspin/spin.py |
Removes Python 2 compatibility shims and simplifies text handling for Python 3-only support. |
.github/workflows/ci.yml |
New CI workflow using uv to install deps and run pytest across supported Python versions. |
tox.ini |
Removed legacy tox configuration. |
setup.py |
Removed legacy setuptools packaging script. |
setup.cfg |
Removed wheel universal config (no longer relevant with Python 3.10+). |
dev-requirements.txt |
Removed legacy dev requirements file. |
.travis.yml |
Removed Travis CI configuration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| - name: Install dependencies | ||
| run: uv sync --dev | ||
|
|
There was a problem hiding this comment.
CI no longer runs the style/PEP8 checks that were previously executed via py.test --pep8 (pytest-pep8). If style checking is still desired, add an explicit lint step/job (e.g., ruff/pycodestyle/flake8) so formatting regressions are caught in CI.
| - name: Lint | |
| run: uv run ruff check . |
.github/workflows/ci.yml
Outdated
| python-version: ${{ matrix.python-version }} | ||
|
|
||
| - name: Install dependencies | ||
| run: uv sync --dev |
There was a problem hiding this comment.
uv sync --dev in CI should run in a lockfile-enforcing mode so the workflow fails if uv.lock is out of date, rather than implicitly resolving/updating dependencies during the run. Consider using uv sync --frozen (or the equivalent locked/frozen option) to guarantee reproducible CI installs.
| run: uv sync --dev | |
| run: uv sync --dev --frozen |
pyproject.toml
Outdated
| ] | ||
|
|
||
| [project.urls] | ||
| Homepage = "http://github.com/lord63/py-spin" |
There was a problem hiding this comment.
Project URL uses http:// for GitHub. Switching to https:// avoids unnecessary redirects and prevents mixed-content issues when rendered in some contexts.
| Homepage = "http://github.com/lord63/py-spin" | |
| Homepage = "https://github.com/lord63/py-spin" |
pyspin/spin.py
Outdated
|
|
||
| def _spin_cursor(self): | ||
| print(text_type("\r{0} {1}").format(self.next(), self.words), end="") | ||
| print(str("\r{0} {1}").format(self.next(), self.words), end="") |
There was a problem hiding this comment.
Redundant str(...) wrapping around an already-string format literal adds noise without changing behavior. This can be simplified by formatting the string directly.
| print(str("\r{0} {1}").format(self.next(), self.words), end="") | |
| print("\r{0} {1}".format(self.next(), self.words), end="") |
|
@copilot apply changes based on the comments in this thread, and directly push commit to this pr . |
…str() Co-authored-by: lord63 <5268051+lord63@users.noreply.github.com> Agent-Logs-Url: https://github.com/lord63/py-spin/sessions/d2ede27f-2a5b-4c50-8efc-1cdfb90920d3