Skip to content

Contributing

Thank you for your interest in contributing to Jetliner!

Development Setup

Tools

  • Python 3.11+
  • Rust toolchain (install via rustup)
  • uv for Python dependency management
  • poe for task management

This project was mostly implemented via Spec Driven Development with kiro, so requirements, design, and tasks are tracked permanently under the .kiro/specs

Getting Started

# Clone the repository
git clone https://github.com/jetliner/jetliner.git
cd jetliner

# Install Rust toolchain
poe rustup

# Create virtual environment and install dependencies
uv sync

# Build the Rust extension
poe build-dev

# Verify installation
uv run python -c "import jetliner; print('OK')"

Running Tests

# Run all checks (formatting, linting, tests)
poe check

# Run specific test suites
poe test-rust      # Rust unit tests
poe test-python    # Python e2e tests

Code Style

The following tasks are available to help with ensuring rust code meets formatting and linting standards:

poe format-rust
poe lint-rust

This project uses rust for python code formatting and linting python code. The following tasks are available to help:

poe format-python
poe lint-python

Project Structure

jetliner/
├── src/                   # Rust source code
│   ├── codec/             # Compression codecs
│   ├── convert/           # Arrow/DataFrame conversion
│   ├── python/            # PyO3 bindings
│   ├── reader/            # Core Avro reader
│   ├── schema/            # Schema parsing
│   └── source/            # File/S3 sources
├── python/
│   ├── jetliner/          # Python package for bindings
│   └── tests/             # Pytest tests
├── tests/                 # Rust integration tests
├── benches/               # Benchmarks
└── docs/                  # Documentation

Reporting Issues

When reporting issues, please include:

  • Jetliner version
  • Python version
  • Operating system
  • Minimal reproduction case
  • Error messages and stack traces

Documentation

To preview documentation locally:

poe docs-serve

Then open http://localhost:8000 in your browser.

License

By contributing, you agree that your contributions will be licensed under the Apache License 2.0.