We welcome contributions to the HASTE project! This guide will help you get 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
-
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
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
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.
- Write unit tests for new functionality
- Ensure existing tests pass
- Add integration tests for API changes
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-number - Include tests for new functionality
- Update documentation if needed
- Pass all CI checks
## 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
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
- 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
- Check the documentation first
- Search existing issues for similar problems
- Ask questions in GitHub Discussions
- Tag maintainers for urgent issues