Metadata-Version: 2.4
Name: saccade-vision
Version: 0.2.9
Classifier: Programming Language :: Python :: 3
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: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: Apache Software License
Requires-Dist: numpy>=1.23
License-File: LICENSE-MIT
License-File: LICENSE-APACHE
Summary: Local image and media analysis with explicit evidence provenance
Keywords: image-analysis,visual-regression,image-comparison,computer-vision
License-Expression: MIT OR Apache-2.0
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Changelog, https://github.com/Tavrin/saccade/blob/main/CHANGELOG.md
Project-URL: Documentation, https://github.com/Tavrin/saccade/blob/main/docs/python.md
Project-URL: Homepage, https://github.com/Tavrin/saccade
Project-URL: Repository, https://github.com/Tavrin/saccade

# Saccade for Python

Local image analysis and comparison with explicit evidence provenance, powered by Rust.
Supports Python 3.10 and newer on Linux, macOS and Windows.

```sh
pip install saccade-vision
```

The PyPI distribution name is **saccade-vision**; the Python import name is **saccade**.
Analyze an existing image without downloading models:

```python
import saccade
analyzer = saccade.Analyzer(profile="cpu-lite", allow_download=False)
record = analyzer.analyze_media("image.png")
print(record["identity"])
print(analyzer.hash("image.png"))
```

The standard wheels provide CPU-only analysis; model operations require a custom
model-enabled build and explicitly provisioned models.
See the [Python documentation](https://github.com/Tavrin/saccade/blob/main/docs/python.md)
for the API, errors and optional model support.

`batch(source, out, options_json=None, reference_dir=None)` returns resumable
per-input rows in-process through the same Rust core runner as the CLI. Installing
only the wheel is sufficient; no executable or `SACCADE_BIN` is needed. Deadlines
are cooperative: a running bounded operation finishes before a timed-out row returns.
Unsupported section flags produce explicit partial rows. See
[batch intake](../../docs/batch-and-assist.md) for resource limits and status semantics.

