Metadata-Version: 2.4
Name: viva-genicam
Version: 0.9.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
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: Topic :: Multimedia :: Graphics :: Capture
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Dist: numpy>=1.23
Requires-Dist: pytest>=7 ; extra == 'dev'
Requires-Dist: maturin>=1.7 ; extra == 'dev'
Provides-Extra: dev
Summary: Pure-Rust GenICam stack for Python: discover, control, and stream GigE Vision / USB3 Vision cameras
Keywords: genicam,gige,usb3-vision,camera,vision
Author: Vitaly Vorobyev
License: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://vitalyvorobyev.github.io/viva-genicam/
Project-URL: Homepage, https://github.com/VitalyVorobyev/viva-genicam
Project-URL: Repository, https://github.com/VitalyVorobyev/viva-genicam

# viva-genicam (Python)

Pure-Rust GenICam stack with Python bindings. Discover, control, and stream GigE Vision and USB3 Vision cameras from Python — no aravis, no C toolchain, just a wheel.

```bash
pip install viva-genicam
```

The install also provides `viva-camctl`, the diagnostic CLI, so
`viva-camctl report --ip <CAMERA-IP> --out viva-report.txt` works without a Rust
toolchain. It is the right thing to attach to a bug report.

```python
import viva_genicam as vg

cams = vg.discover(timeout_ms=500)
with vg.connect_gige(cams[0]) as cam:   # control is given back at the end
    print(cam.get("DeviceModelName"))
    cam.set_exposure_time(10_000.0)

    with cam.stream() as frames:
        for frame in frames:
            arr = frame.to_numpy()      # (H, W) uint16 for a 12-bit camera, ...
            print(frame.width, frame.height, frame.pixel_format)
            break
```

Cameras and frames work from any thread, and calls that wait on the camera
release the GIL. `viva_genicam.testing.FakeGigeCamera` is a camera in the same
process, for tests and demos without hardware.

See the [documentation](https://vitalyvorobyev.github.io/viva-genicam/python.html) for the full API.

## Build from source

See [CONTRIBUTING.md](https://github.com/VitalyVorobyev/viva-genicam/blob/main/CONTRIBUTING.md)
in the repository.

## Licensing

MIT. USB3 Vision support is pure Rust ([nusb](https://crates.io/crates/nusb)),
so the wheel links no C USB library.

