Contributing How-to Guides

We recommend having already gone over the Contributing overview page before reading the sections below.

Running the test suite locally

This section covers how to run the test suite locally. That is, without using tox (as recommended on the Contributing overview or triggering CI by opening a pull request on GitHub.

You should follow these steps for example if you want to reproduce and fix a bug that depends on the NumPy version and therefore need to test xarray-einstats on an environment that has a specific set of dependencies installed.

  1. Install xarray-einstats in editable mode in the desired environment:

    pip install -e ".[test,einops,numba]"
    

    This will install xarray-einstats in editable mode together with all optional dependencies and all testing related dependencies.

  2. Run pytest

    pytest tests/ --cov --cov-report term
    

    This will run the tests in the tests suite and coverage analysis and print all the results on the terminal.

Making a new release

Release preparation

  1. Create a new branch

  2. Check dependency version pins in pyproject.toml, they should follow SPEC 0 roughly.

  3. Review the change log (docs/source/changelog.md). The unreleased section should be updated to the current version and release date and not yet added

  4. Update the version number in __init__.py. That is, remove the dev flag, it should not be increased.

  5. Rerun the notebooks in docs/source/tutorials

  6. Open a PR, make sure docs build correctly and all tests pass. Once everything is green, merge the PR

  7. Create a new release from GitHub, use as tag the version number prepended by v. i.e. v0.1.0 or v0.2.3

Post release tasks

  1. Check the new version appears on the readthedocs version switcher. If it doesn’t go to readthedocs and add it.

  2. Bump the minor version, set the patch version to 0 and add the dev flag. It should look like 0.2.0.dev0.

  3. Update the changelog to add the unreleased section back. Here is a template to copy paste:

    ## v0.x.x (Unreleased)
    ### New features
    
    ### Maintenance and fixes
    
    ### Documentation
    
  4. Check conda-forge. It will automatically send a PR with the updated recipe which will need to be reviewed (and modified if dependencies were updated).