Skip to content

Contributing

Thank you for your interest in contributing to py-gbcms!

Full Guide

See the main contributing guide for complete details.

Contributing to GetBaseCounts

Thank you for your interest in contributing to GetBaseCounts! This document provides guidelines and instructions for contributing.

Development Setup

  1. Clone the repository

    git clone https://github.com/msk-access/py-gbcms.git
    cd py-gbcms
    

  2. Install uv (if not already installed)

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

  3. Install development dependencies

    uv pip install -e ".[dev]"
    

Development Workflow

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=gbcms --cov-report=html

# Run specific test file
pytest tests/test_counter.py

# Run with verbose output
pytest -v

Code Quality

# Format code
black src/ tests/

# Lint code
ruff check src/ tests/

# Fix linting issues automatically
ruff check --fix src/ tests/

# Type checking
mypy src/

Building and Testing Docker

# Build Docker image
docker build -t gbcms:latest .

Code Style

  • Follow PEP 8 style guidelines
  • Use type hints for all function signatures
  • Write docstrings for all public functions and classes
  • Keep functions focused and single-purpose
  • Maximum line length: 100 characters

Testing Guidelines

  • Write tests for all new features
  • Maintain or improve code coverage
  • Use descriptive test names
  • Use fixtures for common test setup
  • Test edge cases and error conditions

Pull Request Process

  1. Create a feature branch

    git checkout -b feature/your-feature-name
    

  2. Make your changes

  3. Write code following the style guidelines
  4. Add tests for new functionality
  5. Update documentation as needed

  6. Run tests and linters

    make test
    make lint
    

  7. Commit your changes

    git add .
    git commit -m "Description of your changes"
    

  8. Push to your fork

    git push origin feature/your-feature-name
    

  9. Create a Pull Request

  10. Provide a clear description of the changes
  11. Reference any related issues
  12. Ensure all CI checks pass

Reporting Issues

When reporting issues, please include:

  • Python version
  • Operating system
  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Error messages or logs

Feature Requests

We welcome feature requests! Please:

  • Check if the feature already exists
  • Provide a clear use case
  • Describe the expected behavior
  • Consider submitting a PR if you can implement it

Code of Conduct

  • Be respectful and inclusive
  • Welcome newcomers
  • Focus on constructive feedback
  • Help others learn and grow

Questions?

Feel free to open an issue for questions or reach out to the maintainers.

Thank you for contributing!