Skip to main content

Speed up file transfers with the baseten.co + baseten_fs.

Project description

Truss-Transfer

Python-optional download utility for resolving Baseten Pointers (bptr).

Installation

pip install truss-transfer
# pip install /workspace/model-performance/michaelfeil/truss/truss-transfer/target/wheels/truss_transfer-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl

How to Resolve a bptr

Via Python Package

import truss_transfer

# Resolve bptr using default download directory from environment
result_dir = truss_transfer.lazy_data_resolve()

# Resolve bptr with custom download directory
result_dir = truss_transfer.lazy_data_resolve("/custom/download/path")

# Example usage in a data loader
def lazy_data_loader(download_dir: str):
    print(f"download using {truss_transfer.__version__}")
    try:
        resolved_dir = truss_transfer.lazy_data_resolve(str(download_dir))
        print(f"Files resolved to: {resolved_dir}")
        return resolved_dir
    except Exception as e:
        print(f"Lazy data resolution failed: {e}")
        raise

Via CLI

# Using the compiled binary
./target/x86_64-unknown-linux-musl/release/truss_transfer_cli /tmp/download_dir

# Using the Python package CLI
python -m truss_transfer /tmp/download_dir

How to Build a bptr and Save it via Python

You can create Baseten Pointers from HuggingFace models using the Python API:

import truss_transfer
import json

# Define models to include in the bptr
models = [
    truss_transfer.PyModelRepo(
        repo_id="microsoft/DialoGPT-medium",
        revision="main",
        volume_folder="dialogpt",
        kind="hf",  # "hf" for HuggingFace, "gcs" for Google Cloud Storage
        runtime_secret_name="hf_access_token",
        allow_patterns=["*.safetensors", "*.json"],  # Optional: specific file patterns
        ignore_patterns=["*.txt"]  # Optional: patterns to ignore
    ),
    truss_transfer.PyModelRepo(
        repo_id="julien-c/dummy-unknown",
        revision="60b8d3fe22aebb024b573f1cca224db3126d10f3",
        volume_folder="julien_dummy",
        runtime_secret_name="hf_access_token_2"
    )
]

# Create the bptr manifest
bptr_manifest = truss_transfer.create_basetenpointer_from_models(models)

# Save to file
with open("/bptr/static-bptr-manifest.json", "w") as f:
    f.write(bptr_manifest)

# Or parse as JSON for programmatic use
manifest_data = json.loads(bptr_manifest)
print(f"Created bptr with {len(manifest_data)} pointers")

PyModelRepo Parameters

  • repo_id: Repository identifier (e.g., "microsoft/DialoGPT-medium")
  • revision: Git commit hash or branch name (e.g., "main", commit hash)
  • volume_folder: Local folder name where files will be stored
  • kind: Repository type - "hf" for HuggingFace, "gcs" for Google Cloud Storage
  • runtime_secret_name: Name of the secret containing access token
  • allow_patterns: Optional list of file patterns to include
  • ignore_patterns: Optional list of file patterns to exclude

End-to-End Flow

Here's a complete example of creating and resolving a bptr:

Step 1: Create a bptr Manifest

import truss_transfer
import json
import os

# Create models configuration
models = [
    truss_transfer.PyModelRepo(
        repo_id="microsoft/DialoGPT-medium",
        revision="main",
        volume_folder="dialogpt",
        runtime_secret_name="hf_access_token"
    ),
    truss_transfer.PyModelRepo(
        repo_id="gs://llama-3-2-1b-instruct/",
        revision="",
        volume_folder="llama",
        # requires json in /secrets/gcs-service-account-jsn
        runtime_secret_name="gcs-service-account-jsn",
        kind="gcs"
    ),
    truss_transfer.PyModelRepo(
        repo_id="s3://bt-training-dev-org-b68c04fe47d34c85bfa91515bc9d5e2d/training_projects",
        revision="",
        volume_folder="training",
        # requires json in /secrets/aws
        runtime_secret_name="aws-secret-json",
        kind="s3"
    )
]

# Generate the bptr manifest
bptr_manifest = truss_transfer.create_basetenpointer_from_models(models)

# Ensure the directory exists
os.makedirs("/bptr", exist_ok=True)

# Save the manifest
with open("/bptr/static-bptr-manifest.json", "w") as f:
    f.write(bptr_manifest)

print("bptr manifest created successfully!")

Step 2: Set up Environment (Optional)

# Configure download location
export TRUSS_TRANSFER_DOWNLOAD_DIR="/tmp/my-models"

# Enable b10fs caching (optional)
export BASETEN_FS_ENABLED=1

# Set up authentication (if needed)
export HF_TOKEN="your-huggingface-token"
# Or use the official HuggingFace environment variable
export HUGGING_FACE_HUB_TOKEN="your-huggingface-token"

Step 3: Resolve the bptr

import truss_transfer

# Resolve the bptr - downloads files to the specified directory
resolved_dir = truss_transfer.lazy_data_resolve("/tmp/my-models")
print(f"Files downloaded to: {resolved_dir}")

# Now you can use the downloaded files
import os
files = os.listdir(resolved_dir)
print(f"Downloaded files: {files}")

Step 4: Use the Downloaded Files

# Example: Load a model from the resolved directory
model_path = os.path.join(resolved_dir, "dialogpt")
# Your model loading code here...

Complete Workflow

# Complete example combining creation and resolution
import truss_transfer
import json
import os

def create_and_resolve_bptr():
    # runtime_secret_name: best to be created with `-` in baseten.
    # 1. Create bptr manifest
    models = [
        truss_transfer.PyModelRepo(
            repo_id="NVFP4/Qwen3-235B-A22B-Instruct-2507-FP4",
            revision="main",
            # write to folder named
            volume_folder="dialogpt",
            # read secret from /secrets/hf-access-token
            runtime_secret_name="hf-access-token"
        ),
        # requires a gcs service account json
    ]
    root = "/tmp/my-models"
    bptr_manifest = truss_transfer.create_basetenpointer_from_models(models, root)

    # 2. Save manifest
    os.makedirs("/static-bptr", exist_ok=True)
    with open("/static-bptr/static-bptr-manifest.json", "w") as f:
        f.write(bptr_manifest)

    # 3. Resolve bptr. If we would set `root` above to "", we could define the base dir here.
    truss_transfer.lazy_data_resolve(root)

    # 4. Verify files were downloaded
    dialogpt_path = os.path.join(root, "dialogpt")
    if os.path.exists(dialogpt_path):
        files = os.listdir(dialogpt_path)
        print(f"Successfully downloaded {len(files)} files to {dialogpt_path}")
        return dialogpt_path
    else:
        raise Exception("Model files not found after resolution")

# Run the workflow
model_path = create_and_resolve_bptr()

Secrets

Preferably, use a - to and lowercase characters to add credentials in baseten.

AWS

{
  "access_key_id": "XXXXX",
  "secret_access_key": "adada/adsdad",
  "region": "us-west-2"
}

Google GCS

{
      "private_key_id": "b717a4db1dd5a5d1f980aef7ea50616584b6ebc8",
      "private_key": "-----BEGIN PRIVATE KEY-----\nMI",
      "client_email": "b10-some@xxx-example.iam.gserviceaccount.com"
}

Huggingface

The Huggingface token.

Azure

(Untested)

{
    "account_key": "key",
}

Environment Variables and Settings

The following environment variables can be used to configure truss-transfer behavior:

Core Configuration

  • TRUSS_TRANSFER_DOWNLOAD_DIR (default: /tmp/truss_transfer)

    • Directory where resolved files will be downloaded
    • Used when no explicit download directory is provided
    • Can be overridden by passing a directory to the CLI or Python function
  • TRUSS_TRANSFER_LOG or RUST_LOG (default: info)

    • Controls logging level: error, warn, info, debug, trace
    • TRUSS_TRANSFER_LOG takes precedence over RUST_LOG
    • Example: RUST_LOG=debug for detailed logging
  • TRUSS_TRANSFER_CACHE_DIR (default: /cache/org/artifacts/truss_transfer_managed_v1)

    • Cache directory for b10fs operations
    • Used when Baseten FS is enabled

Download Configuration

  • TRUSS_TRANSFER_NUM_WORKERS (default: 6)

    • Number of concurrent download workers
    • Controls parallelism for file downloads
  • TRUSS_TRANSFER_USE_RANGE_DOWNLOAD (default: true)

    • Enable/disable range-based downloading for large files
    • Set to 1, true, yes, or y to enable
  • TRUSS_TRANSFER_RANGE_DOWNLOAD_WORKERS (default: 192)

    • Total number of range download workers across all files
    • Used when range downloading is enabled
  • TRUSS_TRANSFER_RANGE_DOWNLOAD_WORKERS_PER_FILE (default: 84)

    • Number of concurrent range workers per individual file
    • Used when range downloading is enabled
  • TRUSS_TRANSFER_DOWNLOAD_MONITOR_SECS (default: 30)

    • Interval in seconds for monitoring download progress
    • Controls how often progress is reported
  • TRUSS_TRANSFER_PAGE_AFTER_DOWNLOAD (default: false)

    • Enable/disable memory paging after downloads complete
    • Set to 1, true, yes, or y to enable
    • Helps with memory management for large downloads

Authentication

  • HF_TOKEN (optional)

    • HuggingFace access token for accessing private repositories
    • Takes precedence over HUGGING_FACE_HUB_TOKEN
    • Used when runtime_secret_name is hf_token or hf_access_token
  • HUGGING_FACE_HUB_TOKEN (optional)

    • Official HuggingFace Hub token environment variable
    • Used as fallback if HF_TOKEN is not set
    • Allows access to private HuggingFace repositories

Baseten FS (b10fs) Configuration

  • BASETEN_FS_ENABLED (default: false)

    • Enable/disable Baseten FS caching: 1/true to enable, 0/false to disable
    • When enabled, files are cached in the directory specified by TRUSS_TRANSFER_CACHE_DIR
  • TRUSS_TRANSFER_B10FS_CLEANUP_HOURS (default: 96)

    • Hours after last access before deleting cached files from other tenants
    • Helps manage disk space by removing old cached files
    • Example: TRUSS_TRANSFER_B10FS_CLEANUP_HOURS=48 for 2 days
  • TRUSS_TRANSFER_B10FS_DOWNLOAD_SPEED_MBPS (default: dynamic)

    • Expected download speed in MB/s for b10fs performance benchmarking
    • Used to determine if b10fs is faster than direct download
    • Default: 400 MB/s for >16 cores, 90 MB/s for ≤16 cores (with randomization)
    • Lower values make b10fs more likely to be used
  • TRUSS_TRANSFER_B10FS_MAX_STALE_CACHE_SIZE_GB (default: unlimited)

    • Maximum size in GB for stale cache files before cleanup is triggered
    • When set, actively purges old cache files to maintain this limit
    • Example: TRUSS_TRANSFER_B10FS_MAX_STALE_CACHE_SIZE_GB=500

Example Configuration

# Basic setup
export TRUSS_TRANSFER_DOWNLOAD_DIR="/tmp/my-models"
export TRUSS_TRANSFER_LOG=info
export TRUSS_TRANSFER_NUM_WORKERS=8

# Advanced download configuration
export TRUSS_TRANSFER_USE_RANGE_DOWNLOAD=1
export TRUSS_TRANSFER_RANGE_DOWNLOAD_WORKERS=256
export TRUSS_TRANSFER_RANGE_DOWNLOAD_WORKERS_PER_FILE=64
export TRUSS_TRANSFER_PAGE_AFTER_DOWNLOAD=1

# With b10fs enabled and tuned
export BASETEN_FS_ENABLED=1
export TRUSS_TRANSFER_CACHE_DIR="/fast-ssd/cache"
export TRUSS_TRANSFER_B10FS_CLEANUP_HOURS=48
export TRUSS_TRANSFER_B10FS_DOWNLOAD_SPEED_MBPS=200
export TRUSS_TRANSFER_B10FS_MAX_STALE_CACHE_SIZE_GB=1000

# Authentication
export HF_TOKEN="your-huggingface-token"

Development

Running Tests

# Run all tests
cargo test

# Run tests without network dependencies
cargo test --lib

# Run Python tests
python -m pytest tests/

Running the CLI as binary

Compiling the libary as musl-linux target for cross-platform usage.

# Add one-time installations
# apt-get install -y musl-tools libssl-dev libatomic-ops-dev
# rustup target add x86_64-unknown-linux-musl

# To build with cargo:
cargo build --release --target x86_64-unknown-linux-musl --features cli --bin truss_transfer_cli
# To run the binary
./target/x86_64-unknown-linux-musl/release/truss_transfer_cli /tmp/ptr

Building a wheel from source

Prerequisites:

# apt-get install patchelf
# Install rust via Rustup https://www.rust-lang.org/tools/install
pip install maturin==1.8.1

This will build you the wheels for your current python3 --version. The output should look like this:

maturin build --release
🔗 Found pyo3 bindings
🐍 Found CPython 3.9 at /workspace/model-performance/michaelfeil/.asdf/installs/python/3.9.21/bin/python3
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.75s
🖨  Copied external shared libraries to package truss_transfer.libs directory:
    /usr/lib/x86_64-linux-gnu/libssl.so.3
    /usr/lib/x86_64-linux-gnu/libcrypto.so.3
