Skip to content

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire and create, and we welcome your support! Any contributions you make are greatly appreciated.

Ways to Contribute

If you have ideas for enhancements, you can:

  • Fork the repository and submit a pull request
  • Open an issue and tag it with "enhancement"
  • Report bugs by opening an issue with the "bug" label
  • Improve documentation
  • Add examples or tutorials

Contribution Process

  1. Fork the repository

    git clone https://github.com/instadeepai/winnow.git
    cd winnow
    

  2. Create a feature branch

    git checkout -b feature/AmazingFeature
    

  3. Set up development environment

    # Install development dependencies
    uv sync --dev"
    
    # Set up pre-commit hooks
    pre-commit install
    

  4. Make your changes

  5. Follow the existing code style
  6. Add tests for new functionality
  7. Update documentation as needed

  8. Test your changes

    # Run tests
    pytest
    
    # Check code formatting
    pre-commit run --all-files
    

  9. Commit your changes

    git commit -m 'Add some AmazingFeature'
    

  10. Push to your branch

    git push origin feature/AmazingFeature
    

  11. Open a Pull Request

  12. Provide a clear description of your changes
  13. Reference any related issues
  14. Include examples if applicable

Development Guidelines

Code Style

This project uses:

  • Ruff for linting and formatting
  • Pre-commit hooks for automated checks
  • Type hints where applicable

Testing

  • Write tests for new functionality using pytest
  • Ensure all tests pass before submitting a PR
  • Include both unit tests and integration tests where appropriate

Documentation

  • Update docstrings for new or modified functions/classes
  • Add examples to demonstrate usage
  • Update the API documentation pages if you add new modules

Issues and Bug Reports

When reporting bugs, please include:

  • A clear and descriptive title
  • Steps to reproduce the issue
  • Expected vs. actual behavior
  • Your environment details (Python version, OS, etc.)
  • Any relevant error messages or logs

Feature Requests

For feature requests, please:

  • Use a clear and descriptive title
  • Explain the motivation for the feature
  • Describe the proposed solution
  • Consider alternatives you've thought about

Getting Help

If you need help or have questions:

  • Check the examples for usage patterns
  • Look through existing issues
  • Open a new issue with the "question" label

Recognition

Contributors are recognised in the project's contributor list. Don't forget to give the project a star! ⭐

Thank you for considering contributing to winnow!