Metadata-Version: 2.4
Name: vernier
Version: 0.0.1
Classifier: Development Status :: 1 - Planning
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Rust
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Requires-Dist: numpy>=2.0
Requires-Dist: torch>=2.4 ; extra == 'torch'
Requires-Dist: plotly>=6.0 ; extra == 'viz'
Provides-Extra: torch
Provides-Extra: viz
License-File: LICENSE-APACHE
License-File: LICENSE-MIT
Summary: High-performance, parity-preserving COCO-style evaluation
Keywords: evaluation,metrics,computer-vision,detection,coco,object-detection
Author: The vernier authors
License: MIT OR Apache-2.0
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://github.com/NoeFontana/vernier#readme
Project-URL: Homepage, https://github.com/NoeFontana/vernier
Project-URL: Issues, https://github.com/NoeFontana/vernier/issues
Project-URL: Repository, https://github.com/NoeFontana/vernier

# vernier

[![CI](https://github.com/NoeFontana/vernier/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/NoeFontana/vernier/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/vernier.svg?label=pypi%20%7C%20vernier)](https://pypi.org/project/vernier/)
[![crates.io vernier](https://img.shields.io/crates/v/vernier.svg?label=crates.io%20%7C%20vernier)](https://crates.io/crates/vernier)
[![crates.io vernier-core](https://img.shields.io/crates/v/vernier-core.svg?label=crates.io%20%7C%20vernier-core)](https://crates.io/crates/vernier-core)
[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](#license)

> High-performance, parity-preserving COCO-style evaluation for object detection,
> instance segmentation, and keypoints. Rust core, Python frontend, optional CLI.

**Status:** early development. Public API is unstable and the project is
pre-1.0. See `docs/adr/` for the design decisions that are shaping it.

## Why vernier

Existing COCO evaluation tooling presents a forced choice: the reference
`pycocotools` is correct-by-definition but slow and unmaintained; faster
reimplementations exist but each comes with its own drift from the reference.
vernier aims to provide a single library that is:

- **Bitwise identical** to the pycocotools reference on the minimal API
- **Fast** — Rust core, SIMD-friendly data layout, zero-copy on the hot path
- **Honest about quirks** — extended API offers corrected definitions
  alongside the reference, with the difference documented per-quirk
- **Embeddable** — pure-Rust core usable from CLI, ROS2 nodes, or any other
  Rust program without dragging Python along

## Layout

```
crates/
  vernier-core/   pure Rust evaluation logic; no Python dependency
  vernier-ffi/    PyO3 bindings; data conversion only, no business logic
python/
  vernier/        thin Python wrapper; the user-facing API lives here
docs/
  adr/            Architecture Decision Records
  ...             Diátaxis-organized documentation
tests/
  rust/           Rust integration tests
  python/         Python tests against the FFI boundary
```

## Quickstart (development)

Prerequisites: [Rust stable](https://rustup.rs/), [uv](https://docs.astral.sh/uv/),
[just](https://github.com/casey/just), and `cargo-nextest`.

```bash
# One-time setup
just bootstrap

# Iterate
just develop      # fast incremental rebuild
just test         # Rust + Python tests
just lint         # clippy + ruff + pyright (read-only, CI-equivalent)
just fmt          # auto-format everything
```

## Project governance

Architectural decisions are recorded in `docs/adr/`. The first ADR
(`0001-record-architecture-decisions.md`) establishes the process itself.
Significant changes — anything that affects the public API, the FFI boundary,
or the parity contract — start as an ADR draft.

## License

Dual-licensed under either of [Apache License, Version 2.0](LICENSE-APACHE)
or [MIT license](LICENSE-MIT) at your option.

