Python bindings for the VVCM forward-kinematics and simulation library.
Project description
vvcm-rs
Rust implementation for kinematics of multi-robot transporting systems with a deformable sheet using the Virtual Variable Cables Model (VVCM).
vvcm-rs is implemented in Rust, but it is not limited to Rust projects. The same VVCM forward-kinematics and simulation library is available to Rust, JavaScript/TypeScript, C++, and Python users through the native Rust API, WebAssembly npm packages, C ABI/C++17 wrapper headers, and Python bindings.
If you plan to modify the codebase, read CONTRIBUTING.md first for workflow, structure, and release expectations.
Citation
If you use the forward kinematics algorithm, please cite:
@article{ma2026stable,
title = {Stable Kinematics for Multi-Robot Collaborative Transporting System with a Deformable Sheet},
author = {Ma, Wenyao and Hu, Jiawei and Li, Jiamao and Yi, Jingang and Xiong, Zhenhua},
year = 2026,
journal = {IEEE Transactions on Robotics},
volume = {42},
pages = {837-853},
doi = {10.1109/TRO.2026.3653870}
}
For the original VVCM model, please cite:
@article{hu2022multirobot,
title = {Multi-Robot Object Transport Motion Planning With a Deformable Sheet},
author = {Hu, Jiawei and Liu, Wenhang and Zhang, Heng and Yi, Jingang and Xiong, Zhenhua},
year = 2022,
journal = {IEEE Robotics and Automation Letters},
volume = {7},
number = {4},
pages = {9350--9357}
}
Features
This package includes vvcm-rs for Rust, JavaScript/TypeScript, Python, and C/C++ users with:
- A Rust VVCM forward-kinematics API built around
Point2,Point3,RobotFormation,SheetShape, andFkSolution. - Stable-solution search with taut-cable enumeration, candidate solving, and stable-branch filtering.
- Velocity-driven and manual simulation wrappers.
- WebAssembly bindings published to npm as
@morningfrog/vvcm-rsand the unscoped mirrorvvcm-rs, with hand-written TypeScript declarations. - Python bindings published as
vvcm-rs/vvcm_rswith typed package metadata. - C ABI and C++17 wrapper headers for native consumers.
- Distribution through crates.io, npm, PyPI, GitHub Releases, and vcpkg overlays.
Module Overview
fk: forward kinematics engine state and stable-solution entry point.simulation: velocity-driven simulation wrapper.manual_simulation: wrapper for querying a new stable solution from an externally provided robot formation.types: public domain types used by the Rust API.ffi: C ABI implementation behind the C/C++ headers.wasm: WebAssembly bindings compiled with thewasmfeature for npm packages.error: crate error type.
Installation
For source-based installation or local development, read CONTRIBUTING.md first.
Rust
Use the crate from crates.io:
cargo add vvcm-rs
Python
Install the package from PyPI:
python -m pip install vvcm-rs
Prebuilt PyPI wheels are published for CPython 3.10 through 3.14 on Windows x64, Linux x64, and macOS arm64. Python 3.9 and other platforms may fall back to building from the source distribution, which requires a local Rust toolchain and Python build tooling.
JavaScript and TypeScript
Install the WebAssembly package from npm:
npm install @morningfrog/vvcm-rs
The unscoped mirror package is also published for users who prefer the shorter install name:
npm install vvcm-rs
The npm packages target modern bundlers such as Vite, Webpack, and Rollup. They include index.d.ts TypeScript declarations and expose ready-to-use named exports from the package entry point.
C and C++
Install the prebuilt package from the GitHub release archive:
vcpkg install vvcm-rs --overlay-ports=<path-to-unzipped-release>/ports --triplet <platform-triplet>
The prebuilt overlay ships native packages for Windows x64, Linux x64, and macOS arm64. It does not require Rust. Use the triplet that matches your platform, such as x64-windows, x64-linux, or arm64-osx.
If you want to build from the repository source instead, use the repo-local overlay port. That overlay builds the native Rust library with Cargo, so Rust must be installed on the machine running vcpkg. Python is only needed when you build the Python extension feature:
vcpkg install vvcm-rs --overlay-ports=<path-to-vvcm-rs>/vcpkg/ports
Then consume the installed CMake package:
find_package(vvcm-rs CONFIG REQUIRED)
target_link_libraries(app PRIVATE vvcm_rs::vvcm_rs)
Usage
The language-specific snippets below assume installation is already complete. Choose the section that matches your project.
The sample outputs below round floating-point values to three decimals; small platform differences are normal.
Rust Usage
After adding vvcm-rs from crates.io, the Rust API looks like this:
use vvcm_rs::{Point2, RobotFormation, SheetShape, VvcmError, VvcmFk};
fn main() -> Result<(), VvcmError> {
// Robot formation: each Point2 is a robot node position on the world-coordinate XY plane, in millimeters.
let formation = RobotFormation::new(vec![
Point2::new(213.7, 122.7),
Point2::new(804.6, 37.2),
Point2::new(904.0, 550.0),
Point2::new(439.3, 715.9),
])?;
// Unfolded sheet: each Point2 is a vertex in the sheet's local coordinate frame, in millimeters.
let sheet = SheetShape::new(vec![
Point2::new(-316.1, -421.9),
Point2::new(803.4, -384.1),
Point2::new(746.1, 712.8),
Point2::new(-367.3, 664.2),
])?;
// Create the FK solver for four robots with a 1000 mm hold height.
let mut fk = VvcmFk::new(4, 1000.0, sheet)?;
// Ask the solver to enumerate every candidate equilibrium for this formation.
let solutions = fk.update_stable_solutions(formation)?;
// Report the total branch count and the subset that is stable.
println!("all solutions: {}", solutions.all_count());
println!("stable solutions: {}", solutions.stable_count());
// Print each stable branch with object pose, virtual object point, and taut cables.
for (index, solution) in solutions.stable().enumerate() {
println!(
"#{index}: Po=({:.3}, {:.3}, {:.3}), Vo=({:.3}, {:.3}), taut={:?}",
solution.po.x,
solution.po.y,
solution.po.z,
solution.vo.x,
solution.vo.y,
solution.taut_cables,
);
}
Ok(())
}
Expected output:
all solutions: 3
stable solutions: 2
#0: Po=(568.841, 324.728, 336.736), Vo=(238.633, 125.028), taut=[0, 1, 2]
#1: Po=(557.919, 341.232, 337.247), Vo=(208.794, 152.532), taut=[0, 2, 3]
JavaScript and TypeScript Usage
After installing @morningfrog/vvcm-rs or vvcm-rs from npm, import the WebAssembly module and use the same solver concepts as the native APIs. Coordinate inputs accept [x, y] tuples or { x, y } objects.
import { VvcmFk } from "@morningfrog/vvcm-rs";
// Robot formation: each tuple is a robot node position on the world-coordinate XY plane, in millimeters.
const formation = [
[213.7, 122.7],
[804.6, 37.2],
[904.0, 550.0],
[439.3, 715.9],
] as const;
// Unfolded sheet: each tuple is a vertex in the sheet's local coordinate frame, in millimeters.
const sheet = [
[-316.1, -421.9],
[803.4, -384.1],
[746.1, 712.8],
[-367.3, 664.2],
] as const;
// Create the FK solver for four robots with a 1000 mm hold height.
const fk = new VvcmFk(4, 1000, sheet);
// Solve all candidate equilibria for the current formation.
const solutions = fk.updateStableSolutions(formation);
// Report the total branch count and the subset that is stable.
console.log(`all solutions: ${solutions.allCount}`);
console.log(`stable solutions: ${solutions.stableCount}`);
// Print each stable branch with object pose, virtual object point, and taut cables.
solutions.solutions
.filter((solution) => solution.stable)
.forEach((solution, index) => {
const po = solution.po;
const vo = solution.vo;
console.log(
`#${index}: Po=(${po.x.toFixed(3)}, ${po.y.toFixed(3)}, ${po.z.toFixed(3)}), ` +
`Vo=(${vo.x.toFixed(3)}, ${vo.y.toFixed(3)}), taut=${JSON.stringify(solution.tautCables)}`,
);
});
fk.free();
Expected output:
all solutions: 3
stable solutions: 2
#0: Po=(568.841, 324.728, 336.736), Vo=(238.633, 125.028), taut=[0,1,2]
#1: Po=(557.919, 341.232, 337.247), Vo=(208.794, 152.532), taut=[0,2,3]
C++ Usage
After installing the vcpkg package or a release archive, consume the installed CMake package and headers directly. The package exports the raw C ABI in vvcm_rs.h and the C++17 RAII wrapper in vvcm_rs.hpp.
find_package(vvcm-rs CONFIG REQUIRED)
target_link_libraries(app PRIVATE vvcm_rs::vvcm_rs)
#include <vvcm_rs.hpp>
#include <cstddef>
#include <iomanip>
#include <iostream>
#include <vector>
int main() {
using namespace vvcm_rs;
// Robot formation: each Point2 is a robot node position on the world-coordinate XY plane, in millimeters.
const std::vector<Point2> formation = {
Point2(213.7f, 122.7f),
Point2(804.6f, 37.2f),
Point2(904.0f, 550.0f),
Point2(439.3f, 715.9f),
};
// Unfolded sheet: each Point2 is a vertex in the sheet's local coordinate frame, in millimeters.
const std::vector<Point2> sheet = {
Point2(-316.1f, -421.9f),
Point2(803.4f, -384.1f),
Point2(746.1f, 712.8f),
Point2(-367.3f, 664.2f),
};
// Build the solver for four robots and a 1000 mm hold height.
VvcmFk fk(4, 1000.0f, sheet);
// Solve all candidate equilibria for the current formation.
FkSolutions solutions = fk.update_stable_solutions(formation);
// Report the total branch count and the subset that is stable.
std::cout << "all solutions: " << solutions.all_count() << "\n";
std::cout << "stable solutions: " << solutions.stable_count() << "\n";
// Print each stable branch with object pose, virtual object point, and taut cables.
std::cout << std::fixed << std::setprecision(3);
const std::vector<FkSolution> stable = solutions.stable();
for (std::size_t index = 0; index < stable.size(); ++index) {
const auto &solution = stable[index];
std::cout << "#" << index << ": Po=("
<< solution.po.x << ", "
<< solution.po.y << ", "
<< solution.po.z << "), Vo=("
<< solution.vo.x << ", "
<< solution.vo.y << "), taut=[";
for (std::size_t taut_index = 0; taut_index < solution.taut_cables.size(); ++taut_index) {
if (taut_index > 0) {
std::cout << ", ";
}
std::cout << solution.taut_cables[taut_index];
}
std::cout << "]\n";
}
}
Expected output:
all solutions: 3
stable solutions: 2
#0: Po=(568.841, 324.728, 336.736), Vo=(238.633, 125.028), taut=[0, 1, 2]
#1: Po=(557.919, 341.232, 337.247), Vo=(208.794, 152.532), taut=[0, 2, 3]
Python Usage
After installing vvcm-rs from PyPI, import it as vvcm_rs. Coordinate collections accept Point2 values, ordinary list/tuple rows, or sequence-like two-column arrays such as NumPy N x 2 arrays.
from vvcm_rs import VvcmFk
# Robot formation: each tuple is a robot node position on the world-coordinate XY plane, in millimeters.
formation = [
(213.7, 122.7),
(804.6, 37.2),
(904.0, 550.0),
(439.3, 715.9),
]
# Unfolded sheet: each tuple is a vertex in the sheet's local coordinate frame, in millimeters.
sheet = [
(-316.1, -421.9),
(803.4, -384.1),
(746.1, 712.8),
(-367.3, 664.2),
]
# Create the solver for four robots and a 1000 mm hold height.
fk = VvcmFk(4, 1000.0, sheet)
# Solve all candidate equilibria for the current formation.
solutions = fk.update_stable_solutions(formation)
# Report the total branch count and the subset that is stable.
print(f"all solutions: {solutions.all_count()}")
print(f"stable solutions: {solutions.stable_count()}")
# Print each stable branch with object pose, virtual object point, and taut cables.
for index, solution in enumerate(solutions.stable()):
print(
f"#{index}: Po=({solution.po.x:.3f}, {solution.po.y:.3f}, {solution.po.z:.3f}), "
f"Vo=({solution.vo.x:.3f}, {solution.vo.y:.3f}), taut={solution.taut_cables}"
)
Expected output:
all solutions: 3
stable solutions: 2
#0: Po=(568.841, 324.728, 336.736), Vo=(238.633, 125.028), taut=[0, 1, 2]
#1: Po=(557.919, 341.232, 337.247), Vo=(208.794, 152.532), taut=[0, 2, 3]
Length units are not encoded in the API. Use one consistent unit for formation coordinates, sheet coordinates, and hold height; VvcmFk normalizes coordinates internally for numerical stability and maps returned object positions and virtual object points back to the original coordinate frames.
Error Handling
Forward-kinematics and simulation solves report failures through each language's normal error channel. Error messages are intended for human diagnostics; branch on Rust enum variants, JavaScript error codes, Python exception classes, or C/C++ error codes when program logic needs to distinguish failure modes.
The snippets below show one simple handling pattern for each language: catch the failure, print the message, and branch on the typed error when you need a specific recovery path.
Rust
match fk.update_stable_solutions(formation) {
Ok(solutions) => {
println!("stable solutions: {}", solutions.stable_count());
}
Err(vvcm_rs::VvcmError::InfeasibleFormation) => {
eprintln!("formation is infeasible");
}
Err(error) => {
eprintln!("vvcm-rs solve failed: {error}");
}
}
The main solve errors in Rust are:
VvcmError::DimensionMismatchfor input size mismatches during construction or solve setup.VvcmError::InfeasibleFormationwhen the robot formation cannot be realized by the sheet geometry.VvcmError::NoSolutionwhen no candidate branch can be constructed.VvcmError::NoStableSolutionwhen candidate branches exist but none are stable.VvcmErrorremains the common error type, soErr(error)still catches any of them andErr(vvcm_rs::VvcmError::InfeasibleFormation)can catch one case specifically.
Python
from vvcm_rs import InfeasibleFormationError, VvcmError
try:
solutions = fk.update_stable_solutions(formation)
except InfeasibleFormationError as error:
print(f"formation is infeasible: {error}")
except VvcmError as error:
print(f"vvcm-rs solve failed: {error}")
else:
print(f"stable solutions: {solutions.stable_count()}")
The main solve errors in Python are:
DimensionMismatchErrorfor input size mismatches during construction or solve setup.InfeasibleFormationErrorwhen the robot formation cannot be realized by the sheet geometry.NoSolutionErrorwhen no candidate branch can be constructed.NoStableSolutionErrorwhen candidate branches exist but none are stable.VvcmErrorremains the common base class, soexcept VvcmError as errorstill catches any of them andexcept InfeasibleFormationError as errorcan catch one case specifically.
JavaScript and TypeScript
import { VvcmFk, type VvcmError } from "@morningfrog/vvcm-rs";
function isVvcmError(error: unknown): error is VvcmError {
return error instanceof Error && error.name === "VvcmError" && "code" in error;
}
try {
const solutions = fk.updateStableSolutions(formation);
console.log(`stable solutions: ${solutions.stableCount}`);
} catch (error) {
if (isVvcmError(error) && error.code === "INFEASIBLE_FORMATION") {
console.error("formation is infeasible");
} else {
console.error("vvcm-rs solve failed:", error);
}
}
The main solve errors in JavaScript and TypeScript are:
DIMENSION_MISMATCHfor input size mismatches during construction or solve setup.INFEASIBLE_FORMATIONwhen the robot formation cannot be realized by the sheet geometry.NO_SOLUTIONwhen no candidate branch can be constructed.NO_STABLE_SOLUTIONwhen candidate branches exist but none are stable.INVALID_ARGUMENTwhen a JavaScript value cannot be parsed as the expected point, formation, or sheet input shape.
C
VvcmRsErrorCode code = vvcm_rs_fk_update_stable_solutions(
fk,
formation_points,
formation_point_count);
if (code != VVCM_RS_ERROR_OK) {
fprintf(stderr, "vvcm-rs failed: %s\n", vvcm_rs_last_error_message());
if (code == VVCM_RS_ERROR_INFEASIBLE_FORMATION) {
fprintf(stderr, "formation is infeasible\n");
}
}
The main solve errors in C are:
VVCM_RS_ERROR_DIMENSION_MISMATCHfor input size mismatches during construction or solve setup.VVCM_RS_ERROR_INFEASIBLE_FORMATIONwhen the robot formation cannot be realized by the sheet geometry.VVCM_RS_ERROR_NO_SOLUTIONwhen no candidate branch can be constructed.VVCM_RS_ERROR_NO_STABLE_SOLUTIONwhen candidate branches exist but none are stable.vvcm_rs_last_error_message()returns the human-readable message for the most recent failure on the current thread, whilevvcm_rs_error_message(code)returns the generic message for a given code.
C++
try {
vvcm_rs::FkSolutions solutions = fk.update_stable_solutions(formation);
std::cout << "stable solutions: " << solutions.stable_count() << "\n";
} catch (const vvcm_rs::Error &error) {
std::cerr << "vvcm-rs failed: " << error.what()
<< " (code " << error.code() << ")\n";
if (error.code() == VVCM_RS_ERROR_INFEASIBLE_FORMATION) {
std::cerr << "formation is infeasible\n";
}
}
The main solve errors in C++ are:
VVCM_RS_ERROR_DIMENSION_MISMATCHfor input size mismatches during construction or solve setup.VVCM_RS_ERROR_INFEASIBLE_FORMATIONwhen the robot formation cannot be realized by the sheet geometry.VVCM_RS_ERROR_NO_SOLUTIONwhen no candidate branch can be constructed.VVCM_RS_ERROR_NO_STABLE_SOLUTIONwhen candidate branches exist but none are stable.vvcm_rs::Errorkeeps the originating code, socatch (const vvcm_rs::Error &error)still handles all failures anderror.code()lets you branch on one case specifically.
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 vvcm_rs-1.2.0.tar.gz.
File metadata
- Download URL: vvcm_rs-1.2.0.tar.gz
- Upload date:
- Size: 83.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c0853a82ff629e04985a22ee4ecffcfd02f7212f03584d07d4c8b3b7b639491
|
|
| MD5 |
5a64d0eb0a7cdba5629f6b8ec0059f03
|
|
| BLAKE2b-256 |
a4889e11911c548a0596526e1f7b910fb3f19edb61a44a19d0549ec867766d5b
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0.tar.gz:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0.tar.gz -
Subject digest:
3c0853a82ff629e04985a22ee4ecffcfd02f7212f03584d07d4c8b3b7b639491 - Sigstore transparency entry: 1796750014
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 261.0 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
035c8e580c957d3af9f5f67e8a352d98eaddfcffafb3780398496675ff1ce23e
|
|
| MD5 |
589d826d69c6b13abf544137a2780009
|
|
| BLAKE2b-256 |
6e3827e0a3fc320d6f5b93ff62194362a980b59d1b8f10fd72d1ef9debf93154
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp314-cp314-win_amd64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp314-cp314-win_amd64.whl -
Subject digest:
035c8e580c957d3af9f5f67e8a352d98eaddfcffafb3780398496675ff1ce23e - Sigstore transparency entry: 1796750917
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 403.6 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885fc25367da173ba1cf69006c6d4cb4ad3e6609a4524fa55acb42b7dddf8fe7
|
|
| MD5 |
3de10d89ce3524a0b1f81f6e887e6fa1
|
|
| BLAKE2b-256 |
b78a55585ea7ef3c14a0ce31a68a202daa90123762cd867c76f7ef8b69f8c4b1
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
885fc25367da173ba1cf69006c6d4cb4ad3e6609a4524fa55acb42b7dddf8fe7 - Sigstore transparency entry: 1796751470
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 367.4 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c660fe9609f92fb92f32d7c1bc61538fa24f7cb62f79ff5ea86cac6dab48209a
|
|
| MD5 |
08c7c52a470a9ffc1ade6537e6dff1ac
|
|
| BLAKE2b-256 |
d0da24aca89b8efb96f81689575cd8198c2a9dd533a5083219067120915ad5e6
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
c660fe9609f92fb92f32d7c1bc61538fa24f7cb62f79ff5ea86cac6dab48209a - Sigstore transparency entry: 1796750105
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 260.2 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15125626b9d0277ebac15b3f14fc859229d57ddbabb21cb6ee28f465d5abdb6c
|
|
| MD5 |
9f8af73683b2321b7ce82b80e6553e91
|
|
| BLAKE2b-256 |
d093a109fa6d9334518a49be57ff7258bc3e6ef4a012064920d634bb74bdc849
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp313-cp313-win_amd64.whl -
Subject digest:
15125626b9d0277ebac15b3f14fc859229d57ddbabb21cb6ee28f465d5abdb6c - Sigstore transparency entry: 1796750308
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 403.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc32b6d21bbc274f7bc01b39701548e8e366c402ccbfa0b43b564f17b0103666
|
|
| MD5 |
dff048da3fc4d7a3a2649d23f6c0e157
|
|
| BLAKE2b-256 |
0215d09786c20972a3fec32b575b6336fcf8a3c4db3c15f65f66ca0c95238330
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
bc32b6d21bbc274f7bc01b39701548e8e366c402ccbfa0b43b564f17b0103666 - Sigstore transparency entry: 1796750419
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 366.7 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
510082df85ce5b43837bbbd1acf8ec26f20485aa86966ca7dc95755d3214bde9
|
|
| MD5 |
b3ac46542a66c9fdb897ad4119170936
|
|
| BLAKE2b-256 |
1d34c8a650dcff4c937aec1234260d395dfda94ba2a55b0002ef6370a9ee46ec
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
510082df85ce5b43837bbbd1acf8ec26f20485aa86966ca7dc95755d3214bde9 - Sigstore transparency entry: 1796750604
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 260.5 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4115b1174bedeac10ecce8bcb361661c2972b3998d0523c9a77b0b8394063696
|
|
| MD5 |
a21c585e86c3afed67389a55f00dde74
|
|
| BLAKE2b-256 |
5262114e96c6dfb34b72b5b9c12606d58871bd3486e6247439e226f62d71d563
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp312-cp312-win_amd64.whl -
Subject digest:
4115b1174bedeac10ecce8bcb361661c2972b3998d0523c9a77b0b8394063696 - Sigstore transparency entry: 1796751004
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 404.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
911f80b628dd185620fcaaf8fab9032b95a3847a5829ecf111fea1db20c4430b
|
|
| MD5 |
9c38fbdb0ccfc6d0f1ca88b67f7e2a5b
|
|
| BLAKE2b-256 |
439f67aa44eff4dfc86532cf155770cb238974d0d8a3b87a779e3aece74c76fd
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
911f80b628dd185620fcaaf8fab9032b95a3847a5829ecf111fea1db20c4430b - Sigstore transparency entry: 1796751106
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 367.2 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f48bf757871edc47652a6e478fbfaa21686167a9993d5b64e29f33216a0429cd
|
|
| MD5 |
c3a91435973aefce97b44efbe92797d2
|
|
| BLAKE2b-256 |
6c0e19c013fef46272427704e93a5c3d5d10fa14dcefa25c93aaeeab7c284adb
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
f48bf757871edc47652a6e478fbfaa21686167a9993d5b64e29f33216a0429cd - Sigstore transparency entry: 1796750507
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 263.2 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
414dea9d4f69cb28c0124f86977ee752b9e16d2ac31e62115b8d8aca8d11f881
|
|
| MD5 |
6d9e1de6c51e14b666ac93df73627221
|
|
| BLAKE2b-256 |
9a80bfd597fd2f9990d3a5d0b61c954f9edc29a6103ee65e4c46006dcab173cf
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp311-cp311-win_amd64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp311-cp311-win_amd64.whl -
Subject digest:
414dea9d4f69cb28c0124f86977ee752b9e16d2ac31e62115b8d8aca8d11f881 - Sigstore transparency entry: 1796750817
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 406.4 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaaf7484858cdea0afce87d5127636b35677411e52c961ee735ba71026126a1a
|
|
| MD5 |
e92b603e4191baab6f12322c9c93e3b5
|
|
| BLAKE2b-256 |
119dbbe1e75b7cb710d6e9adc7fb447f78fbd388865fc40cea52821d5beef732
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
aaaf7484858cdea0afce87d5127636b35677411e52c961ee735ba71026126a1a - Sigstore transparency entry: 1796750723
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 368.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
374f9cfffd1a8104c920b8f439edd6594a657c1fd17b3550fc1729a0ee5dc158
|
|
| MD5 |
65b784b33a989886cd40621ca7a57587
|
|
| BLAKE2b-256 |
7cea0028bdaf17445b3b516c866be8910ec2b042af64b015507fb89381006b33
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
374f9cfffd1a8104c920b8f439edd6594a657c1fd17b3550fc1729a0ee5dc158 - Sigstore transparency entry: 1796751192
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 263.1 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8b55d879b169c76c3d29f850c37310d0b3055e19da87fc3a7b637bc6e49e9a8
|
|
| MD5 |
9660666fdb515e41556012a18d743644
|
|
| BLAKE2b-256 |
8d4d74b8d65f0878a5c468714fdc014a389e9b3674075f9ad04a490bc4e42c83
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp310-cp310-win_amd64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp310-cp310-win_amd64.whl -
Subject digest:
e8b55d879b169c76c3d29f850c37310d0b3055e19da87fc3a7b637bc6e49e9a8 - Sigstore transparency entry: 1796750198
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 406.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4aa461377a6974a85b6e5f8a9ccea54b98e37d847edf55456c8da9b9d6ca36c7
|
|
| MD5 |
d0a74a6dc5ecce667017b08302253bba
|
|
| BLAKE2b-256 |
452a561af0a1f9f9728f79099d77f60c93ec7e60a11a15ab9504761aaef65571
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4aa461377a6974a85b6e5f8a9ccea54b98e37d847edf55456c8da9b9d6ca36c7 - Sigstore transparency entry: 1796751404
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file vvcm_rs-1.2.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: vvcm_rs-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 368.8 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1f4f5abbb62647c71c00711c296086efa36b99f6e2a33facfae3855d3c59446
|
|
| MD5 |
5dccdbbff5c54c53666a2e3e8b311ad7
|
|
| BLAKE2b-256 |
3e1c4c97cbdb344b746cc06a1f58a2caf105b0c144fdf344f27ae5898ebe8e68
|
Provenance
The following attestation bundles were made for vvcm_rs-1.2.0-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
release.yml on MorningFrog/vvcm-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vvcm_rs-1.2.0-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
a1f4f5abbb62647c71c00711c296086efa36b99f6e2a33facfae3855d3c59446 - Sigstore transparency entry: 1796751302
- Sigstore integration time:
-
Permalink:
MorningFrog/vvcm-rs@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MorningFrog
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@607ecf2e9f12b245c9f68468981d2fcce19363b6 -
Trigger Event:
workflow_dispatch
-
Statement type: