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.13.tar.gz (110.1 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.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13-cp313-cp313t-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

baseten_performance_client-0.1.13-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.13-cp38-abi3-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.8+Windows x86-64

baseten_performance_client-0.1.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13-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.13.tar.gz.

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13.tar.gz
Algorithm Hash digest
SHA256 a3bbbad120324687160af6cd1252112c92b10010ec776d49ff604b8cba15d7ec
MD5 e1a709a488698ee8308553c72529f6af
BLAKE2b-256 f5980b665bdde191dc206db1965a4616f64266980ff8103da4b87d39e3252bd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d03bf6ca692ace48b674c9b233721fcb72f425d1ac34b8692674a155a7e19791
MD5 3ddba0d3b5f7d0fcc1944bdcaa8936ce
BLAKE2b-256 495f50e112e1f4a443b72be8499240d873e4815a7b53893bdb0960dda24bc707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 551f22e61d58eefe25488e9cf6e460e9323412012d8157f543a818c6417eb178
MD5 ba263094ac95cf98279fcaebb0cd01a6
BLAKE2b-256 26740662a70991898a333b94c83613458179e738391f5a5eea8da4245a1c2025

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7a2835484d58117538176889d78d760048c686cbe2036e2e5b81d6f97c0a0048
MD5 279ea6497d3c605ec414ed532ac598b1
BLAKE2b-256 cc60548f5759c97c5b2daf514100b28b2167ec7c7d2da84bd138756672c78a30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e045237fcff7a27ed1a22c103ec4bebf71bbac4d80bcd7ae9476d75f476666a9
MD5 6d12b60395e0e0ba76eae9ca1ea7b092
BLAKE2b-256 358bddf45672b563cf6151fdfe3659b3a1b9f8d69c8d87694b26d59208b48b03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a401929938d5611d507eb80475517840294f3b236c58ee070a066d5099066240
MD5 69629a51d940e1112a4744d91c18fd6d
BLAKE2b-256 9a4a0c233bd3762a5b36a75c9de8bda60ea8a83f0b211df97cad277b606d1db6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b8f9c203788ff2a1e40aaf99851616c4b62ed71d9e1067e45a366cb3201eb28d
MD5 42167ad15d7cb12ca3ff3c0e6ca5aaed
BLAKE2b-256 a6c608b40c48220e9bcc53eaa7b9267a5b53c42cf0f8fbd9fb65352d1796d74f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 83701914091c7fb9ee97dd661eaca99a2a2d0138d2bfef10e159a9c1a75b1e38
MD5 7aee1644df73043b8f649d5e9810aac1
BLAKE2b-256 92692f3b9caf1ba223532e3db360797d68c4cb8743e792bca93cc9b597fbb7c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d8f95abdb1e0616adfe372deb48316ad4f2416f6a80626288c08b0b81d3a5a9
MD5 136e50343707c97a453b48155d665992
BLAKE2b-256 41957767952937ec9bd27e429cb26a2a43ca79652a2dd8452e6f7791198b7c3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6ddf6ddcfbd928000ee59bbfd6752185996048b9e735715527dd5df525696b2b
MD5 7e1d6bfcabc9a33c6b9dfec5c6ace934
BLAKE2b-256 6252c5dce16216580a5ab470ad9f5a8241273c97396150619db79dc0aecf52d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a3fbca0bd44108022d147cbf88164351b984f8b972efc72f19ad9a5803aebcc3
MD5 e4047677a7f51cd1da72c6f9446fac69
BLAKE2b-256 beec3366c1f16e8e06d386ea9260aab4cd5c390aa1b34244d8467b2751f99e47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5db98b710352b020435d0c3d2397bb9d9e7b6c7d146373e92391f83b3f5587d8
MD5 5d30420df8361a1fbeccd6307cde561c
BLAKE2b-256 de72d24a6ee4b2a0eae2b9c93b4180fb81c43187874ac8fceafd2ec36f63ddeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 85fc82a021fb0d2d6281e52ee45cd35bcd9332c4e854d0931ab886908028d3b9
MD5 8bf22b99487bab70c961e2ba4ffee9a2
BLAKE2b-256 2f971f0548612403fe0e712a1f4dd46b37fa67f45f69e6e8fa486fe1f8fc6ad0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 0ebb53fabb26024e85b536ec2c7774f2f718f92c9469881f1e309d7ff5667d3b
MD5 0766ab01e17ea5070683ee195abb362c
BLAKE2b-256 b597cd588bd22cd89e4e7023ef930d344a542e08658e5b095f2f5c83a3756dbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fcf605369cf9e3ebb28628da042535ecc725fc4bf87d5b98c1e5f8f21e48b764
MD5 2cb7026014058ce5e813edb4f598a783
BLAKE2b-256 68e4134cc01aa4ca9e874d8c760892aa6b7fe6a2de558364ca6467a7f201f286

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 db40a3beb8976fdd2b5efde759d09f69b1348fdc14e17fefd1c22ea85002c14d
MD5 06008a7dc21c8d540ae3ffb6d03a9fd9
BLAKE2b-256 ff995056e2d58e439552f2c293ae725b5771fc4efc8a3895b6af915ab7be7353

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dba681c9920c56e59f826a8ef7b553a4184648edfe3c51eb8d325a6dc6b2e8cb
MD5 f8139a8b5653518d1cb718d8ab89ccc0
BLAKE2b-256 71b69af08834996e29ca55fae11c2384ab96717d49bdf714700edd890a8b1d52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 275bc06f4f158ba3a1c4d85c8ac58b7a2bdfe2579650170bdd7a70806437b5d8
MD5 97233aa74cff51a390c5783269124880
BLAKE2b-256 8245be97157afbe13633f0d57ccbd064e49b3fd6270e4823a96b9567e1488676

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6201fc98d5b000517cf8b83d61844ea92a4605b2aa8f6912124ad4d37c0a1f2a
MD5 b04d7ecd7469220a50e57c9a2be0e7a3
BLAKE2b-256 c38b482daacf581f9fd7d4c389c1211bf44687a22a66af3733164f230a72cd7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b94c723166eee917f8a9f151ac91f23b28bcb638f368891c207e08c6424c4a42
MD5 f55314e26c7fb75eb43f6464e9e3c00d
BLAKE2b-256 ceb5f4b1cb3dcc7bc4d04cbf40b291c2cc50c25cf92138c959a6d8dd6c9dc609

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b1a6da9745ace160f481677c6505a6f2ae7d75ae80cf451c1524e6ba4050e2b
MD5 084cf13bfdda618cf9080c7641d4d5e8
BLAKE2b-256 bad9a513b2c07618be88d12df118ef299184f48e54b5b21df3e482a932a3df85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for baseten_performance_client-0.1.13-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 116aa311eefbe85412722f7a644aa1942caa93f9a645c48e8c14359910a05972
MD5 3656f46fac5a8a0513caf9aa9b1a7a41
BLAKE2b-256 bba73b41418a46200dd6a100ae3969174b9ab3e5952b0f1a2dc005180285b690

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