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, requires both flags)
export BASETEN_FS_ENABLED=1
export USE_BASETEN_FS_TRUSS_TRANSFER=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
    • Requires USE_BASETEN_FS_TRUSS_TRANSFER to also be set for b10fs to be enabled
    • When enabled, files are cached in the directory specified by TRUSS_TRANSFER_CACHE_DIR
  • USE_BASETEN_FS_TRUSS_TRANSFER (default: false)

    • Secondary flag to enable Baseten FS via truss-transfer
    • Must be set alongside BASETEN_FS_ENABLED for b10fs to be enabled
  • 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 USE_BASETEN_FS_TRUSS_TRANSFER=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.42.tar.gz (86.8 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.42-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.42-cp313-cp313t-musllinux_1_2_i686.whl (4.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

truss_transfer-0.0.42-cp313-cp313t-musllinux_1_2_armv7l.whl (4.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.42-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.42-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.42-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.42-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.42-cp38-abi3-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.42-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.42-cp38-abi3-musllinux_1_2_i686.whl (4.7 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_armv7l.whl (4.5 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

truss_transfer-0.0.42-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.42-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.42-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.42-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.42-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

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

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.42-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.42.tar.gz.

File metadata

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

File hashes

Hashes for truss_transfer-0.0.42.tar.gz
Algorithm Hash digest
SHA256 fb03eca8b5f242ba3c6e4d01177676306efb4d93d5587f718163ebefaae7602b
MD5 37967e567f23be7be6e1e2c7d3d1a8ac
BLAKE2b-256 e4fd7ee0fefc94498113cbe343fcb57b24b8afa32f35cc8f5adca08d97db1350

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d6e66a0f6e09833fbff8dfbebd475ba8c23de70b875db3110a3f7d727fa98cac
MD5 f33cf78e915ef3df143e76d30dba3352
BLAKE2b-256 7a9362060e28d010f843b9a1841190bbbf299a9ef35dbfb353076ab212a5b2c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 83530cf5fc3ffedab7973015ac732026a4e4b462acc09084010986f6e0ac1ec5
MD5 c92efa85940d6b036a24047d2993028d
BLAKE2b-256 82ec0d647258f3e32913105651e007d6c2288ef1214bc59d03178e05852dc3f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 42e7ca37265b16e2e36357d62158104d411276ab9739cbefdf2f811f174a469e
MD5 c4e5b3333f8bfc6059841f648cb30ea0
BLAKE2b-256 91363a19852fc819fb13274aea5e13a4f0c8d3576c26963cb6b0c96acf5b3208

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6ee84537410875ef88fabd5d4a53d3d4953019490676f1ed2d13d9f7620e372f
MD5 00cf0b97ed72f42eab6162425db5bac8
BLAKE2b-256 a83b698688b80c1586882e6e0ad39fdb3660544c526da11f454c51ee00aed1e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca078b2942c0ad19f4f229a103b1c7846a7a6a52b4bcc78c3e19c8a858759079
MD5 72fdd9d6c0ec18e54cc467b5839b748b
BLAKE2b-256 897878668e1a8786da38332b4814f47c9d8cc9dba8545b0287bf3d6c082a570e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 931a17e67ede9a1b8933009971d56a7a1a72233d886b284fe4ad39ef056a3b3c
MD5 12a2d0b368275dca4e25657b3437a2d5
BLAKE2b-256 b0e5883f5a0b7ee83ec43786744c0ac54e4ce2269d3c652c71437b47a5f6bcb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a26d181eddf83e8940eb1a0c60130a3e4b08becb9c00c906fc72406da5fb0743
MD5 1187895224151d0a02f7773c8999a5cc
BLAKE2b-256 95b8febad07851600f15ef6c17d149b10fcc683097f64347076b574207e3a5fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ade3fbbcd6412877e615b80f072ab9d34d1ad923f2094387692a9a57f7f3dfac
MD5 6f2e8dcfa831f06af139384fe6633dbf
BLAKE2b-256 2e93ed8014f03c0eff75716d8c6c9a3b2cb838d599a9064845656db356d67c14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c8a789991869de8c47cd88dadf75390a85b04cbb6cdf89d70c6845e5aaf373f
MD5 4499fc2df859601872a4b049aba7c231
BLAKE2b-256 bb363d57ff3bf5e5b8ef27e0f5e78aaf7732804e8494d52171689fa2318fec35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8aab987cd95fb5bcc24ec4d45768c637a405506f1c810dfb73cb4536ee5f0ee3
MD5 838b8939335017a9793c194e538f7fa5
BLAKE2b-256 212ac00a38e6bc816804aa18ddb3bb680fff786e0fc8bf753fa5b82866689f97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea63033de2cb30800242b3afc97803379b8c8000d53787917d0407d4335991e9
MD5 c92a02f0a099ebf38a115541171bba49
BLAKE2b-256 0cf2af154fbf51d88b3435c7f6933b223e4bbbd350398f14de4d55d38465b8e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d854426f3ed2fc71a3442f0db8392583849c2c1b3e5122665835bf4a1dd5b104
MD5 cc2faaaaba8fadd6ac24f4a5b690b967
BLAKE2b-256 f65c1ee909dfbacb737a48985c83558eb93ebd8d0e7d552056f5c47205cec8c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f2b0c443a4d4bde484e885fecdf4e285f7ab259b44661a75f5114611730ce7a7
MD5 dfa14907e5aeedd6c780f7f53286f3b4
BLAKE2b-256 ed79a489ee321a70dcc98cd3e204fefb967aaef76ead6f3e7cea05d3e1d91a9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 029377a25e136df6470fdf15842a8854a41b8e66992d5ca206bc6c2d2774ae94
MD5 3942fa47cfc2ae0996453dbca88f6942
BLAKE2b-256 6e6f860c2b9f552aeb8fdca3081a5fa67e13f84e42b7c58ff82b3ce858f56a06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 4af6a21aed1effb61a8986107a26dc053d973d30686361f126e058e91da373cc
MD5 87ab8e9b4af7bdd6709b055aa93e2ad4
BLAKE2b-256 4b2477b7f9661ac58820f0a89e0e72afcf67acf8f9c227bccb7f30b9fae72b16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6f540e623607d1431c0817836ed75dc11dec76d5c47b4ed24b249849629cf02
MD5 d4f2ee2a731836dd2e898608f51475f2
BLAKE2b-256 f9a3c1ee73166d7444a1ed2715a7199fde84a63f9e02f686099f91cf4c90f601

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3d4f1cd7fbb3f29a49cc61232f766130744afeae5570b97495e42ae2de31f14
MD5 9074d3c7a607c40ea511cedad7dda065
BLAKE2b-256 de8e6eca7f08a1ee716bddd0594f4e6fbfa2d7cf6d4107d4f9e5d9b605f145b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 58a33118651cdb057644e194c327df98ec01f230f1b0d76ffafa7fd172af6b6e
MD5 e95f3ae4dddf991bc14907d39b817da5
BLAKE2b-256 978972778098376d871aa9878db36b2d9a8f37bde32fdbaab19936294e72b8af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fdb64133603f2508a0ca9fbd8cd1b4449b012a867640438bd0f30d7d968d296f
MD5 d119aea48daba5e7361db0d74a1976e7
BLAKE2b-256 32fa8d01f89298cb474267395019b4d7531e099971d1450eabcd125ffaff7ccf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98baa5101dd18e42bc3235e88dc2467fe49d78e7b8fb1dc6a3d03eae82a3ec6c
MD5 1da99a096f80003d6222e6354a1f693f
BLAKE2b-256 d2ba60ceb6facc176aa9a34ed31f1f9fe3d886fe76c8dcc3e5a466b4f26757c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.42-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc15cafa561eded02c9d4feaa0bc04cce530bd347bac6a18be862f5682578101
MD5 0849bc5ac148cdec3a508b535978e423
BLAKE2b-256 20da996865a7052490c5e7c836ab1961d53d8c6d4e352d6fbd1fd55b92b5f7b9

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