What is your issue?
Here's the output from the Scientific Python Repo Review tool.
There's an online version here.
On mac I run
pipx run 'sp-repo-review[cli]' --format html --show err gh:pydata/xarray@main | pbcopy
A lot of these seem fairly easy to fix. I'll note that there's a large number of mypy config suggestions.
General
- Detected build backend:
setuptools.build_meta
- Detected license(s): Apache Software License
PyProject
See #8239 (comment)
| ? | Name | Description |
| ❌ |
PP305 |
Specifies xfail_strict
xfail_strict should be set. You can manually specify if a check
should be strict when setting each xfail.
[tool.pytest.ini_options]
xfail_strict = true
|
| ❌ |
PP308 |
Specifies useful pytest summary
-ra should be in addopts = [...] (print summary of all fails/errors).
[tool.pytest.ini_options]
addops = ["-ra", "--strict-config", "--strict-markers"]
|
Pre-commit
| ? | Name | Description |
| ❌ |
PC110 |
Uses black
Use https://github.com/psf/black-pre-commit-mirror instead of https://github.com/psf/black in .pre-commit-config.yaml
|
| ❌ |
PC160 |
Uses codespell
Must have https://github.com/codespell-project/codespell repo in .pre-commit-config.yaml
|
| ❌ |
PC170 |
Uses PyGrep hooks (only needed if RST present)
Must have https://github.com/pre-commit/pygrep-hooks repo in .pre-commit-config.yaml
|
| ❌ |
PC180 |
Uses prettier
Must have https://github.com/pre-commit/mirrors-prettier repo in .pre-commit-config.yaml
|
| ❌ |
PC191 |
Ruff show fixes if fixes enabled
If --fix is present, --show-fixes must be too.
|
| ❌ |
PC901 |
Custom pre-commit CI message
Should have something like this in .pre-commit-config.yaml:
ci:
autoupdate_commit_msg: 'chore: update pre-commit hooks'
|
MyPy
| ? | Name | Description |
| ❌ |
MY101 |
MyPy strict mode
Must have strict in the mypy config. MyPy is best with strict or
nearly strict configuration. If you are happy with the strictness of
your settings already, ignore this check or set strict = false
explicitly.
[tool.mypy]
strict = true
|
| ❌ |
MY103 |
MyPy warn unreachable
Must have warn_unreachable = true to pass this check. There are
occasionally false positives (often due to platform or Python version
static checks), so it's okay to ignore this check. But try it first - it
can catch real bugs too.
[tool.mypy]
warn_unreachable = true
|
| ❌ |
MY104 |
MyPy enables ignore-without-code
Must have "ignore-without-code" in enable_error_code = [...]. This
will force all skips in your project to include the error code, which
makes them more readable, and avoids skipping something unintended.
[tool.mypy]
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
|
| ❌ |
MY105 |
MyPy enables redundant-expr
Must have "redundant-expr" in enable_error_code = [...]. This helps
catch useless lines of code, like checking the same condition twice.
[tool.mypy]
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
|
| ❌ |
MY106 |
MyPy enables truthy-bool
Must have "truthy-bool" in enable_error_code = []. This catches
mistakes in using a value as truthy if it cannot be falsey.
[tool.mypy]
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
|
Ruff
| ? | Name | Description |
| ❌ |
RF101 |
Bugbear must be selected
Must select the flake8-bugbear B checks. Recommended:
[tool.ruff]
select = [
"B", # flake8-bugbear
]
|