Skip to main content

Persistent in-process execution engine for uv — internal dependency of omnipkg

Project description

uv-ffi

Persistent in-process execution engine for uv's package resolver and installer.

While uv is designed as a world-class CLI tool, uv-ffi re-architects its core as a resident engine. By keeping a Tokio runtime, HTTP connection pools, site-packages metadata, and interpreter state warm in memory across calls, it achieves execution speeds limited only by filesystem I/O.

Used internally by omnipkg, but directly callable from any long-lived Python process.


Usage

from uv_ffi import run, invalidate_site_packages_cache, patch_site_packages_cache, get_site_packages_cache, clear_registry_cache

PY = '/path/to/your/python'
BASE = f'pip install --python {PY} --link-mode symlink'

# First call initializes the engine (~65-75ms, one-time cost)
rc, installed, removed = run(f'{BASE} rich==14.3.2')

# Subsequent calls use the warm engine (~5-6ms)
rc, installed, removed = run(f'{BASE} rich==14.3.3')
# -> installed=[('rich', '14.3.3')] removed=[('rich', '14.3.2')]

# Isolated install into a target directory (bubble install)
rc, installed, removed = run(f'pip install --python {PY} --target /tmp/myenv rich==14.3.2')
# Main site-packages cache is untouched

# Inspect engine's current in-memory view of the environment
state = get_site_packages_cache()
# -> [('rich', '14.3.3'), ('requests', '2.31.0'), ...]

The key is keeping the import alive in a long-lived process. Each new Python subprocess pays ~70ms (interpreter startup + engine init). In a warm daemon worker, the same operation costs ~6ms.


Performance

Measured wall-clock time on Linux (NVMe SSD, Python 3.11, pre-warmed uv cache).

No-op (package already satisfied)

Method Wall time user sys
uv pip install (subprocess) ~11–12ms 0.007s 0.006s
uv-ffi in-process (warm engine) ~0.4–2ms 0.000s 0.000s
Speedup ~6–8×

Real swap (uninstall + reinstall different version)

Method Wall time user sys
uv pip install (subprocess) ~17–20ms 0.010s 0.013s
uv-ffi in-process (warm engine) ~5.4–6.5ms 0.000s 0.002s
Speedup ~2.5–3×

Cache operations

Method Latency Notes
uv full site-packages rescan ~2.5ms paid on every CLI invocation
invalidate_site_packages_cache() ~2.5ms forced rescan, same cost as uv
patch_site_packages_cache(installed, removed) ~25µs ~100× faster than full rescan
Post-install cache update (internal) 0.0ms zero-disk: built from resolver changelog

The ~5–6ms floor on a real swap is the hardware limit — VFS symlink create/unlink on NVMe. uv-ffi eliminates all software overhead above that floor.

Important: calling uv-ffi via a new subprocess each time (~73ms avg) is slower than calling uv directly (~19ms). The gains only materialize when the engine stays warm across multiple calls in the same process.


API

run(cmd: str) -> (int, list[tuple[str,str]], list[tuple[str,str]])

Execute a uv command in-process. Returns (exit_code, installed, removed) where installed/removed are lists of (name, version) tuples.

rc, installed, removed = run('pip install --python /usr/bin/python3 rich==14.3.3')

Supports all flags omnipkg uses on the fast path: --python, --link-mode, --target, --index-url, --extra-index-url, --reinstall, -q. Any unrecognized flag falls back to the full clap parse path automatically.

get_site_packages_cache() -> list[tuple[str, str]]

Returns the engine's current in-memory view of the environment as [(name, version), ...]. Returns an empty list if the cache has not been populated yet (before first install call). Zero disk I/O.

state = get_site_packages_cache()
# [('rich', '14.3.3'), ('requests', '2.31.0'), ...]

invalidate_site_packages_cache()

Forces a full disk rescan on the next install call. Use when an external tool has modified the environment and you don't have the changelog. Cost: ~2.5ms on next call.

patch_site_packages_cache(installed, removed)

Surgically update the in-memory cache with a known delta. ~100× faster than a full rescan. Returns True if the cache was live and patched, False if no cache was active.

patch_site_packages_cache(
    installed=[['rich', '14.3.3']],
    removed=[['rich', '14.3.2']],
)

clear_registry_cache()

Drops the persistent RegistryClient memory cache. Use this if you suspect the internal PyPI Simple API cache is stale. Note: The engine already auto-heals on install failures, so manual invocation is rarely needed.

C ABI: omnipkg_uv_run_c

int omnipkg_uv_run_c(const char *cmd, char *out_json, int max_out);

Runs a uv command and writes a JSON changelog to out_json:

{"installed":[["rich","14.3.3"]],"removed":[["rich","14.3.2"]]}

