Skip to content

Latest commit

 

History

History
87 lines (54 loc) · 2.57 KB

develop.rst

File metadata and controls

87 lines (54 loc) · 2.57 KB

Developing

The Cutadapt source code is on GitHub. Cutadapt is written in Python 3 with some extension modules that are written in Cython.

Development installation

For development, make sure that you install Cython and tox. We also recommend using a virtualenv. This sequence of commands should work:

git clone https://github.com/marcelm/cutadapt.git  # or clone your own fork
cd cutadapt
virtualenv .venv
source .venv/bin/activate
pip install Cython pytest tox pre-commit
pre-commit install
pip install -e .

Then you should be able to run Cutadapt:

cutadapt --version

Remember that you do not need to activate a virtualenv to run binaries in it, so this works even when the environment is activated:

venv/bin/cutadapt --version

The tests can then be run like this:

pytest

Or with tox (but then you will need to have binaries for all tested Python versions installed):

tox

Making a release

A new release is automatically deployed to PyPI whenever a new tag is pushed to the Git repository.

Cutadapt uses setuptools_scm to automatically manage version numbers. This means that the version is not stored in the source code but derived from the most recent Git tag. The following procedure can be used to bump the version and make a new release.

  1. Update CHANGES.rst (version number and list of changes)

  2. Ensure you have no uncommitted changes in the working copy.

  3. Run a git pull.

  4. Run tox, ensuring all tests pass.

  5. Tag the current commit with the version number (there must be a v prefix):

    git tag v0.1
    

    To release a development version, use a dev version number such as v1.17.dev1. Users will not automatically get these unless they use pip install --pre.

  6. Push the tag:

    git push --tags
    
  7. Wait for the GitHub Action to finish and to deploy to PyPI.

  8. The bioconda recipe also needs to be updated, but the bioconda bot will likely do this automatically if you just wait a little while.

    Ensure that the list of dependencies (the requirements: section in the recipe) is in sync with the setup.cfg file.

If something went wrong after a version has already been tagged and published to PyPI, fix the problem and tag a new version. Do not change a version that has already been uploaded.