Contributing#
Bug reports and feature requests#
Bugs and new feature requests can be submitted to the issue tracker on GitHub. See this StackOverflow post for tips on how to craft a helpful bug report.
Adding new data sources#
Note
wags-tails
is intended to remain dependency-light to enable broad usage across our projects. If fetching new data requires adding additional dependencies, strong consideration should be given to whether it should be stood up as a CustomData
subclass in the downstream library, instead of being added directly to wags-tails
.
Generally, data classes for versioned data should inherit from DataSource
and must, at minimum, implement two instance methods, _get_latest_version()
and _download_data()
, and two instance attributes, _src_name
and _filetype
. Data supplied via GitHub release should be implemented as a GitHubDataSource
and also supply a _repo
attribute, but may not need to reimplement _get_latest_version()
. Unversioned data (i.e. a data object that is static or doesn’t ever need to be updated) can be implemented as an UnversionedDataSource
, which also obviates the need to define a _get_latest_version()
method.
Development setup#
Clone the repository:
git clone https://github.com/genomicmedlab/wags-tails
cd wags-tails
Then initialize a virtual environment:
python3 -m virtualenv venv
source venv/bin/activate
python3 -m pip install -e '.[dev,tests,docs]'
We use pre-commit to run conformance tests before commits. This provides checks for:
Code format and style
Added large files
AWS credentials
Private keys
Before your first commit, run:
pre-commit install
Style#
Code style is managed by Ruff, and should be checked via pre-commit hook before commits. Final QC is applied with GitHub Actions to every pull request.
Tests#
Tests are executed with pytest:
pytest
Documentation#
The documentation is built with Sphinx, which is included as part of the docs
dependency group. Navigate to the docs/ subdirectory and use make to build the HTML version:
cd docs
make html
See the Sphinx documentation for more information.