Skip to main content

High performance client for Baseten.co

This library provides a high-performance Python client for Baseten.co endpoints including embeddings, reranking, and classification. It was built for massive concurrent post requests to any URL, also outside of baseten.co. PerformanceClient releases the GIL while performing requests in the Rust, and supports simultaneous sync and async usage. It was benchmarked with >1200 rps per client in our blog. PerformanceClient is built on top of pyo3, reqwest and tokio and is MIT licensed.

benchmarks

Installation

pip install baseten_performance_client

Usage

import os
import asyncio
from baseten_performance_client import PerformanceClient, OpenAIEmbeddingsResponse, RerankResponse, ClassificationResponse

api_key = os.environ.get("BASETEN_API_KEY")
base_url_embed = "https://model-yqv4yjjq.api.baseten.co/environments/production/sync"
# Also works with OpenAI or Mixedbread.
# base_url_embed = "https://api.openai.com" or "https://api.mixedbread.com"

# Basic client setup
client = PerformanceClient(base_url=base_url_embed, api_key=api_key)

# Advanced setup with HTTP version selection and connection pooling
from baseten_performance_client import HttpClientWrapper
http_wrapper = HttpClientWrapper(http_version=1)  # HTTP/1.1 (default)
advanced_client = PerformanceClient(
    base_url=base_url_embed,
    api_key=api_key,
    http_version=1,  # HTTP/1.1
    client_wrapper=http_wrapper  # Share connection pool
)

Embeddings

Synchronous Embedding

from baseten_performance_client import RequestProcessingPreference

texts = ["Hello world", "Example text", "Another sample"]
preference = RequestProcessingPreference(
    batch_size=16,
    max_concurrent_requests=32,
    timeout_s=360,
    max_chars_per_request=256000,  # Character limit per request
    hedge_delay=0.5,  # Enable hedging with 0.5s delay
    total_timeout_s=360  # Total operation timeout
)
response = client.embed(
    input=texts,
    model="my_model",
    preference=preference
)

# Accessing embedding data
print(f"Model used: {response.model}")
print(f"Total tokens used: {response.usage.total_tokens}")
print(f"Total time: {response.total_time:.4f}s")
if response.individual_batch_request_times:
    for i, batch_time in enumerate(response.individual_batch_request_times):
        print(f"  Time for batch {i}: {batch_time:.4f}s")

for i, embedding_data in enumerate(response.data):
    print(f"Embedding for text {i} (original input index {embedding_data.index}):")
    # embedding_data.embedding can be List[float] or str (base64)
    if isinstance(embedding_data.embedding, list):
        print(f"  First 3 dimensions: {embedding_data.embedding[:3]}")
        print(f"  Length: {len(embedding_data.embedding)}")

# Using the numpy() method (requires numpy to be installed)
import numpy as np
numpy_array = response.numpy()
print("\nEmbeddings as NumPy array:")
print(f"  Shape: {numpy_array.shape}")
print(f"  Data type: {numpy_array.dtype}")
if numpy_array.shape[0] > 0:
    print(f"  First 3 dimensions of the first embedding: {numpy_array[0][:3]}")

Note: The embed method is versatile and can be used with any embeddings service, e.g. OpenAI API embeddings, not just for Baseten deployments.

Asynchronous Embedding

async def async_embed():
    from baseten_performance_client import RequestProcessingPreference

    texts = ["Async hello", "Async example"]
    preference = RequestProcessingPreference(
        batch_size=16,
        max_concurrent_requests=32,
        timeout_s=360,
        max_chars_per_request=256000,  # Character limit per request
        hedge_delay=0.5,  # Enable hedging with 0.5s delay
        total_timeout_s=360  # Total operation timeout
    )
    response = await client.async_embed(
        input=texts,
        model="my_model",
        preference=preference
    )
    print("Async embedding response:", response.data)

# To run:
# asyncio.run(async_embed())

