Thank you for your interest in contributing to DRAKEN! This document provides guidelines for contributing to the project.
- Python 3.11+
- Cython 3.1.3+
- C++17 compatible compiler
- Git
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/draken.git cd draken -
Install development dependencies:
pip install -e ".[dev]" -
Compile the Cython extensions:
make compile
-
Run the tests to verify everything works:
make test
-
Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
-
Make your changes and ensure they follow our coding standards:
make lint
-
Add or update tests for your changes
-
Run the test suite:
make test make coverage -
Commit your changes with a clear commit message
We use several tools to maintain code quality:
- Black for Python code formatting
- isort for import sorting
- Ruff for linting
- cython-lint for Cython code
Run all linting tools with:
make lint- Write tests for any new functionality
- Ensure existing tests continue to pass
- Aim for high test coverage on new code
- Performance tests should demonstrate improvement over PyArrow where applicable
- Push your branch to your fork on GitHub
- Create a pull request from your branch to the main repository
- Ensure your PR description clearly describes the changes
- Link to any relevant issues
- Be responsive to code review feedback
When reporting bugs, please include:
- Python version and platform
- DRAKEN version
- Minimal code to reproduce the issue
- Expected vs actual behavior
- Stack trace if applicable
For new features:
- Explain the use case
- Consider performance implications
- Discuss Arrow compatibility if relevant
- Provide example usage
- Include benchmarks demonstrating improvement
- Consider memory usage as well as speed
- Test on multiple platforms if possible
- Document any trade-offs
- Keep documentation up to date with code changes
- Add examples for new features
- Improve clarity and correctness
draken/
βββ draken/
β βββ core/ # Core buffer and type definitions
β βββ vectors/ # Type-specialized vector implementations
β βββ morsels/ # Batch processing containers
β βββ interop/ # Arrow interoperability layer
βββ tests/ # Test suite
β βββ vectors/ # Vector-specific tests
β βββ performance/ # Performance benchmarks
βββ docs/ # Documentation
βββ Makefile # Development commands
- Check existing issues and discussions on GitHub
- Ask questions in new issues with the "question" label
- Reach out to maintainers for guidance on larger contributions
By contributing to DRAKEN, you agree that your contributions will be licensed under the Apache License 2.0.