Contributing

We welcome contributions to SheetWise! This document provides guidelines for contributing.

Getting Started

  1. Fork the repository on GitHub

  2. Clone your fork locally

  3. Create a new branch for your feature or bugfix

  4. Make your changes

  5. Run tests and ensure they pass

  6. Submit a pull request

Development Setup

# Clone the repository
git clone https://github.com/Khushiyant/sheetwise.git
cd sheetwise

# Install dependencies
pip install -e ".[dev]"

# Or with uv
uv pip install -e ".[dev]"

Running Tests

# Run all tests
pytest

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

# Run specific test file
pytest tests/test_core.py

Code Style

We use:

  • Black for code formatting

  • isort for import sorting

  • flake8 for linting

  • mypy for type checking

# Format code
black src/ tests/

# Sort imports
isort src/ tests/

# Check linting
flake8 src/ tests/

# Type check
mypy src/

Documentation

When adding new features, please:

  1. Add docstrings to all public functions and classes

  2. Update the relevant user guide documentation

  3. Add examples if appropriate

  4. Regenerate API docs:

python scripts/generate_docs.py
cd docs && make html

Submitting Changes

  1. Ensure all tests pass

  2. Update CHANGELOG.md

  3. Write a clear commit message

  4. Push to your fork

  5. Submit a pull request with a clear description

Pull Request Guidelines

  • Keep changes focused and atomic

  • Include tests for new features

  • Update documentation

  • Follow existing code style

  • Reference any related issues

Questions?

Feel free to open an issue on GitHub if you have questions!