Embedding Benchmarks

Comparison against pip install openai for /v1/embeddings. Tested with the ./scripts/compare_latency_openai.py with mini_batch_size of 128, and 4 server-side replicas. Results with OpenAI similar, OpenAI allows a max mini_batch_size of 2048.

Number of inputs / embeddings Number of Tasks PerformanceClient (s) AsyncOpenAI (s) Speedup
128 1 0.12 0.13 1.08×
512 4 0.14 0.21 1.50×
8 192 64 0.83 1.95 2.35×
131 072 1 024 4.63 39.07 8.44×
2 097 152 16 384 70.92 903.68 12.74×

General Batch POST

The batch_post method is generic. It can be used to send POST requests to any URL, not limited to Baseten endpoints. The input and output can be any JSON item.

Synchronous Batch POST

from baseten_performance_client import RequestProcessingPreference

payload1 = {"model": "my_model", "input": ["Batch request sample 1"]}
payload2 = {"model": "my_model", "input": ["Batch request sample 2"]}
preference = RequestProcessingPreference(
    max_concurrent_requests=32,
    timeout_s=360,
    hedge_delay=0.5,  # Enable hedging with 0.5s delay
    total_timeout_s=360,  # Total operation timeout
    extra_headers={"x-custom-header": "value"}  # Custom headers
)
response_obj = client.batch_post(
    url_path="/v1/embeddings", # Example path, adjust to your needs
    payloads=[payload1, payload2],
    preference=preference
)
print(f"Total time for batch POST: {response_obj.total_time:.4f}s")
for i, (resp_data, headers, time_taken) in enumerate(zip(response_obj.data, response_obj.response_headers, response_obj.individual_request_times)):
    print(f"Response {i+1}:")
    print(f"  Data: {resp_data}")
    print(f"  Headers: {headers}")
    print(f"  Time taken: {time_taken:.4f}s")

Asynchronous Batch POST

async def async_batch_post_example():
    from baseten_performance_client import RequestProcessingPreference

    payload1 = {"model": "my_model", "input": ["Async batch sample 1"]}
    payload2 = {"model": "my_model", "input": ["Async batch sample 2"]}
preference = RequestProcessingPreference(
    max_concurrent_requests=32,
    timeout_s=360,
    hedge_delay=0.5,  # Enable hedging with 0.5s delay
    total_timeout_s=360,  # Total operation timeout
    extra_headers={"x-custom-header": "value"}  # Custom headers
)
    response_obj = await client.async_batch_post(
        url_path="/v1/embeddings",
        payloads=[payload1, payload2],
        preference=preference
    )
    print(f"Async total time for batch POST: {response_obj.total_time:.4f}s")
    for i, (resp_data, headers, time_taken) in enumerate(zip(response_obj.data, response_obj.response_headers, response_obj.individual_request_times)):
        print(f"Async Response {i+1}:")
        print(f"  Data: {resp_data}")
        print(f"  Headers: {headers}")
        print(f"  Time taken: {time_taken:.4f}s")

# To run:
# asyncio.run(async_batch_post_example())

Reranking

Reranking compatible with BEI or text-embeddings-inference.

Synchronous Reranking

from baseten_performance_client import RequestProcessingPreference

query = "What is the best framework?"
documents = ["Doc 1 text", "Doc 2 text", "Doc 3 text"]
preference = RequestProcessingPreference(
    batch_size=16,
    max_concurrent_requests=32,
    timeout_s=360,
    max_chars_per_request=256000,  # Character limit per request
    hedge_delay=0.5,  # Enable hedging with 0.5s delay
    total_timeout_s=360  # Total operation timeout
)
rerank_response = client.rerank(
    query=query,
    texts=documents,
    model="rerank-model",  # Optional model specification
    return_text=True,
    preference=preference
)
for res in rerank_response.data:
    print(f"Index: {res.index} Score: {res.score}")

