Skip to main content

openptv2

Unified OpenPTV: Particle Tracking Velocimetry with dual-engine support

Python License Documentation Coverage

Overview

openptv2 combines the best of three repositories into a single, maintainable package:

  • C core library (lib/) - High-performance particle tracking algorithms
  • Cython bindings (bindings/) - Python interface to C library
  • Python/Numba fallback (algorithms/) - Pure Python implementation for debugging
  • TraitsUI GUI (gui/) - Full-featured graphical interface

Key Features

  • Dual-engine architecture: Use fast C/Cython (optv) or debuggable Python/Numba (python)
  • Identical results: Both engines produce the same output (within floating-point tolerance)
  • Backward compatible: Works with existing optv and pyptv code
  • Easy installation: Pre-built wheels for Linux, Windows, macOS

Installation

There are three install profiles:

Command For Includes
pip install openptv2 scripting + openptv2-batch (default) headless algorithms/API + sequence/tracking pipeline
pip install openptv2[gui] desktop users default plus the TraitsUI/Chaco/PySide6 GUI
pip install openptv2[dev] contributors everything: GUI, tests, lint, type-check, notebooks, docs

Default (headless / batch)

The bare install is the headless batch runtime — the library, the openptv2-batch sequence + tracking pipeline, no GUI:

uv pip install openptv2
# or
pip install openptv2

Don't have uv? curl -LsSf https://astral.sh/uv/install.sh | sh

GUI (desktop users)

uv pip install openptv2[gui]
# or
pip install openptv2[gui]

Verify Installation

python -c "import openptv2; print(f'openptv2 version: {openptv2.__version__}')"
python -c "from openptv2 import Tracker; print('Tracker imported successfully')"

Note: launching the GUI (openptv2-gui) requires the [gui] extra. A default install that then launches the GUI will fail with ModuleNotFoundError: No module named 'traitsui' (and chaco/PySide6) — that is expected; install openptv2[gui].

Docker (no Python setup required)

A single image serves both the GUI and batch. It bakes in a trimmed test_cavity demo at /demo/test_cavity so the first run works with no data.

# Build once
docker build -t openptv2 .

# GUI on the host X display (Linux/X11), current folder mounted at /data
./docker/run-gui.sh
#   in the GUI, open /demo/test_cavity to try the baked demo

# Headless batch on your own data
docker run --rm -v "$PWD:/data" openptv2 \
  openptv2-batch /data/<experiment>/parameters_Run1.yaml <first> <last>

X11 notes: run-gui.sh handles xhost and mounts /tmp/.X11-unix. On Wayland run xhost +local:root in an XWayland session; on macOS/Windows use an X server (XQuartz / VcXsrv) and set DISPLAY accordingly.

Headless cloud batch: Dockerfile.cloud is a slim, no-GUI, free-threaded 3.14t image for servers/Cloud Run. See docs/cloud-batch.md for the one-command install, openptv2-batch usage, and measured timings.

Zarr + HDF5 Cloud Storage: OpenPTV2 includes a native, high-performance Zarr storage engine (res/run.zarr) replacing thousands of per-frame text files with a cloud-native chunked format. See docs/zarr-hdf5-storage.md for usage, terminal inspection, and Flowtracks HDF5 export.


For Developers (Build from Source)

Prerequisites:

  • Python 3.11, 3.12, or 3.13
  • CMake 3.15+
  • C compiler (gcc on Linux, clang on macOS, MSVC on Windows)
  • Cython 3.0+
  • NumPy 2.0+
  • uv (recommended) or pip

System Dependencies

Linux (Debian/Ubuntu):

sudo apt-get update
sudo apt-get install -y cmake build-essential python3-dev

Linux (Fedora/RHEL):

sudo dnf install -y cmake gcc gcc-c++ python3-devel

macOS:

# Install Xcode Command Line Tools
xcode-select --install

# Install cmake via Homebrew (optional, if not using system cmake)
brew install cmake

Windows:

Step 1: Clone the Repository

git clone https://github.com/openptv/openptv2.git
cd openptv2

Step 2: Install Dependencies and Build

Using uv (recommended):

# Sync all dependencies and build the package
uv sync --extra dev

Using pip:

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install build dependencies
pip install scikit-build-core cython numpy

# Install in development mode
pip install -e ".[dev]"

The default editable install builds the Cython 3 pure-Python modules:

uv pip install -e .

Step 3: Verify Build

Always run verification inside your virtual environment to ensure the compiled libraries are correctly found:

# Test imports
uv run python -c "import openptv2; print(f'openptv2 version: {openptv2.__version__}')"
uv run python -c "from openptv2 import Tracker; print('Tracker imported successfully')"

# Run core tests
uv run pytest tests/unit/ -v

GUI Dependencies

The [gui] extra includes:

  • traits, traitsui (Enthought framework)
  • enable, chaco (visualization)
  • PySide6 (Qt bindings)
  • scikit-image, pandas, matplotlib (analysis)

Installing from Binary Wheels

Pre-built manylinux wheels are available for Linux:

# Using pip
pip install openptv2

# Using uv
uv pip install openptv2

The wheels are compatible with glibc 2.17+ (CentOS 7, Ubuntu 14.04, Debian 8, etc.)


Building Binary Wheels from Source

See BUILDING_BINARY_WHEELS.md for detailed instructions on building portable binary wheels using cibuildwheel.


Troubleshooting Installation

Common Issues

1. "CMake not found"

# Install CMake
# Linux: sudo apt-get install cmake
# macOS: brew install cmake
# Windows: Download from https://cmake.org/download/

2. "C compiler not found"

# Linux: sudo apt-get install build-essential
# macOS: xcode-select --install
# Windows: Install MSVC Build Tools

3. "Cython not found"

pip install cython>=3.0.0

4. "NumPy version mismatch"

pip install numpy>=2.0.0

5. "optv module not found" (after cloning)

# The optv package is built by CMake - you need to build the package
uv sync --extra dev
# or
pip install -e ".[dev]"

Usage

Basic Tracking

import openptv2
from openptv2 import Tracker, detect_targets

# Load images
from skimage import io
images = [io.imread(f"cam1_{i:04d}.tif") for i in range(100)]

# Detect particles
targets = [detect_targets(img) for img in images]

# Track particles
tracker = Tracker()
tracks = tracker.track([t.coordinates for t in targets])

print(f"Found {len(tracks)} tracks")

Runtime

import openptv2

print(openptv2.get_runtime_info())
# {'engine': 'cython3-pure-python', 'compiled': True/False, 'package': 'openptv2'}

GUI

Launch the graphical interface using the unified console scripts. Ensure your virtual environment is activated (source .venv/bin/activate) or prefix the commands with uv run:

# Launch the GUI using the standard openptv2-gui or shorter pyptv_gui shortcut
uv run pyptv_gui

# Launch the GUI in the single-engine runtime
uv run pyptv_gui --workdir=./test_data/test_cavity

Batch Processing

Run high-throughput processing sequences using command-line batch utilities (ensure your virtual environment is activated or use uv run):

# Run batch processing with the single runtime
uv run pyptv_batch --workdir=./test_data/test_cavity --first=10000 --last=10005

# Run with legacy positional arguments (for backward compatibility)
uv run pyptv_batch ./test_data/test_cavity/parameters_Run1.yaml 10000 10004

# Parallel batch processing (distributes frame chunks to multiple cores)
uv run python -m openptv2.batch.pyptv_batch_parallel test_data/test_cavity/parameters_Run1.yaml 10000 10004 4 --mode sequence

### Parallel Processing Config
OpenPTV2 supports multi-core parallel processing during image preprocessing and target detection (Approach C). This is highly effective for accelerating execution on multi-core systems.

