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.


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.2.1.tar.gz (5.4 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.2.1-cp313-cp313-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.13Windows x86-64

openptv2-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl (25.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

openptv2-0.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.2 MB view details)

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

openptv2-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

openptv2-0.2.1-cp312-cp312-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.12Windows x86-64

openptv2-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl (25.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

openptv2-0.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.3 MB view details)

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

openptv2-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

openptv2-0.2.1-cp311-cp311-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.11Windows x86-64

openptv2-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

openptv2-0.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (25.3 MB view details)

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

openptv2-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: openptv2-0.2.1.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openptv2-0.2.1.tar.gz
Algorithm Hash digest
SHA256 12a77b608b09129439253205278cc4fc54c17629c050772dbd3f753eca3da16f
MD5 59a7a596ba834b7c6688f0c87f308feb
BLAKE2b-256 77d86e7b89243561d5cf279b5009adbf2a4ffbd739c5d1e69244014b1cce4934

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1.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.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openptv2-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7bdc64dc5cc141694ec7f7eb37bcc20b7e3363839bf6fb85e9b10dd59bcd55de
MD5 6a9009f95cbaad9b2ad189d81775a281
BLAKE2b-256 fac49dda0c7b6e6e7778d2c7573745ccf533643776ec8f8c53a8947dea75f893

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 42f331eb684e2f0741390582db0103398eb3a4381b6c84d27626319c475db39b
MD5 e4aefc6c53efcb5bb63e7b2697fba115
BLAKE2b-256 0f024472f2bd000111196222b9241f90971f7dbdf3171409d9413cff6142064d

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9d181d1bb2924852067a0429316fdf11386d5e4423b41007d7940cf733d80e5e
MD5 696c2eb8b3b93806248afeac9cf3ed91
BLAKE2b-256 73f3f4a1519c01be20d4de2d9e8c5e81959f89a3cf54c703bf9c9b5eb71ebfba

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9c7738c9d284e19f4cc1233a52ec0b5cb7821ab8de4b5b2a0b449546aa99be5
MD5 a7392dd3cf1f9e9e9ead8f599e73f911
BLAKE2b-256 2ab093fed5805dc4f8a3a91e0f906eb295b2fc24898d46d069ad16e63e46f8bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openptv2-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 641169bfbaa080fc785740cacb5f8e89d4fa6266e8382a2521e609564c162eaf
MD5 9f0f051d07d6716ec44188352955bfd5
BLAKE2b-256 2b36b9f699f7e0235e5703fd3dca2722b90ea91489e29783f73b85a866653838

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6ddcab273988c3fdfd21957cf67c4aa19a7edbb995d424166e34dbf152aeabc5
MD5 736123ebd0efb250b31ead76e5f35831
BLAKE2b-256 de1438ec58ef25f9247326b307112911e43a6c8863ded60442552f60cce51996

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 604d9f4eadfca752d5091bc271170d37fafc615279126dc55c0f4e5aebc7a955
MD5 8f82c16ef07ab56ef9c32482fe13e158
BLAKE2b-256 1b0241c26cfa2d6b0d82ab606ccd39ca29cdec8f7cbbc9b955db9d857fbdc01a

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a986b35aa178752c8e60959a2b856ceaca905c060a6b86562f50c3963e1c7a3
MD5 babcdde03b10b918b2c0fb60018169c1
BLAKE2b-256 27dad6a971e67adc6a1d25379d641d2cd5517589a2b4f7b836d6dc25391d1e93

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: openptv2-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openptv2-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 520874a20f288e893d2fbcb2e9c63420bf0ff78d9531cd21a9fcaf87dfdfefd3
MD5 a52bd79049db36058f454cc2922fa418
BLAKE2b-256 9abd921cbe83098ec69d46310f46e52732ea6cbd17908d1f124f6110dbb914b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 89f73bf2ee2595050121bdb8f02f628514e0b574cfa9d4d94235bd461690626f
MD5 f5d0dc6d9661c34bb240bb0908bf06f0
BLAKE2b-256 b2ccb6c3fc9e74e7f50bc64ec3f3692a5aa7644cc27b99ea043f9b612cd6ccf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb345c05eae7603bf9c2c90a5d64126548441ec96bdfc442a2408fce3082250a
MD5 4fed470f0c839761d2f0e6e22d353354
BLAKE2b-256 7af3fd84b520e0868cdfbcc0057003aeb216c9232793a1228840e2ff592e4751

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openptv2-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d449b47acb2b6bf6c43c7b74746085cbb04cac66efa114ea7cfbaa09ed91278
MD5 4b819bd9b0b6b5c6c5a0a3c95aacde20
BLAKE2b-256 ef2699faf685ae3ab76ab4c26eb6c6cb988d8b46b46ee1b5bad6d53a24a6c8fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for openptv2-0.2.1-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