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.38.tar.gz (74.6 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.38-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.38-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_armv7l.whl (4.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (4.3 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_armv7l.whl (4.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (4.3 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_i686.whl (4.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_armv7l.whl (4.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.38-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.38-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.38-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

truss_transfer-0.0.38-cp313-cp313t-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.38-cp313-cp313t-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

truss_transfer-0.0.38-cp38-abi3-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_x86_64.whl (4.5 MB view details)

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

truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_i686.whl (4.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_armv7l.whl (4.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

truss_transfer-0.0.38-cp38-abi3-manylinux_2_28_armv7l.whl (4.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.38-cp38-abi3-manylinux_2_28_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

truss_transfer-0.0.38-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

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

truss_transfer-0.0.38-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.38-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

truss_transfer-0.0.38-cp38-abi3-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.38-cp38-abi3-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for truss_transfer-0.0.38.tar.gz
Algorithm Hash digest
SHA256 d8f169d4f86a8e7a7cd0dd34f20adf9f46fa16e8311897926d8d47c5c763b9e6
MD5 e32729fc7961ed361639812f4e93632f
BLAKE2b-256 81b09bcc29b63c4e67c146b6bddae5bb01c79f7e429f456b4e177d454825a824

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a8f19c8a85db8ed60d63efa9cc8da74ecece8cae05e13ead35340e8c972d166
MD5 61d12c48ea5e765f46a021a12e97e7ed
BLAKE2b-256 41e260f258ba5a707f6bfc577e6c52af0edc138677538148b28c4f3c61982385

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c046fb07c37396ee2dcac191010944e6b362b6a313b9aeba580d5484c1ea1ae
MD5 6743d23fff7897f32b07328b7a12e0bf
BLAKE2b-256 187587bd94a63a4e9be580b83c483b91d2f10a23d66a5809b91c0bbf16954539

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 32c2eebe2c655884da95dd96833cd13ade99e7f11cdc2ba4d51b1e4ed380b12b
MD5 8658a1a704ffa048c86e9668701a194e
BLAKE2b-256 ae48842c18aaeec0ff32b3f6dfde1d950134535f5d2638e869f342bd56ed3f8c

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9b4049eee6112e4c7f90c41b032922048064aaa31558a3ab433ee7a3085a00da
MD5 e0bc44c390aaba80ca9852fc6d1b3ee4
BLAKE2b-256 016fad709f0054437ddd20f335c3d133e1961aee114edbd768500356baf2c677

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5a60dd2ced1bc9a07b0d6941646c2e31e6e74a455524fc136de159d4d14d4232
MD5 d6a6632f08a9f0159ecb0f3579981e47
BLAKE2b-256 15cb8796dfb6159d78e410935f955e34f56dc8342f6121d5bf76c61a7c212c6a

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 5fe52080bfd69aa7366646c38bad5829418f9995cf28dec094fba6bf98eb41e4
MD5 30415e1d9e22ecd92d401d016331eea7
BLAKE2b-256 45f276b10afd617754bfe44ed11baedaf79c3a48650715b9595a9b5b9f543145

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4b2d54b278691280d592f0006f4225d2d0fa7d8a3061a7919a73cc8725d2142
MD5 c20198c2d3a1f638cf462c6992fe5ee5
BLAKE2b-256 dc817703965828f0cddbe095a47da4ee2b11cded549ee7986139c9ebcbb17a3f

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.38-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9489464a1d1626b49406a1cc852ff787c54646acdc1061a7d1e5274c61a180c7
MD5 9879da56cd1bab3faf1c0d1610f4e666
BLAKE2b-256 930d43e2f5c04da2acb484397201230e6a826ab63fa78881f3b7939734ac5d67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ddcf951d2691f2423c0427aadfa3cf6ef795c595708c5c280f63fe8a539c4946
MD5 44b8cd24eb03be9f7e1a6145eb51412b
BLAKE2b-256 2fb7e5c568e37847e6b2e92b1473596f5d0534b7cf09344801d08c1b597e9042

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 349d430c8296d15f955a9bbc7a8ab62a3ef598b3a4325722e917b74975607ae4
MD5 51482d32ec028271e642d73d2757c757
BLAKE2b-256 e1022186cf1f935114e445f9541f9369bb3e04a6f5164e8ff12a36475697e8bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a1e4c5d53502d6f09a5ac8b132a2a039dd9e2de55a777e285bf3bb7bf6cfc61e
MD5 7df4821e7e6a15864de36e906b0045d9
BLAKE2b-256 6e7857e0ea30af979a87e95c5485c4d96c1b4e1e3fc9d958328f76e036f71ec2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d4cc6c5c7376870728d2aff1ec0e8c40a070ab47f1b316712d865b952406e45b
MD5 da54d37b79e5e8b024f613133d9c6a1b
BLAKE2b-256 6dcf650636bc649b65a354892b4950f2198a02033cc4f1273e36d556de3f21a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65df190867014a094099739d5900546b259f27075570653b5b9fa7b42fb49ef4
MD5 3aa94c18744916760ba2dfc817b81227
BLAKE2b-256 644775a1d193578f8c294ce09912608ebf456dbfe08c4707246bcb7e9014c73d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a667b6fd864b2c9a08e510bdbacb8029d868117c6ab0cc4d1688ffeb7a72b404
MD5 8957dd92be677cd735b98e3b8ee6c192
BLAKE2b-256 4c4e48d7ffaf7946a91f2c2cd927d4a03f60836ad1650c356cb6e8c94e7fd249

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2ac764dd33fa8efc9713832ba32ae02f384b96c2ce790898c04e57b587dc4d97
MD5 0e12734268d74ac0339a61beb9206272
BLAKE2b-256 c2acff8f98b9f28af6a6c4699681684523ef391f4c524a1212d0118876c04b3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c31031a4cb9cc1cd75b13b749dd3b2c4593e6202755f1f4759f5167f5460e67
MD5 94bbd66b3f735b2842a46a98a87fde59
BLAKE2b-256 85ed98a6758e18ba05662cdbcb79f654aebba0e02e8040406b23b934731ab8f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 36bacadcd973b077bd1023165382906a445a2e92958daf1d08346274f287e437
MD5 b2736655d18553d0ef8b1cf76600e8c4
BLAKE2b-256 5524fbb08c23d78a3995ac404e8895f2dcb58553d7a0d674bbdd078e1040eaee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e14737d08d97a193f22f5245be846720d8392086e636d3c0cf210ae19e365819
MD5 606bfe170c6204b0b10f02025db67077
BLAKE2b-256 004aee8a58428cb7cd508e1732dcf3de67be9496a8f09c31ae01de1f432c8194

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5442bad6445f3838cda15ec01f4f3b348b0294d4177fadf527c4c51bb4eabba
MD5 5fa05ed9fee6c865abcb1e0c7e506e77
BLAKE2b-256 c195e4d282b079851875036875f515c603530a8c38818c5904f92da41f1ea56d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e37cc4dadd8bd20ee2961cb30baf25f6f6e4204b4a7364936959810f4bf15b0a
MD5 70863187e3600cc5eb35bde13c9c711b
BLAKE2b-256 b89a51ed432bf35fd0f8a75a7e0168e256ed17833454e23c87db5504d5f67284

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3b93f3e1cf56fcfcf07bfa373c4ce213a7e96005b0e9198c8d8233ee08a4a33a
MD5 5631e0644284ee86644816e6144445df
BLAKE2b-256 545759ab63ec4d4874622a5c53a69e4479b88cb264ac914ac506a6b8e75aac59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d9deb03de9c0edcedb320e0d8b16894840116cb918487d946ca71fa7aa3788ba
MD5 f68855f879a28b835a0554693e2548fe
BLAKE2b-256 2ddf13924125eeb1a6d60c9fcf0a79061cec056d13893497b3c420d57a9b146d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 7baa43526f0cee591332767a834e8fdd9366649e316a468da6806b75bb58c1ad
MD5 c19c7f8649524b8f778091bf2238d8df
BLAKE2b-256 0a6d8c3d2bd8eb96851c1b3104bff3969e1fde2ca9f939e59f81515167b3c519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fadb8297238dfb671af0cf6eaeaa7d580a97e937fca4869fd4c7f9bc3a028be3
MD5 7c4c13fbaec862b65cf13ca7fe9c5f99
BLAKE2b-256 2365246c6700eafbc047ead5c734160a7bbe5a91c1da1de91b1ce545a77c4960

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 571b36b780e78a39d72596b294d6a8ab9c5ecb389a02c59922c32352ff409743
MD5 d9a8de61bca7589125a3fb9337ecc8ac
BLAKE2b-256 b0ac82b5d591034625e40e63a9a88903a5e9c2ace09a8ae6cd5402c16cd90fd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 affd54b473dc871564161595bb158b9614b5a54b95627e4b12cc85cc9764fd41
MD5 a6b9a16d130e006371f3dbe85b4625bb
BLAKE2b-256 2a080315f5cb9c2413fa2099e3e84f2eeeb41ebc60f3fbb6b6f00d4201ae7edc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 387514d8cb585800a4d6628b8dece6a98cdde6cc44a78bf11d83fdbc09bfe7fe
MD5 3e5cb20d9a7dd687e7809a20f660309e
BLAKE2b-256 a50bae7417c754826f59912a8d4fccc390075fd23405da8f3470501beccb1f6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a9d6c2d95532818e28d8c69889c646ea45c31e3119b25df65c021e56339a0eb
MD5 2f1c8ee60b55b99754401d5021897fe1
BLAKE2b-256 a2c1a2e5d73aea67623e4d5fdb2725f88c064de54d8cb0a596766a7032df3180

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.38-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f7912b17c6f12620ca615a6c667151de768d05a1ec6d50db2479a3f49e25741
MD5 3cc5f1376d5b96173d2b7e0261b40b8b
BLAKE2b-256 4c98cb3e98c07368f9443de2be13456cd79950dff117df9c6bf15504a38f2d20

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