We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Add tests for new functionality
- Update documentation as needed
Run the full test suite with:
cargo test --all-features- Unit Tests: Test individual functions and methods
- Integration Tests: Test the public API
- Edge Cases: Test boundary conditions and error cases
- Market Tests: Test market-specific holiday calculations
- Negative Tests: Test error handling and invalid inputs
- Update doc comments for any new public APIs
- Add examples in doc comments where appropriate
- Update README.md if adding new features
- Update CHANGELOG.md for any user-facing changes
When adding new markets or updating holiday rules:
- Verify holiday dates with official exchange sources
- Include weekend adjustment logic
- Add comprehensive tests for the new market
- Update the market comparison table in README.md
- Profile any performance-critical changes
- Ensure cache usage is optimal
- Add benchmarks for new features if applicable
- Title: Use a clear, descriptive title
- Description: Explain what the PR does and why
- Tests: Include tests for new functionality
- Documentation: Update docs for any API changes
- Breaking Changes: Clearly mark any breaking changes
- Update version in
Cargo.toml - Update
CHANGELOG.mdwith new version - Create git tag:
git tag -a v0.x.0 -m "Release version 0.x.0" - Push tag:
git push origin v0.x.0 - Publish to crates.io:
cargo publish
By contributing, you agree that your contributions will be licensed under the same terms as the project (MIT OR Apache-2.0).
If you have questions about contributing, please open an issue or reach out to the maintainers.