* **GUI Configuration**: Open the **Main Parameters** dialog, navigate to the **Sequence** tab, check the **Parallel Pre-processing** box, and set the **Number of workers** (e.g., `4` or `0` for automatic core detection).
* **CLI/Environment Configuration**: Set environment variables before running any tracking or batch sequence:
  ```bash
  export OPENPTV_PARALLEL_PREPROCESS=True
  export OPENPTV_NUM_WORKERS=4  # Set worker processes (omitting uses all CPU cores)

Command-line Shortcuts and Running Without uv

You can run these command-line tools without prefixing them with uv run using any of the following approaches:

1. Activate the Virtual Environment (Standard Workflow)

By activating the project's virtual environment, the environment's bin/ directory is added to your shell's PATH. This registers all entry points (like pyptv_gui, pyptv, pyptv_batch) directly in your terminal:

source .venv/bin/activate

# Now run directly without uv
pyptv_gui -w ./test_data/test_cavity

2. Execute via Direct Path

If you do not wish to activate the virtual environment, you can run the built executable directly from the local .venv folder:

./.venv/bin/pyptv_gui -w ./test_data/test_cavity

3. Define Shell Aliases (Global Access)

To run these shortcuts cleanly from any directory without manual paths, add alias entries to your shell profile (e.g., ~/.bashrc or ~/.zshrc):

# Add these lines to ~/.bashrc or ~/.zshrc
alias pyptv_gui='/home/user/Documents/GitHub/openptv2/.venv/bin/pyptv_gui'
alias pyptv_batch='/home/user/Documents/GitHub/openptv2/.venv/bin/pyptv_batch'
# Reload shell profile
source ~/.bashrc

# Now launch cleanly from any folder
pyptv_gui -w ./test_data/test_cavity

Single Runtime Behavior

OpenPTV2 now ships a single runtime:

  1. One codebase: algorithms/*.py is the only implementation path.
  2. Two execution modes: the same modules run interpreted during development and compiled when built through Cython 3.
  3. No engine switching: OPENPTV_ENGINE, set_engine(), and optv dispatching are no longer part of the runtime model.

Short vs. Long Options

Both styles are fully supported across all command-line scripts. Choose based on your context:

  • Short Options (-e, -w, -f, -l): Best for manual terminal use, quick debugging, and live interactive typing.
  • Long Options (--engine, --workdir, --first, --last): Best for automation scripts, documentation, and config files to maximize readability.

Documentation


Repository Structure

openptv2/
├── algorithms/        # Python/Numba fallback engine
│   ├── calibration.py
│   ├── correspondences.py
│   ├── image_processing.py
│   ├── orientation.py
│   ├── parameters.py
│   ├── segmentation.py
│   ├── track.py
│   └── ...
├── bindings/          # Cython bindings source
│   ├── optv/          # Cython .pyx, .pxd files
│   ├── tests/         # Binding tests
│   └── pyproject.toml # scikit-build-core config
├── gui/               # TraitsUI GUI application
│   ├── pyptv/         # Main GUI package
│   ├── plugins/       # GUI plugins
│   └── tests/         # GUI tests
├── lib/               # C core library
│   ├── include/       # C headers
│   ├── src/           # C source files
│   ├── tests/         # C library tests
│   └── CMakeLists.txt
├── openptv2/          # Main Python package
│   ├── __init__.py
│   ├── calibration.py
│   ├── correspondence.py
│   ├── engine.py      # Engine selector
│   ├── tracker.py
│   └── ...
├── tests/             # Integration tests
│   ├── engine_comparison/
│   ├── fixtures/
│   └── integration/
├── docs/              # Documentation
│   ├── algorithms/
│   ├── developer_guide/
│   ├── sphinx/
│   └── tutorials/
├── scripts/           # Build helpers
├── CMakeLists.txt     # Root CMake build config
├── pyproject.toml     # Python project config
└── README.md

Engine Comparison

Feature optv (C/Cython) python (Numba)
Speed Fastest Fast (JIT compiled)
Debugging Harder Easy
Visualization Limited Full
Use case Production Development

Testing

# All tests
pytest

# C library tests
cd lib && mkdir build && cd build && cmake .. && ctest

# Engine comparison
pytest tests/engine_comparison/ --validate-engine

# GUI tests (headless)
pytest gui/tests/ --headless

# Integration tests
pytest tests/integration/ -v

Migration from optv/pyptv

openptv2 maintains backward compatibility:

# Old optv code (still works after installation)
from optv.tracking_framebuf import Target
from optv.tracker import Tracker

# New openptv2 code
from openptv2 import Target, Tracker

# Both work identically

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests: pytest
  5. Submit a pull request

Development Workflow

# Set up development environment
uv sync --extra dev

# Make changes to source code

# Run tests
pytest tests/ -v

# Build documentation (optional)
cd docs && make html

License

LGPL-3.0 or later. See LICENSE for details.


Acknowledgments

openptv2 combines work from:


Contact


Helper Scripts

The project includes scripts for building and testing:

Script Purpose
scripts/build_wheel.sh Build binary wheel from source
scripts/install_wheel.sh Install wheel in clean test environment
scripts/run_tests.sh Run test suite in test environment
scripts/Dockerfile.slim Slim Docker image for testing

See BUILDING_BINARY_WHEELS.md for detailed usage.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openptv2-0.3.0.tar.gz (5.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openptv2-0.3.0-cp313-cp313-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.13Windows x86-64

openptv2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

openptv2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

openptv2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (8.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

openptv2-0.3.0-cp312-cp312-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.12Windows x86-64

openptv2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

openptv2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

openptv2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (9.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

openptv2-0.3.0-cp311-cp311-win_amd64.whl (8.1 MB view details)

Uploaded CPython 3.11Windows x86-64

openptv2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

openptv2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

openptv2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (8.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file openptv2-0.3.0.tar.gz.

File metadata

  • Download URL: openptv2-0.3.0.tar.gz
  • Upload date:
  • Size: 5.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openptv2-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5bc8821a3e66902c42609926237af6bed126e8ee9a1659af34168eae7ab6d5c7
MD5 d7e5441cd0fdc41af0b8a4129c34d314
BLAKE2b-256 70fc50bff47cb002736760f1a21b57fd401d91395a031c111b7ecec145cc5098

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0.tar.gz:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openptv2-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1427a1720b2fac0084fb91670ef4249f5feed4ad9774954a433dfd68f8cec004
MD5 c25b26075690361c7f548c7cf918e4b0
BLAKE2b-256 0d7487167732ec115bee9db6da91b12762be5810ba8c057a9d2f918783ad6083

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp313-cp313-win_amd64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c0b5379cb94ec7958a62ce6c01b32b30e233feeb409568cf90be7858a3cbd47
MD5 9500e7b912d87edf2e131c470c22cd4a
BLAKE2b-256 ee3c7f54094bf055d6850af9dfd125dbcc2f0cffc8d84c2b5bc16129e38fbc05

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 946bb92f4d009c8f6e13ff7f2760de0a25a3526b239546bee67f3fc715d3b6f3
MD5 5245b1108a8c41862dc3751324c96a23
BLAKE2b-256 992c9e7411c63f6189c0f48076ad9e0630b0b614d19682a5eeb8bc81361e725c

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 512327a12456e343d13c8211124547e3f48e9047d2b92bb109d7934509eb3d48
MD5 df8be691f3b52a627c4860ed02153355
BLAKE2b-256 611afef44b0bd82c2493c016e20c354f6dd3aabe9f4e0e119f4fa14d6bf1a524

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openptv2-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a06d7fcbc370a30ee95f9617233db8b634731be51ea344911cbc58f3a7f73200
MD5 c3efcba3735437353f90ec45bdf2bd2e
BLAKE2b-256 f25e1fdb28a568060185196339a5b791174789bd93932f5bb4e1d26655fe61c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp312-cp312-win_amd64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c255bfe3a3c61b1efe5fc681ed2ad9d51bb1b9897f2430eaf5a6f46012d35793
MD5 b83ca153f2c4dce0c3c3baa0f051c220
BLAKE2b-256 8256e5e52c83412fe9d7a454a123dfff170df587423689958f47ac1b0c0dd461

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa08f589b76b5e879d9a3e7068aaac43063fc75755a5d8b299cb1bdf12564bd2
MD5 8b4406f728b1a44816073dc700c19534
BLAKE2b-256 51407b747b18faac6c23303a9e340f392dc352922f8116a06d03e896623b3dc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78f1fae098cf1f8c329e213d08a86d30ec43d5c5b7d0157e9935d30933db826d
MD5 1a61f4c8301f1891ad96ff1a5a89ecbe
BLAKE2b-256 54dfc1ce528aa64c66e2c3400eb98ea5601aa3008a70d9a5df5fdcfcb02a5e62

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openptv2-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a7bda84d4124bcddb1a520ee452804652e8dacba8b6402f574a60db74613f951
MD5 3f8cbb54979f1ed23885bc617970ebbe
BLAKE2b-256 6d2e3bd8beacc02affc11ebc502401d80a3166ae9d534f907b684b6c3ebc9dae

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d6be1ebb1eaf893ce8439565b989d0cf0cb212474fa980c38aa0d051ca278078
MD5 73fc7946dc0fe14224c10d1a4761a6b3
BLAKE2b-256 1752c915a7f5c31deadbae07d5e6f2c72d86231fa237e9bbc0cdf7bfcc7b5f2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61d72ad77e15226264f549f7bafa1b4ee6e67c013c385d2e9ebf21fe59f9eb3b
MD5 89928df4a300979f7335208e0253aade
BLAKE2b-256 1267854f24b467b641a84f9ee6dbb631c4137da3abe2552158ad2e6567f1df1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openptv2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e58c49116bc6506d1e3c6f14640cb5c75260e102abde55ee599d19511c72efa2
MD5 680b5834a78d1753ca6b5a95448443a1
BLAKE2b-256 6966d01280ad666f5f7fc86b1681e4d62cf2e28d384196d718239115c0dd97b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yml on alexlib/openptv2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page