Skip to content

Commit c406c71

Browse files
build(deps): migrate to uv build system, poethepoet, ruff, and ty
1 parent 0d51785 commit c406c71

3 files changed

Lines changed: 278 additions & 105 deletions

File tree

.pre-commit-config.yaml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,38 @@
11
repos:
2+
- repo: https://github.com/pre-commit/pre-commit-hooks
3+
rev: v5.0.0
4+
hooks:
5+
- id: trailing-whitespace
6+
- id: end-of-file-fixer
7+
8+
- repo: https://github.com/igorshubovych/markdownlint-cli
9+
rev: v0.48.0
10+
hooks:
11+
- id: markdownlint
12+
args:
13+
- --config
14+
- .markdownlint.yml
15+
16+
- repo: https://github.com/astral-sh/ruff-pre-commit
17+
rev: v0.15.6
18+
hooks:
19+
- id: ruff-check
20+
args:
21+
- --fix
22+
- --output-format=full
23+
- id: ruff-format
24+
225
- repo: local
326
hooks:
27+
- id: ty
28+
name: ty
29+
entry: uv run ty check
30+
language: system
31+
files: \.py$
432
- id: testing
533
name: Testing
634
description: Running tests for the app
7-
language: python
8-
entry: ./bin/test.sh
35+
language: system
36+
entry: uv run poe test
937

1038
default_stages: [pre-commit, pre-push]

pyproject.toml

Lines changed: 87 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ classifiers = [
3333
"Programming Language :: Python :: 3.14",
3434
]
3535
dependencies = [
36-
"babel==2.17.0",
37-
"platformdirs==4.4.0",
38-
"pygit2==1.18.2",
39-
"pygithub==2.8.1",
40-
"pyyaml==6.0.2",
41-
"textual==6.1.0",
36+
"babel>=2.18.0",
37+
"platformdirs>=4.9.6",
38+
"pygit2>=1.19.2",
39+
"pygithub>=2.9.1",
40+
"pyyaml>=6.0.3",
41+
"textual>=8.2.7",
4242
]
4343

4444
[project.urls]
@@ -54,23 +54,97 @@ edit-python-pe = "edit_python_pe.main:main"
5454

5555
[dependency-groups]
5656
dev = [
57-
"black>=25.1.0",
57+
"coverage>=7.14.0",
5858
"deep-translator>=1.11.4",
59-
"isort>=6.0.1",
59+
"poethepoet>=0.46.0",
6060
"polib>=1.2.0",
61-
"pre-commit>=4.3.0",
62-
"pytest>=8.4.1",
63-
"pytest-cov>=6.2.1",
64-
"textual-dev==1.7.0",
61+
"pre-commit>=4.6.0",
62+
"pytest>=9.0.3",
63+
"pytest-cov>=7.1.0",
64+
"ruff>=0.15.14",
65+
"tbump>=6.11.0",
66+
"textual-dev>=1.8.0",
6567
"tomli-w>=1.2.0",
68+
"ty>=0.0.39",
6669
]
6770

6871
[build-system]
6972
requires = ["uv_build>=0.9.18,<0.10.0"]
7073
build-backend = "uv_build"
7174

72-
[tool.black]
75+
[tool.poe.tasks]
76+
"lint:update" = "uv run pre-commit autoupdate"
77+
"lint" = "uv run pre-commit run --all"
78+
"test" = "uv run pytest --cov edit_python_pe --cov-report xml:cobertura.xml --cov-report term --junitxml report.xml"
79+
"freeze" = "uv export --format requirements.txt --no-group dev --no-hashes --no-annotate --no-header --output-file requirements.txt"
80+
"freeze:dev" = "uv export --format requirements.txt --all-groups --no-hashes --no-annotate --no-header --output-file requirements.dev.txt"
81+
"changelog:draft" = { shell = "cat .diff.txt | gemini < prompts/changelog_generator.txt > .CHANGELOG_DRAFT.md" }
82+
83+
[tool.poe.tasks."version:update"]
84+
sequence = [
85+
{ cmd = "uv run tbump --no-push --no-tag --non-interactive ${version}" },
86+
]
87+
args = [{ name = "version", positional = true }]
88+
89+
[tool.ruff]
7390
line-length = 79
91+
target-version = "py314"
92+
93+
[tool.ruff.lint]
94+
select = [
95+
"E", # pycodestyle errors
96+
"W", # pycodestyle warnings
97+
"F", # pyflakes
98+
"I", # isort
99+
"D", # pydocstyle
100+
"S", # bandit
101+
"UP", # pyupgrade
102+
"B", # flake8-bugbear
103+
"C4", # flake8-comprehensions
104+
]
105+
ignore = [
106+
"E501", # line too long, handled by black
107+
"E203", # space before :, handled by black
108+
"E231", # missing whitespace after ','
109+
"E722", # do not use bare 'except'
110+
"F401", # imported but unused
111+
"F811", # redefinition of unused
112+
"D100", # Missing docstring in public module
113+
"D101", # Missing docstring in public class
114+
"D102", # Missing docstring in public method
115+
"D103", # Missing docstring in public function
116+
"D104", # Missing docstring in public package
117+
"D105", # Missing docstring in magic method
118+
"D106", # Missing docstring in public nested class
119+
"D107", # Missing docstring in __init__
120+
"D202", # No blank lines allowed after function docstring
121+
"D203", # 1 blank line required before class docstring
122+
"D213", # Multi-line docstring summary should start at the second line
123+
"D407", # Missing dashed underline after section
124+
"S101", # Use of assert detected (often used in tests)
125+
]
126+
127+
[tool.ruff.lint.isort]
128+
known-first-party = ["edit_python_pe"]
129+
known-third-party = ["github", "pygit2", "textual", "yaml"]
130+
131+
[tool.ruff.lint.pydocstyle]
132+
convention = "google"
133+
134+
[tool.ruff.format]
135+
quote-style = "double"
136+
indent-style = "space"
137+
skip-magic-trailing-comma = false
138+
line-ending = "auto"
139+
140+
[tool.ty.rules]
141+
not-subscriptable = "ignore"
142+
invalid-return-type = "ignore"
143+
unresolved-import = "ignore"
144+
possibly-missing-attribute = "ignore"
145+
invalid-argument-type = "ignore"
146+
inconsistent-mro = "ignore"
147+
unresolved-attribute = "ignore"
74148

75149
[tool.uv.build-backend]
76150
module-name = "edit_python_pe"

0 commit comments

Comments
 (0)