Thank you for your interest in contributing to EdgeParse! This document explains how to get started.
By participating in this project, you agree to be respectful and constructive. We follow the Contributor Covenant Code of Conduct.
- Search existing issues to avoid duplicates.
- Open a new issue using the Bug Report template.
- Include the EdgeParse version, OS, Rust toolchain version, and a minimal PDF reproducer if possible.
Open an issue with the Feature Request template. Describe the use case, expected behaviour, and any alternative approaches you considered.
- Fork the repository and create a branch from
main. - Run
cargo fmtandcargo clippy -- -D warningsbefore committing. - Add or update tests for any changed behaviour.
- Run the full benchmark to check for regressions (
./scripts/bench.sh). - Open a PR against
mainwith a clear description of the change.
| Tool | Minimum version |
|---|---|
| Rust | 1.85 (stable) |
| Python | 3.11 |
| uv | latest |
# Clone
git clone https://github.com/<your-org>/edgeparse.git
cd edgeparse
# Build release binary
cargo build --release
# Run unit tests
cargo testcd benchmark
# Install Python deps
uv sync
# Run against all 200 PDFs
uv run python run.py
# Run for a single document
uv run python run.py --doc-id 01030000000001
# Check threshold regressions
uv run python run.py --check-regression- All public APIs must have doc comments.
- Keep functions small and focused; prefer composition over inheritance.
- Avoid unsafe code except where absolutely necessary, with a safety comment.
- Use
thiserrorfor library errors andanyhowin CLI/application code.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.