Asynchronous Reranking

async def async_rerank():
    from baseten_performance_client import RequestProcessingPreference

    query = "Async query sample"
    docs = ["Async doc1", "Async doc2"]
    preference = RequestProcessingPreference(
        batch_size=16,
        max_concurrent_requests=32,
        timeout_s=360,
        max_chars_per_request=256000,  # Character limit per request
        hedge_delay=0.5,  # Enable hedging with 0.5s delay
        total_timeout_s=360  # Total operation timeout
    )
    response = await client.async_rerank(
        query=query,
        texts=docs,
        model="rerank-model",  # Optional model specification
        return_text=True,
        preference=preference
    )
    for res in response.data:
        print(f"Async Index: {res.index} Score: {res.score}")

# To run:
# asyncio.run(async_rerank())

Classification

Predict (classification endpoint) compatible with BEI or text-embeddings-inference.

Synchronous Classification

from baseten_performance_client import RequestProcessingPreference

texts_to_classify = [
    "This is great!",
    "I did not like it.",
    "Neutral experience."
]
preference = RequestProcessingPreference(
    batch_size=16,
    max_concurrent_requests=32,
    timeout_s=360,
    max_chars_per_request=256000,  # Character limit per request
    hedge_delay=0.5,  # Enable hedging with 0.5s delay
    total_timeout_s=360  # Total operation timeout
)
classify_response = client.classify(
    inputs=texts_to_classify,
    model="classification-model",  # Optional model specification
    preference=preference
)
for group in classify_response.data:
    for result in group:
        print(f"Label: {result.label}, Score: {result.score}")

Asynchronous Classification

async def async_classify():
    from baseten_performance_client import RequestProcessingPreference

    texts = ["Async positive", "Async negative"]
    preference = RequestProcessingPreference(
        batch_size=16,
        max_concurrent_requests=32,
        timeout_s=360,
        max_chars_per_request=256000,  # Character limit per request
        hedge_delay=0.5,  # Enable hedging with 0.5s delay
        total_timeout_s=360  # Total operation timeout
    )
    response = await client.async_classify(
        inputs=texts,
        model="classification-model",  # Optional model specification
        preference=preference
    )
    for group in response.data:
        for res in group:
            print(f"Async Label: {res.label}, Score: {res.score}")

# To run:
# asyncio.run(async_classify())

Advanced Features

RequestProcessingPreference

The RequestProcessingPreference class provides a unified way to configure all request processing parameters. This is the recommended approach for advanced configuration as it provides better type safety and clearer intent.

from baseten_performance_client import RequestProcessingPreference

# Create a preference with custom settings
preference = RequestProcessingPreference(
    max_concurrent_requests=64,        # Parallel requests (default: 128)
    batch_size=32,                     # Items per batch (default: 128)
    timeout_s=30.0,                   # Per-request timeout (default: 3600.0)
    hedge_delay=0.5,                  # Hedging delay (default: None)
    hedge_budget_pct=0.15,            # Hedge budget percentage (default: 0.10)
    retry_budget_pct=0.08,            # Retry budget percentage (default: 0.05)
    max_retries=5,                    # Maximum HTTP retries (default: 5)
    initial_backoff_ms=250,           # Initial backoff in milliseconds (default: 125)
    total_timeout_s=300.0              # Total operation timeout (default: None)
)

# Use with any method
response = client.embed(
    input=["text1", "text2"],
    model="my_model",
    preference=preference
)

# Also works with async methods
response = await client.async_embed(
    input=["text1", "text2"],
    model="my_model",
    preference=preference
)

Property-based Configuration: You can also modify preferences after creation using property setters:

# Create preference and modify properties
preference = RequestProcessingPreference()
preference.max_concurrent_requests = 64        # Set parallel requests
preference.batch_size = 32                     # Set batch size
preference.timeout_s = 30.0                    # Set timeout
preference.hedge_delay = 0.5                   # Enable hedging
preference.hedge_budget_pct = 0.15            # Set hedge budget
preference.retry_budget_pct = 0.08            # Set retry budget
preference.max_retries = 3                     # Set max retries
preference.initial_backoff_ms = 250            # Set backoff

