zarr-developers / VirtualiZarr

Create virtual Zarr stores from archival data files using xarray syntax
https://virtualizarr.readthedocs.io/en/latest/
Apache License 2.0
90 stars 16 forks source link

Results of repo-review #99

Open TomNicholas opened 4 months ago

TomNicholas commented 4 months ago

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 ✅

(@jbusecke in case you haven't seen this before)

jbusecke commented 4 months ago

Oh this is neat!