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.10.tar.gz (108.6 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.10-cp313-cp313t-musllinux_1_2_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_i686.whl (5.6 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_armv7l.whl (5.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_aarch64.whl (6.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl (5.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

baseten_performance_client-0.1.10-cp313-cp313t-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

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

Uploaded CPython 3.8+Windows x86-64

baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_x86_64.whl (6.0 MB view details)

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

baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_i686.whl (5.8 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_armv7l.whl (5.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_28_armv7l.whl (5.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARMv7l

baseten_performance_client-0.1.10-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.10-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.6 MB view details)

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

baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (5.8 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

baseten_performance_client-0.1.10-cp38-abi3-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

baseten_performance_client-0.1.10-cp38-abi3-macosx_10_12_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10.tar.gz
Algorithm Hash digest
SHA256 1145ffa2a8e397e137969e3830f5bea5905aafa4d7305c3a535f9e9a4256a29e
MD5 ded7672df7629eda93f12a6283f020a1
BLAKE2b-256 06cec6732ece32222da157d419f8d218fb7f13370962537e2c91f7e34cfe7503

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1dabee1011f645c271532d74b3337fe6ac3808340453fc405e20d8450f86bd22
MD5 32595c8678d9dbc127ef602c0351e7a6
BLAKE2b-256 4d773dc3f64d6f277bcda645a2778854b5024c70371943345723f524be35f828

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7b861b70cb07b819b22eaa4a3fccc2033a373471cfc16958b23d15b7438ddef6
MD5 1b7d641980c087c8e429258e248b49ec
BLAKE2b-256 7df9cf6c7b574e295a00066d5bec1ab96e8d6402bb0f4efeb1ab7b234fd94a77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 afdbdca3a8d81cfe33f55adefce84cb9a46833c3fbf6a17d1fa681dffabae76b
MD5 72cf13fb655a591eff7a16b434fc1292
BLAKE2b-256 fe120d7d640dc184ea86f2e55abceb460cdf70a956b166597fdf1b5dd1c64a4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 414bd925c8c80c440bd97abfd51f1e6a8e54fb0a2a768bbd17f237462c2faa1f
MD5 676396015a6e37130fa77485674570fb
BLAKE2b-256 55c0fc403012ed2ea20dbfcdb6d738257fd3338419c36fc02ef97845c7772daf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f1b6ab9a1a5f6d28368b1e3e215d6d84aa0fe9a1f0b2cd9ed6cb5d74be72b30
MD5 f859747ba87a3284565abc8aa6a13e53
BLAKE2b-256 ee6b7a1fdb4534ac525690fe1a70084ca460b2b368a1872b469d20993400b303

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 fc37b6e4147f0d9999fcb576c82da2b331f3038badbfc25deebce5c600d2d3cb
MD5 aac06a851797c847451735bad9bc9595
BLAKE2b-256 d4988cf6310d95e2d669c5ef728ce07d24d07a9efd47ce09c8c03132b13a943e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dede83196440a40b533a194de6a2d8f473e09e3844d67cf59f984872dfe9507a
MD5 d14adc2eb0c281795050c83a59810b82
BLAKE2b-256 43aec0985f8d75ddc8d0b717263d2693971a26cdc7539a4368440b560dd3259d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78f2219a9fa95e11d3ec355c2a214ef4f2f136f6c87e300c631b3049c0cdb0fc
MD5 e30072715d1f5a3abc810c04cd2acdf2
BLAKE2b-256 53378fb0c5fcd2a645102ac9464351ee8aebe2ca0f9a9901b6fb2dc21dc3f6c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f4ab63f9c2f84722a089d9c2cb84eb2b446c6506d23ae5426abb9d0423139b33
MD5 2864d51519ff3257cca892cc04868c62
BLAKE2b-256 3d92adf762667f0aa8897f067061e56181fef50a10470f2d00cd96ef4a208160

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 6a7fcd0e5bbf7e89ddba574dcda66d703bf1e4439cb589a7d4c83973d2b07de8
MD5 55d67603313f7da00d4d19a6b1b1b5c8
BLAKE2b-256 a46c0ddaaddd074b00f6a8b2dcc7adc22f9fa8870a28d79c6ee39c8bda5e4aae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97627a4074da78b4fc74afac1d8d25607082e0e6d3a134b615c827032193a51d
MD5 cdb6a7608a907361ed5d4b0a672b6d83
BLAKE2b-256 efcc578acd8f2ea6d85ba8367250d4247a2bd7668d01ae79151e7432598216bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9361fffa08e5e0042ba451ab1ac1ef99f030fa6b91fdc985f03ceef2221a6487
MD5 08c68125e745d7cf26d14a808a63a57d
BLAKE2b-256 7d65391694ce8cf8776325f9b8cda18cbe946a7e08a8f3a1d0a305f803f64b58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 5b9710291a33b03f77e8a296f31ca82327bf7d92664a0220b203692df5ca5759
MD5 7ec6a71f2382648bf9c08bf0332b53ec
BLAKE2b-256 e9be21c8f112b209970d505b628f93a349a92e9a2cb83849f4aa31ebbada93b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d765b14762ad6fa3f5af7e3134dbfaa77b8be97a91ab1bbe40bef6662c7ac4ab
MD5 c72507c84f300baf8e74ca994c58d660
BLAKE2b-256 476887293c531d6853c7b8d9fac0e0fe66426477bed874c5b2d938932a1146b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 d63fa31838eaf47e0df545bd5fc3d7424f267a8233828b4311622133042f9b8b
MD5 2dc434940eb15db1087accc92258b806
BLAKE2b-256 d8ea40345e6d8cec0c3f0c337e5430518098b9a9611f806622b1013da0fdbebe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 153466ef645baf9b8c5952f8979ab99d533e2e7e13851e92287fbf89624c6c10
MD5 f22f1e563e6082a61bbb419357b8a774
BLAKE2b-256 8ec91fe495bd0c98d111f1aebfddf804f803305b7de6ef7e557c01209ea85a3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21955f89f86902bd5eb651c03e91ecde27cb22d47a6cc5749456ad2c4716d504
MD5 666153a24a2a05393f17acabac36dee1
BLAKE2b-256 340df656ef64741dc1b15d3cb9355705b6cc8cd4147d8009fdacbfcde12a63e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c770b05e1a9a41651d239907279f117d28cfc9332278ef4851bcba0c44783774
MD5 c446da566dab3ff4c6f64a6418ebd494
BLAKE2b-256 cf3b8d75875dd960a078be23247eeabb5fe72f769c4d34e0b8b81eb5504aca97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a55bcc924b60335b6b58b5ab2574c54dc041d64edc04e683e73d6d38608a8a6d
MD5 c74525ffa3a17d0cc700889ef12a52fc
BLAKE2b-256 4b078ccd3b087eeee16bc1fa20f19ad63251d04fb479870813b44279f89a2584

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c8779f7a9fdac338d0d2e75a33ebd85f9fa45d9a8b083a6686f90b30e8f6685
MD5 3042a8cf2edb5eb778083e4d62e45a8a
BLAKE2b-256 2ef28afc88421affd57f5db8c5294984fb7dac7b47c987cdc4e9c37ac94506a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.10-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aeedec987c0431161217943ee2cf72f56dc29af7bc3eb2eaab2a7167d73fffcd
MD5 f8e5ad4eb44f3174c24ce44e6c515e01
BLAKE2b-256 60ff710e589a6d2a4716ea5cf08873c270dd43b39a857c09e8807213dc416785

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