# Use with any method
response = client.embed(
    input=["text1", "text2"],
    model="my_model",
    preference=preference
)

Budget Percentages:

  • hedge_budget_pct: Percentage of total requests allocated for hedging (default: 10%)
  • retry_budget_pct: Percentage of total requests allocated for retries (default: 5%)
  • Maximum allowed: 300% for both budgets

Retry Configuration:

  • HTTP status-code retries are controlled by max_retries, not by retry_budget_pct.
  • Retryable status codes by default: 408, 409, 429, and 500 through 599.
  • Use non_retryable_status_codes={529} to opt specific statuses out of the default retry policy.
  • max_retries: Maximum HTTP status-code retries per request (default: 5, max: 6). Set to 0 to disable these retries.
  • retry_budget_pct: Budget for timeout and network-error retry paths (default: 5%, max: 300%).
  • initial_backoff_ms: Initial backoff duration in milliseconds (default: 125, range: 50-45000).
  • Backoff multiplies by 4 after each retry, caps at 45000ms, and adds 0-99ms jitter. With defaults, the retry sleeps are about 125ms, 500ms, 2000ms, 8000ms, and 32000ms; a sixth retry sleeps about 45000ms.

Request Hedging

The client supports request hedging for improved latency by sending duplicate requests after a specified delay:

# Enable hedging with 0.5 second delay
preference = RequestProcessingPreference(
    hedge_delay=0.5,  # Send hedge request after 0.5s
    max_chars_per_request=256000,
    total_timeout_s=360
)
response = client.embed(
    input=texts,
    model="my_model",
    preference=preference
)

Custom Headers

Use custom headers with batch_post:

preference = RequestProcessingPreference(
    extra_headers={
        "x-custom-header": "value",
        "authorization": "Bearer token"
    }
)
response = client.batch_post(
    url_path="/v1/embeddings",
    payloads=payloads,
    preference=preference
)

HTTP Version Selection

Choose between HTTP/1.1 and HTTP/2:

# HTTP/1.1 (default, better for high concurrency)
client_http1 = PerformanceClient(base_url, api_key, http_version=1)

# HTTP/2 (better for single requests)
client_http2 = PerformanceClient(base_url, api_key, http_version=2)

Connection Pooling

Share connection pools across multiple clients:

from baseten_performance_client import HttpClientWrapper

# Create shared wrapper
wrapper = HttpClientWrapper(http_version=1)

# Reuse across multiple clients
client1 = PerformanceClient(base_url="https://api1.example.com", client_wrapper=wrapper)
client2 = PerformanceClient(base_url="https://api2.example.com", client_wrapper=wrapper)

HTTP Proxy Support

Route all HTTP requests through a proxy (e.g., for connection pooling with Envoy):

from baseten_performance_client import HttpClientWrapper

# Create wrapper with HTTP proxy
wrapper = HttpClientWrapper(
    http_version=1,
    proxy="http://envoy-proxy.local:8080"
)

# Share the wrapper across multiple clients
client1 = PerformanceClient(
    base_url="https://api1.example.com",
    api_key="your_key",
    client_wrapper=wrapper
)
client2 = PerformanceClient(
    base_url="https://api2.example.com",
    api_key="your_key",
    client_wrapper=wrapper
)
# Both clients will use the same connection pool and proxy

You can also specify the proxy directly when creating a client:

client = PerformanceClient(
    base_url="https://api.example.com",
    api_key="your_key",
    proxy="http://envoy-proxy.local:8080"
)

Endpoint Pool and Health Checks

Route traffic across reusable endpoints with deterministic weighted routing. Each Endpoint owns its own health worker, so the same endpoint object can be shared across many pools without duplicate probes:

from baseten_performance_client import Endpoint, EndpointPool, HttpClientWrapper, PerformanceClient

health_wrapper = HttpClientWrapper(http_version=1)
endpoint_a = Endpoint(
    base_url="https://model-AAAA.api.baseten.co/environments/production/sync",
    api_key="your_key",
    client_wrapper=health_wrapper,
    deployment_health_path="/health",
    deployment_timeout_is_no_vote=False,
)
endpoint_b = Endpoint(
    base_url="https://model-BBBB.api.baseten.co/environments/production/sync",
    api_key="your_key",
    client_wrapper=health_wrapper,
    deployment_health_path="/health",
    deployment_timeout_is_no_vote=False,
)

endpoint_pool = EndpointPool(
    endpoints=[endpoint_a, endpoint_b],
    endpoint_weights=[0.8, 0.2],  # deterministic weighted routing
)

client = PerformanceClient(
    base_url="https://model-AAAA.api.baseten.co/environments/production/sync",
    api_key="your_key",
    endpoint_pool=endpoint_pool,
)

Health semantics:

  • Weights are deterministic weighted routing, not weighted round robin.
  • Each configured health check is retried up to health_check_retries, and one successful retry is enough for that check.
  • If an endpoint has deep_health_url configured, both the shallow deployment health path and the deep health URL are evaluated.
  • health_fail_on_first=True short-circuits on the first hard failing check within an endpoint refresh cycle.

Error Handling

The client can raise several types of errors. Here's how to handle common ones:

  • requests.exceptions.HTTPError: This error is raised for HTTP issues, such as authentication failures (e.g., 403 Forbidden if the API key is wrong), server errors (e.g., 5xx), or if the endpoint is not found (404). You can inspect e.response.status_code and e.response.text (or e.response.json() if the body is JSON) for more details.
  • ValueError: This error can occur due to invalid input parameters (e.g., an empty input list for embed, invalid batch_size or max_concurrent_requests values). It can also be raised by response.numpy() if embeddings are not float vectors or have inconsistent dimensions.

Here's an example demonstrating how to catch these errors for the embed method:

import requests
from baseten_performance_client import RequestProcessingPreference

# client = PerformanceClient(base_url="your_baseten_url", api_key="your_baseten_api_key")

texts_to_embed = ["Hello world", "Another text example"]
try:
    preference = RequestProcessingPreference(
        batch_size=2,
        max_concurrent_requests=4,
        timeout_s=60 # Timeout in seconds
    )
    response = client.embed(
        input=texts_to_embed,
        model="your_embedding_model", # Replace with your actual model name
        preference=preference
    )
    # Process successful response
    print(f"Model used: {response.model}")
    print(f"Total tokens: {response.usage.total_tokens}")
    for item in response.data:
        embedding_preview = item.embedding[:3] if isinstance(item.embedding, list) else "Base64 Data"
        print(f"Index {item.index}, Embedding (first 3 dims or type): {embedding_preview}")

except requests.exceptions.HTTPError as e:
    print(f"An HTTP error occurred: {e}, code {e.args[0]}")

For asynchronous methods (async_embed, async_rerank, async_classify, async_batch_post), the same exceptions will be raised by the await call and can be caught using a try...except block within an async def function.

Development

# Install prerequisites
sudo apt-get install patchelf
# Install cargo if not already installed.

# Set up a Python virtual environment
python -m venv .venv
source .venv/bin/activate

# Install development dependencies
pip install maturin[patchelf] pytest requests numpy

# Build and install the Rust extension in development mode
maturin develop
cargo fmt
# Run tests
pytest tests

Contributions

Feel free to contribute to this repo, tag @michaelfeil for review.

License

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

baseten_performance_client-0.1.11.tar.gz (109.7 kB view details)

Uploaded Source

Built Distributions

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

baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_i686.whl (5.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_armv7l.whl (5.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_aarch64.whl (6.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (5.7 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

baseten_performance_client-0.1.11-cp313-cp313t-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

baseten_performance_client-0.1.11-cp313-cp313t-macosx_10_12_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

baseten_performance_client-0.1.11-cp38-abi3-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.8+Windows x86-64

baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_x86_64.whl (6.1 MB view details)

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

baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_i686.whl (5.9 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_armv7l.whl (5.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_aarch64.whl (6.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_armv7l.whl (5.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_aarch64.whl (6.0 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

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

baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (5.9 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

baseten_performance_client-0.1.11-cp38-abi3-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

baseten_performance_client-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file baseten_performance_client-0.1.11.tar.gz.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11.tar.gz
Algorithm Hash digest
SHA256 96c0d589649dcfad3f6e10ae3986899238bc9190c5fda1a747c19b4b8ebda558
MD5 dfb883a3377e4cc7d566d3ab14e0bd2e
BLAKE2b-256 e8199c8211fdc9ee8ed5e7842892ad4a9110b40aa54e1f4cff09bb1b676d141d

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0f8d7e92611e11b6a36726b1ea4393049e1e8c7665e17c862a205f2e0cd2cda4
MD5 17aa5d99a59466315d33eca47b3a36a1
BLAKE2b-256 fac6be787f6b4a827a289d68ffc444c8c672fd2a75a0a613ce329e7baac69f11

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 35205a381af27022639989fc9231f706172e84c10b0392ff97e01cf90e63ed5d
MD5 f456be0766bf9e30231aae373c46292c
BLAKE2b-256 a0f2d80e1ab3f83549926789e04522e713a612e43a07331ea4d34343adf1d8b5

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d4bd3f882b6ebea0aa05b1fffcc39dcb44ce5465740e1fd6424737e8ee2ba8c6
MD5 422535653c04e7c78d8c1afc5bdaa4c9
BLAKE2b-256 9fb2873e12911db801a2abdb6ea2361cd96b8bc30bd784cbf676009f4a5d6e41

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cbe5de949520a00aa64e9d8f186b015a55a3231c9b1dc322e8b4042f86c57a7f
MD5 6bdf45b9e8c15539035b7c7566db580e
BLAKE2b-256 b083a6c488224c4f0ca0ee5cba77944815ac23bab247545eac37a9416c61baa7

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6509a58adf104d63ebbda628a1c87ecef98b6f80b5912a9a3139ca5549af68ed
MD5 0c0db9d4c17e365d41a2c8b2c06d9167
BLAKE2b-256 972dc92d5545597f4b5ac11aaedcdcf9935518d178638d283e469fdbc923d92a

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1a7f57b249bff3b50bf74623da8d0d6c82d15bc7e10ef767a041da68a1b03b46
MD5 9e5d9086fac4f89aaf6ad68debf7cb66
BLAKE2b-256 0d3b5b1d1ef2b375a9822128280078242651ae8aa362005db991f4109a00a87f

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 29f53d7458bee4590aeda353ce02a2c7807b2bd7525284e28f009655319070ed
MD5 780a98604e2bf296bde54853ba9cb459
BLAKE2b-256 12584e181ddf17dfed17a2c72ca3f2eabae0446d8de0126ba24ddbaf4cdb4c3d

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9caa2ae07c35ae9786d4762ef53aadd3c8435cd80640a21c5652147aafe073d5
MD5 ca12e6c9ad1019bf60420423ecf806de
BLAKE2b-256 815e54c9fb67c1aff8af04259e8c3dacee4305ef26e3d3df79d6f7b7597ad6de

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 63b21b309ca93c2eec3967cad4f6b98f05011f9191ab458f5f27c84378616668
MD5 f8b93dce9bde4bc1582c594b85f550b4
BLAKE2b-256 30f2b3fbcebdb3e8f4547d40a195b6ee20c16330d3e641dd860dc1e04aace20e

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f45a69038f7028d11880446ea2c348988d8f94bf678f0ab8569a2ad3fd36e0a9
MD5 bd71757cc0290432b3dd6dcb1ca3b810
BLAKE2b-256 07ac917fcaef02242a6dddd48b209e415f3d81ed4c2f00c01f0986e98e554b3f

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8643e758ef5e2cfa6675edf44193aa6b93c9e94a01d5b9bcd930135ba0dbaa53
MD5 da32c9d5ddc70b8a2f1fb764d28b81b9
BLAKE2b-256 f18b1338e89dfd3c0f119fc8855fe55d3189e2764b6cddb9235f7ba60cdf8e64

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 aa520327b1807c7bce302445ebb606d71c4e359dd60b81be858530c20bdc627c
MD5 aa37148c2eb7841545e51021f358fe74
BLAKE2b-256 a20b1f6543d1ce7851dcebddfbba84fc92138c9003b415d14ac25dd77128a366

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 345ee2c0fb4426453608430bd8c44c5d54733cd3338503b040ce069a9c207f4e
MD5 258942b86d663bdc93ffb03ae16e489c
BLAKE2b-256 b2ca80df139885f2e0d583679b9d240121ba986c7d41b65b3b0b6048f63b6940

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 212fc69a809d31323afaff792297cfdda59fa04bbf039d49e791f4a7a560ef22
MD5 08ecebe268bc3855ee1b836089f4ea87
BLAKE2b-256 6b9815e6b49af92a4048e67cc910886e0855e6b3b7ccda1cec96756c5538f052

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 907c3b395504bf26f276df62f7e0dd574f740f686cee248f3c98bbbca83e828e
MD5 f96895a06408e820b1f481c217b39ef4
BLAKE2b-256 ea2e77126e6b42c7205709e9e1b267d5dc6f60b2e0a6993fb69e6c28837b0caf

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 05612d48cb3450a100265b85373ab626b4889133066bf1276c210bc31efee154
MD5 7a945f12e81fc58dea66095b9c737898
BLAKE2b-256 362d7de629d0cdfd0a0f53778f6ec38ba02cd63416ede519a85de1a70ab3292f

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 468d00259a7d4039269044efd06d88ef68215d4370f7c74e41ca722c4b36ce76
MD5 b3d4c20b93985871b02d548084c19aa6
BLAKE2b-256 a67717e8de658f28427e070c5b619be26692f9437e26b2e5e1e86f56b45aabd8

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e26b83d566694fbef28a3d3dad6b848f23a126d9b021b5652cb56f97004466ed
MD5 78db51f174dd965af9ac953172515dfa
BLAKE2b-256 c1cfc219925473251fb18d062ae26f9fafe648f4a60d2b6497c196f2559e3272

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 98e42d19a8ce9f0478e1ad8ca13e6acf64fc5cdb5b5064b60e9fc166d78835cf
MD5 24009e9c9be815656a212fdd9892b7fe
BLAKE2b-256 ce32320e946bd759b6fedbecf031797e780d40d06b03aacc2ee465b5d80d121b

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6447abd14bf6693790563f9f423ea96058834c4ed81eee89efe3fab6e1943ec8
MD5 2398e74accef9bd66526145583a9e45c
BLAKE2b-256 9bdd0f0ea18c5ac80c3ec6447bfe42455dbfdef6ae0b43117739ed374edf56db

See more details on using hashes here.

File details

Details for the file baseten_performance_client-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.11-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2eb1ec8fadd013a334c88635238ba86858b09618435dc34ce8e47290edf3c171
MD5 4536e778e9ea8018c31b3f1b4c306ade
BLAKE2b-256 c65b5c717e000b9a9a9e0056dc0ba2a7764e6892977ff6db99ad4a775d116ac4

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 Sentry Error logging StatusPage Status page