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.21.tar.gz (60.7 kB view details)

Uploaded Source

Built Distributions

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

truss_transfer-0.0.21-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.21-cp313-cp313t-musllinux_1_2_i686.whl (4.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

truss_transfer-0.0.21-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

truss_transfer-0.0.21-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.21-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.21-cp313-cp313t-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

truss_transfer-0.0.21-cp313-cp313t-macosx_10_12_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

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

Uploaded CPython 3.8+Windows x86-64

truss_transfer-0.0.21-cp38-abi3-win32.whl (2.9 MB view details)

Uploaded CPython 3.8+Windows x86

truss_transfer-0.0.21-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.21-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.21-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.21-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.21-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.21-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.21-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

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

truss_transfer-0.0.21-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.21-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.21-cp38-abi3-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

truss_transfer-0.0.21-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.21.tar.gz.

File metadata

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

File hashes

Hashes for truss_transfer-0.0.21.tar.gz
Algorithm Hash digest
SHA256 1681e77757f79dc9d850093eb64225f571ca207d1adeb89b2a9e7040e51befce
MD5 f13e77c798eb1b7c7c03eafd431d4327
BLAKE2b-256 f626148819d0db587d9c1a5596db2a798652d39a2647445e82a891410df126e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a9f166702a2089072223b321e33dc8cdbe279cec96c50346ce036366a3a71747
MD5 a3bbedb12901ebb57a004237b5d779a3
BLAKE2b-256 a33a8c1242854284406fadfc64013962e8e13ff610364ddd1508140c0d1a6866

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cfb884bc677cf95d77c0e28285e9ef3d9875ce708b25d9544fd80ef0b1894b65
MD5 1f1d265770cc39a8b3d37373747a4ba5
BLAKE2b-256 387da1d3d00d56fed832b6d1fa4c7068f11a8a5f24ffe704bff61d41f486fc8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ec90e28de93c38846ba4663ff5bddcaa7244759557141e6ab55561b68bf95d7b
MD5 d60415a529e0fe40c301f166c0430f79
BLAKE2b-256 1c721ab22a9ae0d468ef097768f322140bd19af66617acba28534f70f158f7c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 14fcc0d8b93679c7c71978d26d88aa531154d54489cfc3c07f298733851698ef
MD5 b0c1f65907fb7de315af6700d4e84dcc
BLAKE2b-256 f6b9f999d36712e26f63d9c142f30eb3449585c53c9275ac0c9c09f60e177cf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6258b79c1c69fd784502447c6bc67ef8331ce6814be3a2a4a90f8bf83deb462b
MD5 99b35f75b1ee7c7700af9932ac89b206
BLAKE2b-256 6043adca2db465d168ca49aba03c17dda87a9a82023c8a4fe17aeaacd34ee514

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0b975ab03b3bf64b75fc6c27d90f6ea4daa4f4b3f9c4d6c42e2c57bbf7d6246a
MD5 e685ec480a061dbbe5108b35265b35fb
BLAKE2b-256 8d2de0e152f3278055d6a0522e46d169b822af147f6cb4d5b3e44341e24c3161

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c35711a18f1c2e4a61e3d64970645a247a43f070257bcc8768f9fdb94a4fabd
MD5 ae60c3ae04596103f7ed363f9227d9d4
BLAKE2b-256 6846de8a7e1cbd14fa3993a1f9aa8a23299dd96cc26408a96332e0bd0eff3463

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7831c0e9dcd5ec05becbe129a8131e214cf157f2dccbf31a42d96698b162a441
MD5 9462d4df5d90f59edaa8e0fc17c52e6a
BLAKE2b-256 6350d5fee92f6be810eb791c490caf0fa6994dbf7c39656097a20428b4aa6cbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d8f2bcaa2cc09af1d346ff48808099856ac5260a9f538c9c3f7ea0c5f2b8d5f3
MD5 557730abf53b63e11c9fbed1be6767a3
BLAKE2b-256 a05fd2c205f18058db509811cbd638576bc8fba976afc02b427c840d17444431

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9c6cefa243b1e4393dfe071881c20c474fb3955d3b03a2fe5529ba15b20a3a66
MD5 e3e64133cbae06d139e783611e004199
BLAKE2b-256 dd49a77f1fec23483a0afb5adbcd3d60d4a0554494a285e08eb35167c4f7aaf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 6142cf67912d70c1067c710efa15774f44bb07bbfb58c8f28069710fdbe08806
MD5 e80d51aded41eee2b5a000db72374698
BLAKE2b-256 afc17f7364a9ea2eaaa48bf62cc2070c8cabbc5842f34d93897764f9685961ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cdf08c6c4d078e87fca8d06ab4b1b1656f5da9476d8453758dbdc4775ead9020
MD5 d9113b4542fd8b25040942258f99a618
BLAKE2b-256 f37f3ef6bdb119fa4ee4dd5342168151edbdd78fb0b87cf091d0b6511493c56f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 563e553f15bc2338cd972a2e397c525240255ff958aaeb4019fa41a42b7fe179
MD5 27c59b3a111979e4825527a9a5e928db
BLAKE2b-256 bfee776c0720537e61a9a33615abcc451e8223fa8ce49ce16afc7d2f30424077

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 261cd9a72edc2e59039eaee609cc80d1be242c3f1cafbad2e9de4cc0cee2f573
MD5 7c14fa3b66d524b127139e92fea555c8
BLAKE2b-256 c3c4620ad4b5557418832887ecc74ea2f56792fad7300be833c5d4ef3053d45b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ff0bfb19776af907e14400b240b0165e98bd202a7ad558f0ad6bf7ee1e09f0b2
MD5 1f015b12801cb869a4a92ceec20237a5
BLAKE2b-256 384484762dbc6dbeec084d704c0f133072e1bcdc6b018861e673e4150b1b9930

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 dd0f19db5c308357d178fb9e0fb1bd10f204ef037b659fcbd95008a605873dfe
MD5 763ca969bbc9e0617bc56c82e7345999
BLAKE2b-256 d140a6f2a4dba040bfdb4950601dfb9a38da28bfb96a3596a38b31967ed220eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 33e76b6b7864a10b2866137c08bf6bffea08baaa77dd8a60e2e9b43c26f9e18d
MD5 2aad153e324f40d00dfb159e19ef17e9
BLAKE2b-256 7d03989392e76761efb212aa2cd527e605ef705b7ddc7b5ef401fa3dcbb7c51e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0758a2df4f27fa45008f26e5d8f2715e188950f43c7722df038b284bd0210901
MD5 4a448544c74b807fb2dc2d73ea056eaf
BLAKE2b-256 115d60fee8234bc6b102c07f2cce837609167ed860b9fb8f797188174014aefb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 959d3ca127d48c74a3b12284ffc4828996e22d1cb7a768e4b2cda5ff937cfa44
MD5 56a23d4f9b3671afc53a93ecbfdb966a
BLAKE2b-256 a6d65eba07d01afdf99322aacc85d9acf7309f20bd4e21dd670b098f720a5ca4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b824212487c1acb6f35a9d78cb8f69f10f123d0346b38714b79b8be998598598
MD5 e9b250689809d7c38fa9f07a7c4e3c48
BLAKE2b-256 e5ecc42bd552a16896572ea43a355bbe079d41b0d2e4ef93d549eb4d86e93d47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c243be725baef52000cafda9064cf02a2823c598ccc435b1e21d3aaed2e27d40
MD5 d2acf71915e3006b90743824d5d8b6ed
BLAKE2b-256 1e0c4d43b671eb34356477e9b70167e3c82676db14f176248890a542b6f2aeed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for truss_transfer-0.0.21-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c46b6a322400f64a79a501bb55bfea21e488acd154e43a96971fe4a0dedc546a
MD5 c01397710d548ad645e736ef5d5fe0e6
BLAKE2b-256 0efe39b105ac04df97110d6b1428ce04cdd99ff32825e92717767f522d3d3404

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