Returns the exit code. Safe to call from Go, C++, Rust, or any language with C FFI.


Isolated "Bubble" Installs (--target)

uv-ffi provides cache-safe isolated directory installs via --target. Standard uv evaluates --target against the host interpreter's installed packages, which can produce incorrect results and poisons in-memory state. uv-ffi routes --target installs through a pre-warmed BUBBLE_ENVIRONMENT:

  • The resolver sees a clean slate — no existing packages, no cross-contamination
  • SITE_PACKAGES_CACHE (which reflects main env state) is never read or written during a bubble install
  • The BUBBLE_INSTALL atomic flag ensures the main env cache is fully protected for the duration
  • After the install, the flag is reset and the next main-env call proceeds normally
# Install into isolated dir — main env cache untouched
rc, installed, _ = run(f'pip install --python {PY} --target /tmp/app_env flask==3.0.0')

This is how omnipkg generates multiversion isolated environments entirely in-memory.


Cache Coherency

uv-ffi holds site-packages state in RAM and trusts it completely. If an external tool (uv, pip, conda) modifies the environment without notifying uv-ffi, the next call may return rc=0, inst=[], rem=[] — a silent false no-op.

Verified behavior:

[1] uv-ffi swap:                   6.51ms  installed=[('rich','14.3.3')] removed=[('rich','14.3.2')]
[2] uv pip install rich==14.3.2:  18.65ms  (disk=14.3.2, cache still thinks 14.3.3)
[3] uv-ffi ask for rich==14.3.3:   0.46ms  inst=[] rem=[]  ← silent no-op, wrong answer
[4] uv-ffi ask for rich==14.3.2:  11.35ms  inst=[('rich','14.3.2')]  ← rescan + swap

If uv-ffi is the only thing modifying the environment, no action is needed. After every install, the cache is updated directly from the resolver's in-memory changelog at zero disk I/O cost — it's always coherent with no overhead.

For environments shared with external tools, two options:

