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"
    )
]

# 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="microsoft/DialoGPT-medium",
            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
        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"
        )
    ]
    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/bptr-resolved)

    • 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
  • RUST_LOG (default: info)

    • Controls logging level: error, warn, info, debug, trace
    • Example: RUST_LOG=debug for detailed logging

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 /cache/org/artifacts/truss_transfer_managed_v1
  • 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: 350)

    • Expected download speed in MB/s for b10fs performance benchmarking
    • Used to determine if b10fs is faster than direct download
    • Lower values make b10fs more likely to be used

Example Configuration

# Basic setup
export TRUSS_TRANSFER_DOWNLOAD_DIR="/tmp/my-models"
export RUST_LOG=info

# With b10fs enabled and authentication
export BASETEN_FS_ENABLED=1
export TRUSS_TRANSFER_B10FS_CLEANUP_HOURS=48
export TRUSS_TRANSFER_B10FS_DOWNLOAD_SPEED_MBPS=100
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.20.tar.gz (60.3 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.20-cp313-cp313t-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_armv7l.whl (3.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

truss_transfer-0.0.20-cp313-cp313t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.20-cp313-cp313t-macosx_10_12_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

truss_transfer-0.0.20-cp38-abi3-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.20-cp38-abi3-win32.whl (2.8 MB view details)

Uploaded CPython 3.8+Windows x86

truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_x86_64.whl (4.1 MB view details)

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

truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_armv7l.whl (3.9 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

truss_transfer-0.0.20-cp38-abi3-manylinux_2_28_armv7l.whl (3.7 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

truss_transfer-0.0.20-cp38-abi3-manylinux_2_28_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

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

truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.9 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

truss_transfer-0.0.20-cp38-abi3-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.20-cp38-abi3-macosx_10_12_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for truss_transfer-0.0.20.tar.gz
Algorithm Hash digest
SHA256 8f6aaf4dc8a3dd45170d012c94d62bec98eff33d9b211dcbe527888deca5e845
MD5 000bc98de1395e35922d6c0a3de39add
BLAKE2b-256 3826284984d57a38a887682b332df26a2f2f1be4fecd20fe36d0aadc368775b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6cae85e6ad5c4a48a05f5773f6d0a8c289a9e69c713a923f309c85f6567082d
MD5 cc322e9f32b235d2a7c1d6f7836e96e3
BLAKE2b-256 92c6bc9bf130c69894ff7a38fbe4f5b6ad13ac6e5463d890a6c90279e33406ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ee038924d82bb4734a1bd2f909155483bb7342564a631e8ae5f95b0a6ca64c19
MD5 5e229ab28bfb68f275d09009ff647682
BLAKE2b-256 4c0a0b2258757407af4b953eb9ae7526011acc2b4d92af984c97250718e77cc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 29237a1b84ba70a825bbcaf84ca151c3ec739dbe067d85ab1203331885c2b549
MD5 2ed2f7108e4f36eb282d67a9bfa7aa52
BLAKE2b-256 992477377b62b7a8c893488e430e41665cdbb26c0512e675f63bc3d97657f4ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8b2233b6d9863317c65653b9233f0851390ecfe0b959fb7a8bc4fd5c4deae6e7
MD5 dbb62111558db1c05d2a2c6e3aacb2c6
BLAKE2b-256 b65ff8f8497f80145a0962ecefb39d85a6fb06879105a042fca046ca37ca17a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7ca8c8448d763d69fc36213570564778069923e03b1570aecfa21716265cb4b
MD5 057db6a5eef6a507a09b4fa424f86b3f
BLAKE2b-256 f1e9aaeb82afc8dc1949fedea751863d89bfe32429120be50d824978f16149f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ea2794913625e0e3633f08485e62d75568ea0e5e9adde91484dff2b1edb3bbc0
MD5 db8487c1b41f6fc02d08987bee097a84
BLAKE2b-256 3a1ecc38655b91056bc897ec8c2610cfa653dec26e6ae54dd8a4ab3b2ec997a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 03822beb427432827f5b45e1b4175b3ca09a0b6d5e26e4110840be3880da6806
MD5 c8372b77711ba26ac140c62636394f2c
BLAKE2b-256 3112a15cefa4f585456b7e51ce7331b16a8947ad20e3452d4e756543c1e9c611

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e1a05281886a560f74e47b964b19dfa94ec71bddcab71ee269e3b8de6ac8225
MD5 451133582cc201955d7b1e95f60e88ca
BLAKE2b-256 eb5d9ad37c9681cb783983ec670c0538568407fb99c2b9c7ed23cc39658e9de9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b2d176ab49c2f73e16c743d54a43840b14e6a2da42a3a9644a60a7ed9cd043c6
MD5 7a30f493dacbdffb25e3f385935c0f5c
BLAKE2b-256 6698e78b23db43ec4859736c72139fab22f093c71def99dfb063e82796516388

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 042050cace286a746fecc3dbca44c4bb2b2d0c4fe730e3d5ff439127c041eac2
MD5 4a87e571ff47839e751a49b390583c5e
BLAKE2b-256 bd3761cb4219b2f64be3cf028642298ecee89af8fece0b9fa493d0cb206753df

See more details on using hashes here.

File details

Details for the file truss_transfer-0.0.20-cp38-abi3-win32.whl.

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 f0a68fdd51ecb67211e35dd4a4992d7326534fdcb716d106fbbfff5cc67723dc
MD5 89d3c02a3e76bd6535836a80176b0d3a
BLAKE2b-256 87288894a9171d1b6cbcc2c3a1282b4ce5d223ce75e714b8b8bcbd9b8e5df183

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3582f201ffd26247b5b8d76299f224584f3f824ebf2a0cc9ef9be8e12084d81a
MD5 6d67ff52b3adee85d7b6e71effecfe5d
BLAKE2b-256 09a01ddea70ec85fcaf63dceba097a41bb0213561685f732a84ef1c611df1973

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 45a79b7336708ccb1c9064cba0d8d5d14100f0c7b062173824023254f29a0260
MD5 a44a026bef83186977a6bc6238a47355
BLAKE2b-256 4fb4332992c004f2c4357dddc7ac6ab67b7b0ab61e3291b04c17b4981e01d70d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f163c2cb14d56c56e73f6a58a5a56c987f85ed3cf8487b6f026a6417fdcdab3e
MD5 ba95b76b8324a52327c85f5a82ed2cca
BLAKE2b-256 50674f34127b48ac38e4a44c312d62bfa5721125d1439abda175faea1a16fc02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f87a3f20ad60deebfce49fdc71cb01c9e96b941cc5a8085b285f3a326f4e9f10
MD5 84b36572ed58cf8c532c568d75c8a259
BLAKE2b-256 f1dd82827916fc22ead2821942811f1248b4773d833ab44480132b9a5dca5776

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 48e5937748c9058a96fc014a4ba04bf10f86ff4ae98e1525d0b3805dfe1f9acb
MD5 d830de40b35d147f5d9cd23effcdedd3
BLAKE2b-256 0c213996e7881787706e87be619603142885c1c5d74b0053ecd6103f61857fd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca96fa646256466abfb7d9d1a329716a729c9e13e55fd968dadd7f2bf336f1eb
MD5 bbb74dca8dd0d3bb9f8a12807f3fd3a5
BLAKE2b-256 a1761b8e416d098b708d06b3a5ed2e99289a3da48e31a0a5adf54ad7620890f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f3d947373747d50f42502abd85231c3ef0cbe7e48bc8199709d97ef8edcb0e5
MD5 329e61fe46e76a09c549f4f2b6463c9d
BLAKE2b-256 01c7bc0ac78fc7c5e34a1eaca591272651efcafb0b246543eba127a6d267af3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 47e23368db0da2a61cb1ca754d833f5ae6533c2f92584180d3d7facb7d79a6d7
MD5 98354dfcfa2c76f4b5d514d0108359ba
BLAKE2b-256 8139717966560f90b9ba8046c51277d8481c6c6c069b35dd5ee242445ff6639e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 86b30e48513b74f0c46a8c3f8d14ac3c3da0fcffdd71a4916bd8c2766c915acc
MD5 107ad09fcfa4a48b0f97ca0aa8fd6ff0
BLAKE2b-256 d89f30f80f8afe366f6b816c81a3ee3b4cba15e683748da64bd3d1f8c3ff555e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 016592e091218b0406624676ac48fa6e3a25eb882374207d8bc6dcbc1959645a
MD5 9888c4e504c6f997adf021e988ba8909
BLAKE2b-256 0ea440a4ee398421767c6ba63bc89fdae43a482d48a64adc683c302c239e0fab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.20-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 045da25aa2ce0fa2ecd88cbd342e2ddb1fd75d45e3a691bad37c9e8749d49247
MD5 536ee64353b1a1054aad35d484096d7f
BLAKE2b-256 8e8d463ff1fbdf077350ece9f2446fc652d45f3b80af8ce5f87fe2887591ad80

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