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.40.tar.gz (85.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.40-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.40-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_28_armv7l.whl (4.2 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_28_armv7l.whl (4.2 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_i686.whl (4.6 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_armv7l.whl (4.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

truss_transfer-0.0.40-cp313-cp313t-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.40-cp313-cp313t-macosx_10_12_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

truss_transfer-0.0.40-cp38-abi3-win_amd64.whl (3.7 MB view details)

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_x86_64.whl (4.7 MB view details)

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

truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_i686.whl (4.6 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_armv7l.whl (4.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

truss_transfer-0.0.40-cp38-abi3-manylinux_2_28_armv7l.whl (4.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.40-cp38-abi3-manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

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

truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.4 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

truss_transfer-0.0.40-cp38-abi3-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.40-cp38-abi3-macosx_10_12_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for truss_transfer-0.0.40.tar.gz
Algorithm Hash digest
SHA256 32427267f3395678f1592c4874388198eca2900f780319253cf246b0b5b8f010
MD5 92cadc39d9a00f7939883369abddf5b9
BLAKE2b-256 a0451f841536ff7922f22b577b1a8c9f6da3164c0935f7553b603cd26f1cd3e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d15527d0b657a8ec4d5886aa714536a928206153c0df93305d6a61892658a821
MD5 97bcaa69a394fe7331051792635002bd
BLAKE2b-256 39a9452c20f38c9aad695a1ff2b6136c879890294b7e27c8f8e8c05f02a0945a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fcb7ebaa0957b487895cc3267d13a460f9643426b2d2689afdb22676ca3fb1c0
MD5 9399347ae4b18aa18d8ee8b6641aa186
BLAKE2b-256 6eb5887018215f278bd1e4b7cc491eeb6b3530035478da9c7bbb4d66232263a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 15e10bb76ce5978413054057e09de8a35c7aa80600eaba675cb618150463f287
MD5 42d601f2aff3410ed4aba1ac5e796aff
BLAKE2b-256 25065629c9888a03bf82f479cc2fb7b28b0f05fd99da30e919b33b11687bd326

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fa0a4890dd059afd16676e6cfdd20149b7409e72d266f6f20de64f3a09df32f9
MD5 6883a612a741beed98984ba394afa977
BLAKE2b-256 86c9babc25680c0c1a26c58a1e4f3ad11e86a38cd160ad3fe9e945316536ed23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 73bf83d3fb90cd0eab5890facf580072515b7dcf20e05d98787270d20e5eb606
MD5 636b62255a8ea29b37d06e8011411335
BLAKE2b-256 07e11e3548e14b13f5b7d123436e48880580a7d2ce71cb7495afb6bdbdcc6efb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 39972430716dd3ff64338687b14727614511dd6087d7900e2eeb5407fd2e85a8
MD5 dec90e94f529830685090ef34dd9230a
BLAKE2b-256 449266121a97950ed10b3620a3cc58ef3ee20a2ab5b322c437d81905f1dae0c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9bf174f0168bb833b9c19047910e8a175c5edd49a6306a65b833d7638712adee
MD5 87933d3c2020cddb3eb6abe6100e5682
BLAKE2b-256 7d908033696ee49e70ef7057bb4e536950f4ebb3b95cb6770f00eb0efe2a333f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6f1e77f16304d4d8e7ecb773d58847f53602dc775e5b4d90084de156162ebe4b
MD5 75517841cb75cea4c9de401aebfdfb99
BLAKE2b-256 d3c3a44b655561f2c70702916da55891a63db337499875351fa345c7b6e208fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 168d6febefa56e35bacd8c591286f4172e298f916bd40e89a6d8887afddbfebb
MD5 2c20650962843b5813f29a8d73daa6c6
BLAKE2b-256 084e1c59d538afa9a8908f1ff2a9eb747704cb2303328c52aa8e2e6f76042b70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 662c29cd19271558ab26305d6a2ba1f3582ef0618e72c8c285697d9939576090
MD5 e731459fc81c261010b0af7288596c66
BLAKE2b-256 072a9345d9657f46b4d8f5013a080186bf41037d8efeac4a282b92b4bbe3c248

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 79699ed722efca4085266c9ef34280fbb74c110374187ab2ec7f79460a06bf06
MD5 eacc0008e26e35c4a0d7b38b3c5f38d4
BLAKE2b-256 cffee622669b47b9016d0f9359cc0a934d229e354e146ea232c92682cc6785d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e0676b1a39f54128087af80c1847af65f5ddcaee62bf02c2591ca796f4460a6f
MD5 c111a8a65b5ee3bd2b8d207716e6d2c9
BLAKE2b-256 7e9f7a5f0c518a7eecfd85fd013dfd3fe9a9f157840024541004b07cf7117f49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82626a7ed76c3972013a8f9bd705ab8e99917fd9c2bde8283ab0b1b2d44358c5
MD5 6fcf67f046243d3b643738d105f27eaf
BLAKE2b-256 d2f6c97eb0c96629e021318060d53b798fdb67236dd05857257e0eeb5d042a62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6e886d402599c20c7c5c5a3daf8a5624c2c77830b8aa485439aab51695e0ea38
MD5 fd5383c3ea59c257325745259e59aae0
BLAKE2b-256 74df6e9db75100f5f3cc79e2698864da21dafe9c5bff71eefed521fb29017c8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4c82235ebcd9fa26f7092837af65359f6beef45107cdbeb09345974fb246de5d
MD5 5a39bc925c61913becebf7bfc168cbeb
BLAKE2b-256 9d4f0780b9e20ba8b77fbbe8da7d904f5a637fb3980c0947290aef17ea842bd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15e51ead110965a710ccd039c94e5f727ffa6b7170475ad99ef7035de9d9d15a
MD5 34d2f24d344f478ca308e0c32c698fc7
BLAKE2b-256 e09633527c9f21c1bde2abbab69b1bd70c1cef2e57a8cfad2584e128441f7fe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bfbe74a2693a4bb5416888528217e90a16eb926d1612d9c8849c91ad62cc39c8
MD5 1f2ea0aec58c2324f59ce9ab41fe9904
BLAKE2b-256 cca145b6ebb5a661a5556a456673987a569051ffcf3a28c974f49edc5da3aa66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 882537d27135fc78b9c9d6594aa782ffd21c21a9d494edd891bf4b45f638b350
MD5 2b831b42a88370df3dc9503808155e22
BLAKE2b-256 e8e31ea6441fa3aea4ee4e23a3b974f36ae264e1e08e6976cda688535e7fb54e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc6975afebeefeb8243165c71facd73eaabed7674d243fe4254cf79c989c24ba
MD5 98b054ffb22d2009e3e6b3cafb0b6290
BLAKE2b-256 7724f2372e768c284c941dc15773b6cb5975847c3c04243dcb04320922c3473c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 61660fdce5f4a07bf2f3e04c69ed3a105070f1e5685e4ce361a51b168d6dce2d
MD5 029ba1af91704ad5cbc904b8b87244ed
BLAKE2b-256 60d998ac364eec5985a8c9995898f801eb0e95daf182e44645e6790ba44a16f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 52d1c839e95c104203bc13c5066078431d46ca84600b308d2f79da17c37b898e
MD5 8a76b48f27b176b0eed91adb902ca45a
BLAKE2b-256 18b40e8ddf637f7724672f572a0bfc0c30c3fd1988306de37d4ecbc99e84353d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7b87a60368dffb21a90c640865c2ff1532cb716237bb4c27c4b004d0d58ed798
MD5 9602aa64ff209d0f1a7954395932339a
BLAKE2b-256 9b13664eb2c3d2e31f97124f7e4e2c05c3711305d1780c067b9b95f311861805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 761056ffb3886d752970caf2cffec35acdc636cf0d212d070875c76dd008380b
MD5 b02f9618461af28aca26d9edf7eda254
BLAKE2b-256 707db2f82c8d92b5c482e6f644b910f512b87b185815800a2d555d9c37791c64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21720c50d60fa329eb3512fe34d693169b145fdf0b312b80694b21f4f931159d
MD5 63150ab1a4fabee2c3ba41d66e46db3a
BLAKE2b-256 f6bf57acad273963db51403f4282fb79e1120af4b134746a5177c0a26c4d0519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4be290dd732027392ec543d917a3f3e576bc7ae2bd546e324f2965517c2773c8
MD5 143a58c7ba1f7e7b3ad82b90d3c4e9a6
BLAKE2b-256 f4a185b1d190bae8303eedc88d315ba233ded030005ddff934676e4682a7841e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6ba4d19e8644e5b16be70c2273cdb799b2979def84622281b41d70af8b659721
MD5 f2ab627ac4d37c118bba5dd732c5ef2c
BLAKE2b-256 2f01d4b36c94504289e21f8eb556166dde0c30d013a9fd8584274b841074efc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a7be40c0249bfb45d07a74594e36d0fedeb38497c9e77fdd327cecc8fa21fb81
MD5 bc9456585d851894c1e1665823c36dba
BLAKE2b-256 37eb45c650bae44080c0f541f6ff7500e6e088d296cd9d7ff4e3e4c5efeff37f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f7882f291d11c393683883396a86abef785bf8975af35ebcbd0cb6eca79a20d
MD5 f1729b27aca043329d91ea5177298dba
BLAKE2b-256 e6de30702484c7d9dab74c710356b360cff5f613fcab78c5af3ba3d7748c75be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.40-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7657dd5894d423c618f97a3ddba085061ec8b06753737ccec296ecf923c04067
MD5 9d097cfc57896a0092afa73a693f28da
BLAKE2b-256 3ed49dd7ca18821b623b8d9952a38eb96c8f3594c76d5b6bc434e0b1ce285b4b

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