Option A — FS watcher + delta patch (omnipkg's approach) Watch site-packages for filesystem events. On each change, call patch_site_packages_cache(installed, removed). Cost: ~25µs per patch. Full coherency at near-zero overhead.

Option B — Force rescan Call invalidate_site_packages_cache() before any call where external modification is possible. Cost: ~2.5ms on next call. Simple, no watcher needed.


Architecture

Python API  →  run() / patch_site_packages_cache() / get_site_packages_cache()
C ABI       →  omnipkg_uv_run_c() → JSON changelog
Fast path   →  try_parse_ffi_install() → run_pip_install_direct() [bypasses clap entirely]
Slow path   →  clap parse → uv::run() [pip freeze, uninstall, etc.]
Globals     →  ENGINE / BUBBLE_ENVIRONMENT / SITE_PACKAGES_CACHE / REGISTRY_CLIENT / PYTHON_ENVIRONMENT

Persistent UvEngine singleton Interpreter discovery, platform tagging, cache init, and TLS pool setup happen once at import time and are held in a OnceLock. All subsequent calls skip directly to resolution. Includes a pre-warmed BUBBLE_ENVIRONMENT for --target installs.

Zero-clap fast path pip install commands are parsed directly via try_parse_ffi_install() — a hand-written token parser covering all flags omnipkg uses. Internal Rust structs are constructed directly, skipping clap entirely (~2ms saved per call). Unrecognized flags fall back to clap automatically.

Persistent RegistryClient and PythonEnvironment The HTTP client (TLS pools, connection pools) and Python environment (interpreter metadata, marker environment) are stored as global singletons after first use. Subsequent calls reuse them directly — no socket teardown, no filesystem search.

PyPI Registry Auto-Healing The FFI engine keeps PyPI API responses in RAM for maximum speed. If a newly published package version is requested and not found in the RAM cache, the engine detects the internal failure, automatically drops its registry cache, and retries the network fetch transparently. You never need to restart the process to see newly published packages.

Zero-disk post-install cache update After a successful install, SITE_PACKAGES_CACHE is updated directly from the resolver's changelog using in-memory InstalledRegistryDist construction. No dist-info directory scan, no try_from_path I/O. Post-install cache update cost: 0.0ms.

SitePackages::add_dist() A new method added to uv-installer's SitePackages that surgically inserts a distribution into the in-memory index without touching disk. Used by both the post-install zero-disk update and patch_site_packages_cache().

Idempotent initialization Logging setup (setup_logging) and miette::set_hook are now called with let _ = — safe to call repeatedly in a long-running process without double-init panics.

Persistent Tokio runtime The main() path previously created a new Tokio runtime on every call and called shutdown_background() on exit (leaving pending HTTP requests). The runtime is now stored in a OnceLock and reused across calls — no teardown overhead, no leaked requests.


Profiling

Set UV_FFI_PROFILE=1 to enable millisecond-precision phase tracing:

[UV-PROFILE] cache-reused: 0.12ms
[UV-PROFILE] post-site-packages-scan: 0.08ms (cached)
[UV-PROFILE] post-settings-resolve: 0.31ms
[UV-PROFILE] post-execute-plan: 4.82ms
[UV-PROFILE] post-changelog-from-local: 4.83ms
[UV-PROFILE] post-changelog-write: 4.91ms
[UV-SYNC] Zero-disk cache update: done
[UV-PROFILE] post-explicit-drop: 0.02ms
[UV-PROFILE] post-await: 5.14ms

Coexistence with vanilla uv

uv-ffi installs are fully compatible with vanilla uv operations in the same environment. uv-ffi writes complete dist-info including RECORD, INSTALLER, and REQUESTED — so uv pip uninstall, uv pip install, and other standard toolchain operations work correctly on packages uv-ffi installed.

Coexistence means no corruption, not automatic cache synchronization — see cache coherency section above.


Platform Support

Platform Architectures Python
Linux glibc ≥ 2.17 x86_64, i686, aarch64, armv7, ppc64le, s390x 3.10–3.14
Linux musl ≥ 1.2 x86_64, i686, aarch64, armv7, ppc64le 3.10–3.14
Linux glibc ≥ 2.31 riscv64 3.10–3.14
macOS (universal2) x86_64 + arm64 3.8–3.14
Windows x64 x86_64 3.8–3.14
Windows ARM64 aarch64 3.11–3.14
Windows x86 i686 3.8–3.14

Version Correspondence

uv-ffi versions track the upstream uv release they are built against.

uv-ffi uv upstream Notes
0.10.8 0.10.8 Initial release
0.10.8.post1 0.10.8 Persistent UvEngine, delta cache patching, zero-clap fast path, verified uv coexistence
0.10.8.post2 0.10.8 Windows cache path fix (%LOCALAPPDATA%), platform-safe temp dir fallback
0.10.8.post3 0.10.8 Windows ARM64 wheels, Tokio PathError fix on Windows runners
0.10.8.post4 0.10.8 Bubble environments (--target isolation), persistent RegistryClient + PythonEnvironment, zero-disk post-install cache update, JSON C ABI
0.10.8.post5 0.10.8 CI hardening, per-platform PyPI checks, sdist publishing, Windows PowerShell fixes

Benchmark Methodology

  • In-process tests: 10-run alternating swap (rich==14.3.2rich==14.3.3) in a single warm Python session
  • Subprocess tests: 8 separate subprocess.run calls, new Python process each time
  • Interference test: uv subprocess between uv-ffi calls, 1s settle time
  • uv cache pre-warmed before all runs
  • Hardware: Linux, NVMe Gen4, Python 3.11.14

Attribution

This crate links against uv source code from astral-sh/uv, copyright Astral Software Inc., used under the MIT License. See NOTICE for full attribution.

Not affiliated with, endorsed by, or sponsored by Astral Software Inc.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

uv_ffi-0.10.8.post7-pp310-pypy310_pp73-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

uv_ffi-0.10.8.post7-pp39-pypy39_pp73-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

uv_ffi-0.10.8.post7-graalpy310-graalpy240_310_native-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded graalpy310macOS 11.0+ ARM64

uv_ffi-0.10.8.post7-cp313-cp313t-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.13tWindows x86-64

uv_ffi-0.10.8.post7-cp313-cp313t-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

uv_ffi-0.10.8.post7-cp38-abi3-win_arm64.whl (22.7 MB view details)

Uploaded CPython 3.8+Windows ARM64

uv_ffi-0.10.8.post7-cp38-abi3-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.8+Windows x86-64

uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ x86-64

uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_aarch64.whl (22.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_x86_64.whl (23.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ x86-64

uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_aarch64.whl (22.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (26.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

uv_ffi-0.10.8.post7-cp38-abi3-macosx_11_0_arm64.whl (20.2 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.whl (21.5 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (41.7 MB view details)

Uploaded CPython 3.8+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file uv_ffi-0.10.8.post7-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72673463d2792a953bfb14136195edac949576b705f0a77617f30cb0dcf74098
MD5 1e4dcb9175ba1fb56ddd02d1a3451a75
BLAKE2b-256 0ea61cc1441019f9486e61179aaac21070c71eefa84d5086a95f7403ba7532bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-pp310-pypy310_pp73-macosx_11_0_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c547d9505a95dc5f1fc549054f476ce6209ca562a7d5dd04bf7d7d620ee72cbb
MD5 9fd353f2bd092c1bf0b4b205699d5b7b
BLAKE2b-256 0cecadb00100e55c36ae145ccadc6330605ed02e031c2b9b60ca9001208e8988

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-pp39-pypy39_pp73-macosx_11_0_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-graalpy310-graalpy240_310_native-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-graalpy310-graalpy240_310_native-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 29276e0c913679f5df82b50adb442f3685a66ac33ed458b90005f5a91bc54017
MD5 9f5b42638a72b71857ab93320a2fcf9c
BLAKE2b-256 2b297204090520c926f196659eda16b0e7f8944c17a285c3b4320ce8a3d5aaf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-graalpy310-graalpy240_310_native-macosx_11_0_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp313-cp313t-win_amd64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 7d7d1e8d56df6ec41392810896a33ce9275a4344e30fe4d64a457e9d1ae2109d
MD5 a92dd6b96f45bdcffc0106d4fda0af46
BLAKE2b-256 0b831d713e0e191d1bcaead7fbcb68e492fd2268e8f4a685756eaaa838c7cc41

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp313-cp313t-win_amd64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d55c11c4756e9fe438904054a9c310c4bb4e3d9681b5e17fd8d1ee215104446
MD5 0b0258b0d3509655f5f9bc04bd03b3cc
BLAKE2b-256 7216171331181015f1eac8acd37655e0f81fd09943916b994cef9ced7f4b6a2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 27f19bc8c2bdf60d054db128cf47fadfcb6b857af05c2203f2986372beb6f070
MD5 51b1bc57dc8ed4ff2850a2dadcdf2478
BLAKE2b-256 eccc4fabfe8bc7aa25089500002046413b6a6a01b9ef39db4a705686e0bb9870

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-win_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: uv_ffi-0.10.8.post7-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 24.5 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0c7762f0f590a022d62281eb420068a24f0767584ed1727d2d4ca2de8ecf65f6
MD5 5a224b4de74b912f38e31179966b3227
BLAKE2b-256 7ad76eb3d0487db114fcec502b64cbd55e1d1f6795d484a7ee45bb4fb8a019d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-win_amd64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cb3aeae872c6e7d5130f4fdad4de86353aa0e18a3f616cca63734cc6c33a3bf
MD5 7bd66d84dc3212b59c12041ad32335df
BLAKE2b-256 d5db34ddc501dd7a1052b6c15001d42bc87f3427b327d06fbfd11cb36c1981f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 75160e4cf867122ecb5c868451c936e30ae58ac8899cb809ab6bcd4d156c1af4
MD5 9aede95dcd7e3d0acca445e24d7df59e
BLAKE2b-256 3f63d18de6ba5ebdd7732e1d0bad25b7241b887bfaddd16ada6f8745fcae5e98

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0096c5d460cf871e4358ed97eabc20220179dbefe302563e03df58d1e7c6bed8
MD5 2ff5a94d2b23506e553c4f5eab580801
BLAKE2b-256 0d935c40833ee5712934d6b1ecbb59950c2ecc56b721114e455386a91f4655d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0130f88e0b104587f07156e6253748278214e8d5d9429087d96276653f77f45a
MD5 a53813d22cb2a51b55eec99b49d977fb
BLAKE2b-256 52b31c70509149a76a6ffceb50a3218baf86dad2910bc762e9f88979dbb3bba6

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a6feb11ff53c4035cca90cbe3e073e3124f6021cc5bbff9fc57cb1fbd32c244
MD5 6dbd970b2766cf427feffcbc183e918b
BLAKE2b-256 9ec56e96c78ef00f33dd019a9313c844bc79bd6c96f6afa773bdaf6ee6fb4e0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1664092f250f0d767d13c55d1e19bfd4004e2be10304f4ca3dc5e7bd70fb96d
MD5 b0a70acb4d7ac0dde0db5d34463747af
BLAKE2b-256 0b5d1c0f7c59985984f0664cae9fbe118d00508878081acc216ae39f7da0e4ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2d70d03992d4113cabea6e4aa6556ff4bf5e5acc70b379bdb7a0ab1b924c8977
MD5 56c0b61e8ea96825eb40b0a31c729cb1
BLAKE2b-256 1187ba1073e77ad1190ad5724f08ee92dea4bb7bd3837e0b03270d97d278a107

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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

File details

Details for the file uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b9d0936c571fe6579cb34297d8ba05c450f1197e8da6fa6a7c9a940e9a458c14
MD5 c348d3a678b0f0f0b2392fa8c5a70f01
BLAKE2b-256 30e9fea031b150cd4a6f698952bb15ae3ea02f3ed4df4fbe2c622d771ce2b17c

See more details on using hashes here.

Provenance

The following attestation bundles were made for uv_ffi-0.10.8.post7-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: publish.yml on 1minds3t/uv-ffi

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 Pingdom Monitoring Sentry Error logging StatusPage Status page