Skip to content

Latest commit

 

History

History
93 lines (62 loc) · 2.45 KB

CONTRIBUTING.md

File metadata and controls

93 lines (62 loc) · 2.45 KB

Contributing

Thanks for being willing to contribute!

Project setup

  1. Fork and clone the repo.
git clone https://github.com/BostonGene/pyigmap.git
  1. Install a Python 3.9 (or later), Docker, Bash 3.2 (or later) and Java 11 (or later, up to 21)
make install-python
make install-docker # requirements: ubuntu x64
make install-podman # requirements: Ubuntu 20.10 and newer
make install-java # requirements: linux x64
  1. Build all reference archives:
make build-ref # will use Docker as container engine

or

make ENGINE=podman build-ref # will use Podman as container engine

Building and Testing

To build an executable and not executable docker images, python virtual environment and installs requirements execute:

make build # will use Docker as container engine

or

make ENGINE=podman build # will use Podman as container engine

Unit (step) tests

make unit-tests # or `make ENGINE=podman unit-tests`

Integration (workflow) tests

make integration-tests

Integration and unit tests

make tests

Committing and Pushing changes

Please make sure to run the tests before you commit your changes (if you didn't configure pre-commit). You can run for it make unit-tests (for steps) and make integration-tests (for workflows).

Also, check that your code meet PEP8 requirements (by ruff), dynamic and static typing (by mypy). You can automate it using:

make check # runs ruff linter
make format # runs ruff formatter
make mypy # runs mypy type checker

Pre-commit hooks

Additionally, you can activate pre-commit hooks. Execute:

pre-commit install # pip install pre-commit

Development

  • Create an issue, a branch from main (from the task), and then create a pull request from this branch.
  • After each minor/major change in pyigmap, make sure to add some notes to CHANGELOG.

Help needed

Please check out the open issues.

Also, please watch the repo and respond to questions/bug reports/feature requests! Thanks!