prollytree 0.3.2

A prolly (probabilistic) tree for efficient storage, retrieval, and modification of ordered data.
Documentation
# Contributing to ProllyTree

Thank you for your interest in contributing to ProllyTree! This document provides guidelines and instructions for contributing.

## Getting Started

### Prerequisites

- Rust toolchain (edition 2021)
- Git
- For Python bindings: Python 3.8+ and maturin (`pip install maturin`)

### Building the Project

```bash
# Clone the repository
git clone https://github.com/zhangfengcdt/prollytree.git
cd prollytree

# Build with default features
cargo build

# Build with all features
cargo build --all-features

# Run tests
cargo test
```

### Feature Flags

The project uses feature flags for optional functionality:

- `git`: Git-backed versioned storage
- `sql`: SQL query support via GlueSQL
- `agent`: AI agent memory system
- `python`: Python bindings via PyO3
- `rocksdb_storage`: RocksDB persistent storage
- `tui`: Terminal UI

## How to Contribute

### Reporting Issues

- Check existing issues before creating a new one
- Include clear reproduction steps
- Provide relevant environment details (OS, Rust version, feature flags)

### Pull Requests

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/your-feature`)
3. Make your changes
4. Ensure code quality:
   ```bash
   cargo fmt --all
   cargo clippy --all
   cargo test
   ```
5. Commit with clear messages
6. Push to your fork and open a PR

### Code Style

- Follow Rust standard formatting (`cargo fmt`)
- Address all clippy warnings (`cargo clippy`)
- Add tests for new functionality
- Include Apache 2.0 license headers in new files

### Testing

```bash
# Run all tests
cargo test

# Run tests with specific features
cargo test --features "git sql"

# Run a specific test
cargo test test_name -- --nocapture
```

## License

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