I ran the scientific-python.org repo-review tool on this repository:
(dev3.11) tom@Toms-MBP virtualizarr % pipx run 'sp-repo-review[cli]' .
General:
• Detected build backend: MISSING
• Detected license(s): Apache Software License
├── PY001 Has a pyproject.toml ✅
├── PY002 Has a README.(md|rst) file ✅
├── PY003 Has a LICENSE* file ✅
├── PY004 Has docs folder ✅
├── PY005 Has tests folder ✅
├── PY006 Has pre-commit config ✅
└── PY007 Supports an easy task runner (nox or tox) ❌
Projects must have a noxfile.py, tox.ini, or tool.hatch.envs/tool.spin/tool.tox in pyproject.toml to encourage new contributors.
PyProject:
├── PP002 Has a proper build-system table ❌
│ Must have build-system.requires and build-system.backend. Both should be present in all modern packages.
├── PP003 Does not list wheel as a build-dep ❌
│ Do not include "wheel" in your build-system.requires, setuptools does this via PEP 517 already. Setuptools will also only require this for actual wheel builds, and might have version
│ limits.
├── PP301 Has pytest in pyproject ❌
│ Must have a [tool.pytest.ini_options] configuration section in pyproject.toml. If you must have it somewhere else (such as to support pytest<6), ignore this check.
├── PP302 Sets a minimum pytest to at least 6 [skipped]
├── PP303 Sets the test paths [skipped]
├── PP304 Sets the log level in pytest [skipped]
├── PP305 Specifies xfail_strict [skipped]
├── PP306 Specifies strict config [skipped]
├── PP307 Specifies strict markers [skipped]
├── PP308 Specifies useful pytest summary [skipped]
└── PP309 Filter warnings specified [skipped]
GitHub Actions:
├── GH100 Has GitHub Actions config ✅
├── GH101 Has nice names ✅
├── GH102 Auto-cancel on repeated PRs ❌
│ At least one workflow should auto-cancel.
│
│
│ concurrency:
│ group: ${{ github.workflow }}-${{ github.ref }}
│ cancel-in-progress: true
│
├── GH103 At least one workflow with manual dispatch trigger ❌
│ At least one workflow should have manual dispatch to allow easy triggering from the web.
│
│
│ on:
│ workflow_dispatch:
│
├── GH104 Use unique names for upload-artifact ✅
├── GH200 Maintained by Dependabot ❌
│ All projects should have a .github/dependabot.yml file to support at least GitHub Actions regular updates. Something like this:
│
│
│ version: 2
│ updates:
│ # Maintain dependencies for GitHub Actions
│ - package-ecosystem: "github-actions"
│ directory: "/"
│ schedule:
│ interval: "weekly"
│
├── GH210 Maintains the GitHub action versions with Dependabot [skipped]
├── GH211 Do not pin core actions as major versions [skipped]
└── GH212 Require GHA update grouping [skipped]
Pre-commit:
├── PC100 Has pre-commit-hooks ✅
├── PC110 Uses black or ruff-format ❌
│ Must have https://github.com/psf/black-pre-commit-mirror or https://github.com/astral-sh/ruff-pre-commit + id: ruff-format in .pre-commit-config.yaml
├── PC111 Uses blacken-docs [skipped]
├── PC140 Uses mypy ✅
├── 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
├── PC190 Uses Ruff ✅
├── 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:
├── MY100 Uses MyPy (pyproject config) ❌
│ Must have tool.mypy section in pyproject.toml. Other forms of configuration are not supported by this check.
├── MY101 MyPy strict mode [skipped]
├── MY102 MyPy show_error_codes deprecated [skipped]
├── MY103 MyPy warn unreachable [skipped]
├── MY104 MyPy enables ignore-without-code [skipped]
├── MY105 MyPy enables redundant-expr [skipped]
└── MY106 MyPy enables truthy-bool [skipped]
Ruff:
├── RF001 Has Ruff config ✅
├── RF002 Target version must be set ❌
│ You have both Ruff's target-version and project.requires-python. You only need the latter.
├── RF003 src directory specified if used [skipped]
├── RF101 Bugbear must be selected ❌
│ Must select the flake8-bugbear B checks. Recommended:
│
│
│ [tool.ruff.lint]
│ extend-select = [
│ "B", # flake8-bugbear
│ ]
│
├── RF102 isort must be selected ❌
│ Must select the isort I checks. Recommended:
│
│
│ [tool.ruff.lint]
│ extend-select = [
│ "I", # isort
│ ]
│
├── RF103 pyupgrade must be selected ❌
│ Must select the pyupgrade UP checks. Recommended:
│
│
│ [tool.ruff.lint]
│ extend-select = [
│ "UP", # pyupgrade
│ ]
│
├── RF201 Avoid using deprecated config settings ✅
└── RF202 Use (new) lint config section ✅
Documentation:
├── RTD100 Uses ReadTheDocs (pyproject config) ✅
├── RTD101 You have to set the RTD version number to 2 ✅
├── RTD102 You have to set the RTD build image ✅
└── RTD103 You have to set the RTD python version ✅
I ran the scientific-python.org repo-review tool on this repository:
(@jbusecke in case you haven't seen this before)