📦 Built wheel for CPython 3.9 to /workspace/model-performance/michaelfeil/truss/truss-transfer/target/wheels/truss_transfer-0.1.0-cp39-cp39-manylinux_2_34_x86_64.whl

Release a new version and make it the default version used in the serving image builder for new deploys

truss-transfer gets bundled with truss in the context-builder phase. In this phase, the truss-transfer version gets installed. To make truss-transfer bundeable, it needs to be published to pypi and github releases.

  1. Open a PR with rust changes
  2. Change the version to x.z.y+1.rc0 in Cargo.toml and push change to branch a.
  3. Run a `Buid and Release truss-transfer" action https://github.com/basetenlabs/truss/actions with "release to pypi = true" on this branch a.
  4. Make x.z.y+1.rc0 as truss pyproject.toml, and templates/server/requirements.txt dependency
  5. Edit truss to a new truss.rcX, publish truss.rcX to pypy.org (main.yml action)
  6. pip install truss=truss.rcX locally and truss push (on example that uses python truss)
  7. Merge PR
  8. Wait for CLI binary to be released under assets as part of a new tag (https://github.com/basetenlabs/truss/releases)
  9. add the CLI to the server.Dockerfile.jinja to have it available for trussless.

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

truss_transfer-0.0.36.tar.gz (72.7 kB view details)

Uploaded Source

Built Distributions

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

truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_i686.whl (4.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_armv7l.whl (4.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (4.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

truss_transfer-0.0.36-cp313-cp313t-macosx_11_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.36-cp313-cp313t-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

truss_transfer-0.0.36-cp38-abi3-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_x86_64.whl (4.4 MB view details)

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

truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_i686.whl (4.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_armv7l.whl (4.2 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_armv7l.whl (3.9 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

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

truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

truss_transfer-0.0.36-cp38-abi3-macosx_11_0_arm64.whl (3.7 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.36-cp38-abi3-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file truss_transfer-0.0.36.tar.gz.

File metadata

  • Download URL: truss_transfer-0.0.36.tar.gz
  • Upload date:
  • Size: 72.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for truss_transfer-0.0.36.tar.gz
Algorithm Hash digest
SHA256 7778b634e8267eb113a00dc8110cffa1a7cf61d965fc8e021518f0d4ca51abd1
MD5 7dd71483a55a6b2c974f0ed84ecea0e5
BLAKE2b-256 470109b4b3f6476abbb6e3be02553df70b5219176f581db3349eb9eaac1545c4

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97f3642cc61c40fc49aaf61c688789ebc2b5e3a6336bf63099e387a9f5b7132b
MD5 d0561fbff16f14b998172ac707e406fb
BLAKE2b-256 cfa8202b640497dde66251ee5abfce590cee68e6ad25f7c4873aec6d57cbdeee

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9ff44f2a63708a3befaf763796c84b1f7bb06bd099f1cef451b00daa62f15a06
MD5 c6fdcbeeae6e8a0f1814d371a3b8e681
BLAKE2b-256 7baa83d7fbffb05733056fd2a8c814ae4841f26ab0b7fd9ee68c9a7c50441222

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 132ad76a09f22d16b87d9bfaae3ba179298a2ddd71f5278f0ef6fad904eb7c3c
MD5 b05f1f93fa0378358e259c33832e98ea
BLAKE2b-256 755b2caa9f7391cc3370c4a1ce0831f6cbc86e5561c9f0ab34bf25f82937bce5

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bce7ed62e429cab1b0ad00bba58110ba2de10e88642e0310cf506263298ff4a
MD5 3b4517b755a48c703848b49973526dd2
BLAKE2b-256 84ad7693b3b059b6bf2210a7a513533ce835b1f68b08c7440a8649be43348840

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 12b91fe4a27a924df1b4b5bf71409550d37f0637e6d517cab89bd5de34292df2
MD5 efeab23918c5d678000e828229cec326
BLAKE2b-256 e121570681a801e8072563fc78589e457d58dd542fc894c9b103a5d0afa1ca0c

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ed2387ccc90fe0c73ba0ac381c8663f0852487490c6f442f059537f337dc7b9c
MD5 6663cc29d4d508a3e2ef384954463ce8
BLAKE2b-256 c1f83ac3d4e9f0c389ff99bc212b0b57d645fdf4fbd6ecce389169600d4efa82

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 30d83c5cf3c31cd96eeebef3fe970c0ec49f586d0da3806083cfc2c66eee83df
MD5 fc0a61fb3a0f28b0203347028b4dd5f2
BLAKE2b-256 5d0f7a77a01659f1e9e3f04556f7babff943de4dcb1c5861c4bf017d0f62e79e

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d5ecbf2b4bd4ef2cf665e6966c512c2d5e3012a18c89270bb67016837e5f4eb
MD5 69d4003d44121ddd926b541097ce7e67
BLAKE2b-256 6f82afb375697cea00f412c003f427cff755ee45b7bca57f155c08c9672cccfd

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1b956e1ce889c61d18c84a50d8a0fdf78b77e8cd5f868d4bdca02862563261b2
MD5 c91b3bed1155ac9a9bdc2fc9e21ed90e
BLAKE2b-256 21c9a01a7a86f0811b0a8f4c502d612119d2742405fc449ff2b15d09e5c66a49

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cea6288d606e0a0abb7113905b9b2f633a9f511f3b4c5a3b1aa6543db0885a0e
MD5 90ae94236893d0491ebcf0dc1ae9cdf2
BLAKE2b-256 00d088244598ce495a1191ad9d265fe77844700e8e4a0141237f0a996fd72dd8

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4b63ad10f78b48a54cc4a1eafe634ab2872cce913e5c8ddeb4e489c07f68784e
MD5 ae70b4f0771550b4a68e95be681a19b9
BLAKE2b-256 95fcfe8760b3b17bb10455d48e58b7c4f325137cfc139e70e53dcaa79039de00

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1d4be7400add90c58469339a06c75453a8654167c4fd0d20733f1daeb50233be
MD5 0183f8d72aa7f2a1d29c3471b2cde355
BLAKE2b-256 05f1942a18051ab4e59905459e4a54f13bde376ab8f5131c43e976f4543f7ff7

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e050b7d39a5aa99d90ff8637bfa2e054b8a3f6701056c6b0efdc1a4f72c75a01
MD5 6df54ec1e877f2e4322e533864ff32e5
BLAKE2b-256 4f8a47b84bed7a75eaee41332d627a55b3ea6e385bde08b217fc9c0410e67210

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e3724e1aaa51fb21bea18cf851e3231578209bded91c759dad70bce8d8d5ab27
MD5 1489d8dcf067de4cd34f933d3c4b1614
BLAKE2b-256 e485fc8e64ec6d8fe336f6e40b1728482573a7b5f3b3fd117371011a5761519f

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 fcabd7ea3644607fd2b5f9e6ac1b942580a22f4af40ac07ef87c54cf90e54b7a
MD5 b67e948071a2bad114b28cd39888f65b
BLAKE2b-256 67e0153ceab0c60f4baebb4d69f9089abf743c1b90249987ba386c4d1372bf63

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a8fbbea4222d3119f88e0a386ea56f4ba11b34d10c2a062b7c3a5da8c054e6ea
MD5 e6919a26a4c0ad3df7e774efcbd1e5ec
BLAKE2b-256 5be3b35af9b01151e07b5cb1fd208e211b0a384f3bc7954b906abdf6d474a88b

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6ac199aca2188e99de55837f9159a4679d7ec1d69c3d63c65565d8b0c9cdfa9
MD5 7bfa0859573ccea704d0c318eba83610
BLAKE2b-256 943bf2a4be69631796b9e631f695d07fdee76b94ffdda6f642214dc46b9386e7

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e0e2c6e031bc68e414b7f187c85e39a0f3ddce11782b3b5077d6d90ab94f225f
MD5 8cc6c0afb93276b43c58f5be7b64199b
BLAKE2b-256 a9e1711df1e39fa8481805797ccee1106ce4e618f2827b028cba34eaabc628a6

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0fad4285edb23da68762713ceb0f14908a67080400c3f0f37f75631b495cb440
MD5 6a3e6c20f6ba82fb685a4320de7308a8
BLAKE2b-256 907600f19324b1b3e5f5baadbbf1a831c9c0feba53556bf58f213ed5aa189088

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1183b20fd9f395dcfb2e149879b4214fcb70603a3df58729019b1e7397f13be0
MD5 3cad02657b8faed5308f4aaa478a272b
BLAKE2b-256 bacf18f0d593f929f0a23212e80efd40e381743987f029701e7c2a2d93cb9511

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.36-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.36-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ea7a4205e6b10853c80288917d98fca8378c9b68ae18f9073765121de4322f87
MD5 5752c34ebd29034ffcba70c1bd224785
BLAKE2b-256 89ff658d6b5160d0ac3f229f18b59fba127dbd95fec147fd5f8bb87c99321319

See more details on using hashes here.

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