Contributing to HASTE#
We welcome contributions to the HASTE project! This guide will help you get started.
Getting Started#
Fork the repository on GitHub
Clone your fork locally:
git clone https://github.com/your-username/haste.git cd haste
Set up the development environment:
conda env create -f env.yml conda activate haste_env
Install pre-commit hooks:
pre-commit install
Development Workflow#
Create a feature branch:
git checkout -b feature/your-feature-name
Make your changes with proper documentation
Test your changes locally
Run pre-commit hooks:
pre-commit run --all-files
Commit your changes:
git add . git commit -m "Add: Brief description of your changes"
Push to your fork:
git push origin feature/your-feature-name
Create a pull request on GitHub
Code Standards#
Documentation Requirements#
All public functions must have comprehensive docstrings:
Brief description of what the function does
Detailed explanation of complex behavior
Args section with type hints and descriptions
Returns section with possible status codes
Example usage for complex functions
Code Formatting#
The project uses automated formatting:
Black for code formatting (79 characters)
isort for import sorting
flake8 for linting
These run automatically via pre-commit hooks.
Testing#
Write unit tests for new functionality
Ensure existing tests pass
Add integration tests for API changes
Pull Request Guidelines#
Your pull request should:
Have a clear title describing the change
Include a detailed description of what was changed and why
Reference any related issues using
#issue-numberInclude tests for new functionality
Update documentation if needed
Pass all CI checks
Example PR Description#
## Add comprehensive API documentation
### Changes
- Added detailed docstrings to all main API endpoints
- Set up Sphinx documentation generation
- Created getting started guide
### Testing
- Verified documentation builds successfully
- Tested API examples in docstrings
- All existing tests pass
Fixes #123
Reporting Issues#
When reporting bugs or requesting features:
Check existing issues first
Use clear, descriptive titles
Provide reproduction steps for bugs
Include relevant logs or error messages
Suggest solutions if you have ideas
Community Guidelines#
Be respectful and inclusive
Help others learn and contribute
Follow Microsoft’s Open Source Code of Conduct
Ask questions if you’re unsure about anything
Getting Help#
Check the documentation first
Search existing issues for similar problems
Ask questions in GitHub Discussions
Tag maintainers for urgent issues