ci: Switch from poetry to uv

- Convert pyproject.toml to work with uv
- Remove poetry references/lock file
- Decouple ruff config
- Freeze current deps
- Manually bump version to match github release
This commit is contained in:
pythoninthegrass
2025-08-20 22:49:08 -05:00
parent 7942ba5242
commit 1be8219893
7 changed files with 1400 additions and 2064 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
{ {
".": "3.8.2" ".": "4.2.3"
} }
+48 -5
View File
@@ -431,17 +431,13 @@ cz-cli@4.3.0, cz-conventional-changelog@3.3.0
### Additional tooling ### Additional tooling
#### TODO <!-- TODO: swap with mise -->
* Add [devbox](https://www.jetpack.io/devbox/) 👌
#### asdf #### asdf
* Install [asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf) * Install [asdf](https://asdf-vm.com/guide/getting-started.html#_2-download-asdf)
* Add plugins * Add plugins
```bash ```bash
asdf plugin-add python asdf plugin-add python
asdf plugin-add poetry https://github.com/asdf-community/asdf-poetry.git
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
``` ```
* Usage * Usage
@@ -458,6 +454,53 @@ cz-cli@4.3.0, cz-conventional-changelog@3.3.0
asdf global python latest asdf global python latest
``` ```
#### uv
[uv](https://docs.astral.sh/uv/) is a faster drop-in replacement for `poetry` among other dependency and virtual environment managers written in rust.
Common operations after [installing](https://docs.astral.sh/uv/getting-started/installation/):
```bash
# create venv w/pinned python version
uv venv --python ">=3.11,<3.13"
# activate venv
source .venv/bin/activate
# add deps
uv add redis
uv add --optional dev ruff
# install optional (extra) deps
uv pip install -r pyproject.toml --all-extras
# pip freeze
uv pip freeze > requirements.txt
```
#### Ruff
[Ruff](https://docs.astral.sh/ruff/) is a linter and formatter compatible with various other tools like black, flake8, isort, etc. Like [uv](#uv), it's by Astral and written in rust.
Install is handled by `uv`. These are a few of my favorite things 🎵:
```bash
# run linter
ruff check .
# formatter
ruff format .
# run tests
ruff
# run tests with coverage
ruff --coverage
# run tests with coverage and open in browser
ruff --coverage --open
```
#### shellcheck #### shellcheck
`.shellcheckrc` excludes various [bash language rules](https://github.com/koalaman/shellcheck/wiki/Ignore#ignoring-one-or-more-types-of-errors-forever). Useful to control noise vs. legitimate warnings/errors when using the shellcheck extension. `.shellcheckrc` excludes various [bash language rules](https://github.com/koalaman/shellcheck/wiki/Ignore#ignoring-one-or-more-types-of-errors-forever). Useful to control noise vs. legitimate warnings/errors when using the shellcheck extension.
Generated
-1974
View File
File diff suppressed because it is too large Load Diff
+28 -76
View File
@@ -1,86 +1,38 @@
[tool.poetry] [project]
name = "non-steam-launchers" name = "non-steam-launchers"
version = "3.8.2" version = "4.2.3"
description = "" description = ""
authors = [ authors = [
"moraroy <88516395+moraroy@users.noreply.github.com>", { name = "moraroy", email = "88516395+moraroy@users.noreply.github.com" },
"pythoninthegrass <4097471+pythoninthegrass@users.noreply.github.com>" { name = "pythoninthegrass", email = "4097471+pythoninthegrass@users.noreply.github.com" },
] ]
license = "MIT" requires-python = ">=3.11,<3.13"
readme = "README.md" readme = "README.md"
license = "MIT"
[tool.poetry.dependencies] dependencies = [
python = ">=3.11,<3.13" "python-decouple~=3.8",
python-decouple = "^3.8" "python-steamgriddb>=1.0.5,<2",
python-steamgriddb = "^1.0.5" "requests>=2.31.0,<3",
requests = "^2.31.0" "vdf~=3.4",
vdf = "^3.4"
[tool.poetry.group.dev.dependencies]
coverage = "^7.3.2"
hypothesis = {extras = ["cli"], version = "^6.88.4"}
icecream = "^2.1.3"
ipython = "^9.0.2"
poetry-plugin-export = "^1.6.0"
pytest = "^8.0.2"
pytest-asyncio = "^1.0.0"
pytest-cov = "^6.0.0"
pytest-datafiles = "^3.0.0"
pytest-xdist = "^3.4.0"
rich = "^14.0.0"
ruff = "^0.12.1"
[tool.ruff]
# Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
select = ["E", "F"]
ignore = []
# Skip unused variable rules
extend-ignore = ["D203", "E203", "E251", "E266", "E401", "E402", "E501", "F401", "F403"]
# Allow autofix for all enabled rules (when `--fix`) is provided.
fixable = ["A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W", "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP", "YTT"]
unfixable = []
# Exclude a variety of commonly ignored directories.
exclude = [
".bzr",
".direnv",
"dist",
".eggs",
".git",
".git-rewrite",
".hg",
".mypy_cache",
".nox",
".pants.d",
"__pycache__",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
] ]
# Black (default: 88) [dependency-groups]
line-length = 130 dev = [
"coverage>=7.3.2,<8",
# Allow unused variables when underscore-prefixed. "hypothesis[cli]>=6.88.4,<7",
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" "icecream>=2.1.3,<3",
"ipython>=9.0.2,<10",
# Assume Python 3.11. "poetry-plugin-export>=1.6.0,<2",
target-version = "py311" "pytest>=8.0.2,<9",
"pytest-asyncio>=1.0.0,<2",
[tool.ruff.mccabe] "pytest-cov>=6.0.0,<7",
# Unlike Flake8, default to a complexity level of 10. "pytest-datafiles>=3.0.0,<4",
max-complexity = 10 "pytest-xdist>=3.4.0,<4",
"rich>=14.0.0,<15",
"ruff>=0.12.1,<0.13",
]
[build-system] [build-system]
requires = ["poetry-core"] requires = ["hatchling"]
build-backend = "poetry.core.masonry.api" build-backend = "hatchling.build"
+8 -8
View File
@@ -1,8 +1,8 @@
certifi==2025.8.3 ; python_version >= "3.11" and python_version < "3.13" certifi==2025.8.3
charset-normalizer==3.4.3 ; python_version >= "3.11" and python_version < "3.13" charset-normalizer==3.4.3
idna==3.10 ; python_version >= "3.11" and python_version < "3.13" idna==3.10
python-decouple==3.8 ; python_version >= "3.11" and python_version < "3.13" python-decouple==3.8
python-steamgriddb==1.0.5 ; python_version >= "3.11" and python_version < "3.13" python-steamgriddb==1.0.5
requests==2.32.4 ; python_version >= "3.11" and python_version < "3.13" requests==2.32.5
urllib3==2.5.0 ; python_version >= "3.11" and python_version < "3.13" urllib3==2.5.0
vdf==3.4 ; python_version >= "3.11" and python_version < "3.13" vdf==3.4
+87
View File
@@ -0,0 +1,87 @@
# Fix without reporting on leftover violations
fix-only = true
# Enumerate all fixed violations
show-fixes = true
# Indent width (default: 4)
indent-width = 4
# Black (default: 88)
line-length = 130
# Exclude a variety of commonly ignored directories.
exclude = [
".bzr",
".direnv",
"dist",
".eggs",
".git",
".git-rewrite",
".hg",
".mypy_cache",
".nox",
".pants.d",
"__pycache__",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
]
# Assume Python 3.13
target-version = "py313"
[format]
# Use spaces instead of tabs
indent-style = "space"
# Use `\n` line endings for all files
line-ending = "lf"
# Set quote style for strings
quote-style = "preserve"
[lint]
select = [
# pycodestyle
"E",
# Pyflakes
"F",
# pyupgrade
"UP",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort
"I",
]
ignore = ["D203", "E203", "E251", "E266", "E401", "E402", "E501", "F401", "F403", "F841"]
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
# Allow autofix for all enabled rules (when `--fix`) is provided.
fixable = ["A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W", "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TID", "TRY", "UP", "YTT"]
[lint.isort]
combine-as-imports = true
from-first = false
no-sections = true
order-by-type = true
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.mccabe]
# Unlike Flake8, default to a complexity level of 10.
max-complexity = 10
Generated
+1228
View File
File diff suppressed because it is too large Load Diff