Hardware Abstraction Layer for edge AI with zero-copy tensors, image processing, and YOLO decoding
Project description
edgefirst-hal
Hardware-accelerated image processing, zero-copy tensors, and YOLO decoding for edge AI inference pipelines. Built in Rust with Python bindings via PyO3.
Installation
pip install edgefirst-hal
Pre-built wheels are available for Linux (x86_64, aarch64), macOS, and Windows. No Rust toolchain required.
Python 3.11+ wheels use the improved stable ABI for zero-copy buffer protocol support. Python 3.8–3.10 wheels use a compatible fallback. Pip selects the best wheel automatically.
Quick Start
import edgefirst_hal as ef
# Load a source image
src = ef.Tensor.load("photo.jpg", ef.PixelFormat.Rgb)
# Create an image processor (auto-selects best backend: GPU > G2D > CPU)
processor = ef.ImageProcessor()
# Allocate a GPU-optimal output buffer — always use create_image() for
# destinations passed to convert(), so the processor can select the best
# memory type (DMA-buf, PBO, or system memory) for zero-copy GPU paths.
dst = processor.create_image(640, 640, ef.PixelFormat.Rgb)
# Convert with letterbox resize (preserves aspect ratio)
processor.convert(src, dst)
# Access pixel data as a numpy array
import numpy as np
pixels = np.frombuffer(dst.map(), dtype=np.uint8).reshape(dst.shape())
Key Features
- Zero-copy tensors — DMA-BUF, POSIX shared memory, and PBO-backed buffers with automatic fallback to system memory
- Hardware-accelerated image processing — OpenGL, NXP G2D, and optimized CPU backends with automatic selection
- Letterbox resize — aspect-ratio-preserving resize with configurable padding color, rotation, and flip
- Int8 output —
create_image(..., dtype="int8")for direct signed int8 tensor output with GPU-accelerated XOR bias - YOLO decoding — YOLOv5, YOLOv8, YOLO11, and YOLO26 detection and instance segmentation (including end-to-end models)
- Object tracking — ByteTrack multi-object tracker with Kalman filtering
- Fully typed — ships with
.pyistubs for IDE autocompletion and type checking with mypy / pyright
Image Processing
import edgefirst_hal as ef
processor = ef.ImageProcessor()
src = ef.Tensor.load("frame.jpg", ef.PixelFormat.Rgb)
# Letterbox resize to model input size
dst = processor.create_image(640, 640, ef.PixelFormat.Rgb)
processor.convert(src, dst)
# With rotation and horizontal flip
processor.convert(src, dst, rotation=ef.Rotation.Rotate90, flip=ef.Flip.Horizontal)
# Crop source region
processor.convert(src, dst, src_crop=ef.Rect(100, 100, 400, 400))
# Int8 output for quantized models
dst_i8 = processor.create_image(640, 640, ef.PixelFormat.Rgb, dtype="int8")
processor.convert(src, dst_i8)
Zero-Copy External Buffer (Linux)
When integrating with an NPU delegate that owns DMA-BUF buffers, render
directly into the delegate's buffer to eliminate a memcpy:
import edgefirst_hal as ef
processor = ef.ImageProcessor()
src = ef.Tensor.load("frame.jpg", ef.PixelFormat.Rgb)
# Render directly into the delegate's DMA-BUF — zero copies
dst = processor.import_image(fd=vx_fd, width=640, height=640, format=ef.PixelFormat.Rgb)
processor.convert(src, dst)
# Reverse: HAL allocates, consumer imports the fd
hal_dst = processor.create_image(640, 640, ef.PixelFormat.Rgb)
fd = hal_dst.dmabuf_clone() # Raises if not DMA-backed
delegate.register(fd)
You can also attach format metadata to any raw tensor created via from_fd():
t = ef.Tensor.from_fd(some_fd, [480, 640, 3])
t.set_format(ef.PixelFormat.Rgb)
processor.convert(src, t)
Performance tip: When rotating through a pool of DMA-BUFs (e.g. 2-3
from an NPU delegate), create the Tensor wrappers once at init and
reuse them across frames. This avoids EGL image cache misses (~100-300us
each on Vivante GPUs).
YOLO Decoding
import edgefirst_hal as ef
# Configure decoder from model metadata
decoder = ef.Decoder(
{"detection": {"shape": [1, 84, 8400], "dtype": "float32"}},
score_threshold=0.5,
iou_threshold=0.45,
)
# Decode model outputs → (boxes, scores, class_ids)
boxes, scores, classes = decoder.decode([output_tensor])
Object Tracking
ByteTrack is a multi-object tracker based on ByteTrack with Kalman filtering.
It assigns consistent track IDs across frames.
import edgefirst_hal as ef
tracker = ef.ByteTrack(
high_conf=0.7, # High-confidence detection threshold
iou=0.25, # IoU threshold for association
update=0.25, # Update/low-confidence threshold
lifespan_ns=500_000_000, # Track lifespan without detection (nanoseconds)
)
# Decode and track in one call (returns boxes, scores, classes, masks, track_infos)
boxes, scores, classes, masks, tracks = decoder.decode_tracked(
tracker, timestamp_ns, [output_tensor]
)
# masks is empty for detection-only models
# Or query currently active tracks
active = tracker.get_active_tracks()
Segmentation Mask Rendering
draw_decoded_masks()
Draw pre-decoded masks onto a destination image:
processor.draw_decoded_masks(
dst,
bbox, # numpy array [N, 4]
scores, # numpy array [N]
classes, # numpy array [N]
seg=[], # list of segmentation arrays (optional)
background=None, # optional background tensor to blit before drawing
opacity=1.0, # mask alpha scale (0.0 – 1.0)
)
draw_masks()
Decode model outputs and draw segmentation masks in a single call. Masks never
leave Rust, eliminating the Python round-trip overhead of decode() +
draw_decoded_masks().
Without a tracker, returns (boxes, scores, classes). With a tracker, returns
(boxes, scores, classes, track_infos).
import edgefirst_hal as ef
processor = ef.ImageProcessor()
tracker = ef.ByteTrack()
# Without tracking
boxes, scores, classes = processor.draw_masks(decoder, outputs, dst)
# With overlay parameters
boxes, scores, classes = processor.draw_masks(
decoder, outputs, dst,
background=bg_tensor, # blit bg_tensor into dst before masks
opacity=0.7, # semi-transparent masks
)
# With tracking (requires tracker= and timestamp=)
import time
ts = time.monotonic_ns()
boxes, scores, classes, tracks = processor.draw_masks(
decoder, outputs, dst,
tracker=tracker,
timestamp=ts,
)
Platform Support
| Platform | GPU Acceleration | Memory Types |
|---|---|---|
| Linux (NXP i.MX8/i.MX95) | OpenGL + G2D | DMA-buf, SHM, PBO, Mem |
| Linux (x86_64, other ARM) | OpenGL | SHM, PBO, Mem |
| macOS / Windows | CPU only | Mem |
Hardware acceleration is used automatically when available. All platforms fall back to CPU.
Part of the EdgeFirst Ecosystem
edgefirst-hal is the runtime inference library in the
EdgeFirst platform for deploying AI at the edge.
- EdgeFirst Studio — label, train, and deploy models for edge devices
- Rust crates — use the same library directly from Rust or C
- GitHub — source code, architecture docs, benchmarks, and contribution guide
License
Apache-2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file edgefirst_hal-0.19.0.tar.gz.
File metadata
- Download URL: edgefirst_hal-0.19.0.tar.gz
- Upload date:
- Size: 527.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0dbac71bf8b1430133bcb85bb08620e161b0910a335deda34b78932bb68a0ac
|
|
| MD5 |
b8b8b3cb49e020ae8ed7bb533ea8f4ec
|
|
| BLAKE2b-256 |
59a30882ad7fa950068c10e2b37a6cda22e394f024113b6622eb390799b227a9
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0.tar.gz:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0.tar.gz -
Subject digest:
c0dbac71bf8b1430133bcb85bb08620e161b0910a335deda34b78932bb68a0ac - Sigstore transparency entry: 1447089574
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp311-abi3-win_amd64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp311-abi3-win_amd64.whl
- Upload date:
- Size: 4.9 MB
- Tags: CPython 3.11+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbec7f762f03e07e3ad33eff1b78672bbb10fd6bef11b906a60a597de2841696
|
|
| MD5 |
729e6893b9fd0e0ccccb0765230bda3e
|
|
| BLAKE2b-256 |
9fadfb222f38805d0af4f1436491c3b36a82908b5664fa5cc631add9bc5be096
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp311-abi3-win_amd64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp311-abi3-win_amd64.whl -
Subject digest:
bbec7f762f03e07e3ad33eff1b78672bbb10fd6bef11b906a60a597de2841696 - Sigstore transparency entry: 1447090084
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.4 MB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
026bc0a221add1864c06b8e15b2543e63897c7d3513ae9b4879e56661d4122a5
|
|
| MD5 |
d06328c5ceba200d5581ca370cd3a65d
|
|
| BLAKE2b-256 |
fa447e97c8f07840fa7b3c408abed2c28423615f99b33f346f1755fef199e077
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
026bc0a221add1864c06b8e15b2543e63897c7d3513ae9b4879e56661d4122a5 - Sigstore transparency entry: 1447089793
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.3 MB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
915e697ec776f8b465f9fb24520d908c99f5ed2975cdbb175a9b3ea83bcede08
|
|
| MD5 |
e740d07c6cb00add7c920dd3cb53b2b9
|
|
| BLAKE2b-256 |
47297f0137111045919d269a67db0812190f0ac0a450470eb85cbaa8e8272720
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
915e697ec776f8b465f9fb24520d908c99f5ed2975cdbb175a9b3ea83bcede08 - Sigstore transparency entry: 1447089642
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cecc1c39d047b3f6bb1086523df623a78d1ab682c698da885b0071fb06980f6
|
|
| MD5 |
4742893494e41168e07377acc559e9ee
|
|
| BLAKE2b-256 |
77dac0c496e459fd3ba8e6a54dcbd21385f57d6b0f3b7a114c670388646329b1
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp311-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp311-abi3-macosx_11_0_arm64.whl -
Subject digest:
3cecc1c39d047b3f6bb1086523df623a78d1ab682c698da885b0071fb06980f6 - Sigstore transparency entry: 1447090211
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 4.9 MB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c941c67065358746671fd39932f027a910318ba193167ab1f8d01acc3b80650
|
|
| MD5 |
b74bf3026daa9a299bd637cc2048fa3f
|
|
| BLAKE2b-256 |
a1cbdc707e8f48a9bca86360badeeccdad65563447088a6d1fffeda0bb74460c
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp38-abi3-win_amd64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp38-abi3-win_amd64.whl -
Subject digest:
8c941c67065358746671fd39932f027a910318ba193167ab1f8d01acc3b80650 - Sigstore transparency entry: 1447089890
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.4 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c9356de64377f948393b432d817e9e91cb9014741c1c56170682ca45650df0d
|
|
| MD5 |
74629c3a9aae10f98aa736f2befe9ff2
|
|
| BLAKE2b-256 |
8f324d810da2f59fb02f9f75fc5f9542b7a163a3f04344a2b19d051bfee1fb6e
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
6c9356de64377f948393b432d817e9e91cb9014741c1c56170682ca45650df0d - Sigstore transparency entry: 1447089702
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.3 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c753bc1fecbcadc06c47d8d890628aafeee66db831d779982b871de55082223f
|
|
| MD5 |
c2fb2d2d169343db40342d3e1e520570
|
|
| BLAKE2b-256 |
cb6e4f6e7be5c97384b8d04576d0501db41390c3efb76c0bdd0df37450e0277f
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
c753bc1fecbcadc06c47d8d890628aafeee66db831d779982b871de55082223f - Sigstore transparency entry: 1447090153
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file edgefirst_hal-0.19.0-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: edgefirst_hal-0.19.0-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9125dbe7815bf73dd45320c8fd75704067acde0fd5581da682c3b7de55d97df
|
|
| MD5 |
8c94419e7224ef78a0fd10797d96efdb
|
|
| BLAKE2b-256 |
a09197c7b32935c963cca94a4746fc4dfb691b76ae8aeda93a6783b64bded950
|
Provenance
The following attestation bundles were made for edgefirst_hal-0.19.0-cp38-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on EdgeFirstAI/hal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edgefirst_hal-0.19.0-cp38-abi3-macosx_11_0_arm64.whl -
Subject digest:
b9125dbe7815bf73dd45320c8fd75704067acde0fd5581da682c3b7de55d97df - Sigstore transparency entry: 1447089983
- Sigstore integration time:
-
Permalink:
EdgeFirstAI/hal@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Branch / Tag:
refs/tags/v0.19.0 - Owner: https://github.com/EdgeFirstAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8217cd06b5aad2bd6a01b47d59f4ba74a9790f5b -
Trigger Event:
push
-
Statement type: