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.

The framework defaults are 256 concurrent requests, a batch size of 8, and 8,000 characters per request. max_chars_per_request accepts values from 50 through 1,048,576.

from baseten_performance_client import RequestProcessingPreference

# Create a preference with custom settings
preference = RequestProcessingPreference(
    max_concurrent_requests=64,        # Parallel requests (default: 256)
    batch_size=32,                     # Items per batch (default: 8)
    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

Release files for baseten-performance-client 0.1.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for baseten-performance-client 0.1.14
File Size Uploaded
baseten_performance_client-0.1.14.tar.gz 110.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for baseten-performance-client 0.1.14
File
baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ x86-64 Details
baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ x86-32 Details
baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_armv7l.whl CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ ARMv7l Details
baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ ARM64 Details
baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-64 Details
baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ PowerPC 64-le Details
baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-32 Details
baseten_performance_client-0.1.14-cp313-cp313t-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 free-threading macOS 11.0+ ARM64 Details
baseten_performance_client-0.1.14-cp313-cp313t-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 free-threading macOS 10.12+ x86-64 Details
baseten_performance_client-0.1.14-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_x86_64.whl CPython 3.8 abi3 Linux musl 1.2+ x86-64 Details
baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_i686.whl CPython 3.8 abi3 Linux musl 1.2+ x86-32 Details
baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_armv7l.whl CPython 3.8 abi3 Linux musl 1.2+ ARMv7l Details
baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_aarch64.whl CPython 3.8 abi3 Linux musl 1.2+ ARM64 Details
baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_armv7l.whl CPython 3.8 abi3 Linux glibc 2.28+ ARMv7l Details
baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_aarch64.whl CPython 3.8 abi3 Linux glibc 2.28+ ARM64 Details
baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.8 abi3 Linux glibc 2.17+ PowerPC 64-le Details
baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-32 Details
baseten_performance_client-0.1.14-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
baseten_performance_client-0.1.14-cp38-abi3-macosx_10_12_x86_64.whl CPython 3.8 abi3 macOS 10.12+ x86-64 Details

Total release size: 109.6 MB

Release files / baseten_performance_client-0.1.14.tar.gz

Download URL baseten_performance_client-0.1.14.tar.gz
Size 110.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f7319c6bc525fd1aa55dd0fce24540d4d77f1c39562ab4b9089338295c38100a
BLAKE2b-256 checksum
How to use checksums
ee5eecfac9576ee61c67c670d257a163166642f9e8eeb713e99fab262c5a5c3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_x86_64.whl
Size 5.9 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9567e725408b0e9c0c9609dfeb76438df62e55714e856fab39dcf7edb5a9e5b1
BLAKE2b-256 checksum
How to use checksums
ec352425e1679cd532c6dffd5d6cc0a66c3dac3e990bfa6ceab6e1de278fc75d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_i686.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_i686.whl
Size 5.7 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
4e800cecd154532b28d35e881de054e1d72effa416790fee6e52c2b79890e740
BLAKE2b-256 checksum
How to use checksums
926f678776eda80755e5e46455c5eab52fa972109cd0274848b8a13721c6f802
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_armv7l.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_armv7l.whl
Size 5.3 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ ARMv7l
SHA-256 checksum
How to use checksums
c14f5bf361c97c64c08a0d79e3ed397158aeec89a976bd8c3c7903471e2ac2e2
BLAKE2b-256 checksum
How to use checksums
bd57b038a578f4edd4dd54050b73c49103518b47e9a606d8a9ed82dd22cce6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_aarch64.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-musllinux_1_2_aarch64.whl
Size 6.2 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
66b906f86391f8bf41b1facffdd5ae7a258bff8ca2abaa91bc9243c58e5713a4
BLAKE2b-256 checksum
How to use checksums
16236204744c55511754acfdfc30cdf9a37f53c70031d55f83bc040ef8524bec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.5 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
66a2274c539a6ef4e7c8b82a3e18677fab58c2dd6859c072e939202cfbe7a3b7
BLAKE2b-256 checksum
How to use checksums
cecfb8d4da65069d3ba09034c33b2d2fe3d786c0b9fc75671f89ca791a8eb25c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 6.0 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ PowerPC 64-le
SHA-256 checksum
How to use checksums
7149b9c2d0ccfbbfcfc46b3090626b2f19c566f7e271b8bb12b8ef6b906215c8
BLAKE2b-256 checksum
How to use checksums
4e97841f8d9db65a1093316a550016375daa1e31fa59efed820f78e66a4b706f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl
Size 5.7 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
c941e0df58300ec7f937c3b638b213b2e51a0e02584be04823f8eafc38b1337c
BLAKE2b-256 checksum
How to use checksums
dc1c2069b26b3d8753c781345ebf1cb05b12ed03a3ff67fb75fa4dd8733f9dcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-macosx_11_0_arm64.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.13 CPython 3.13 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
49d491f90ffdc1db329d7bbb49ef2cef05c3226ff5279b3c3ea15b8e86db0058
BLAKE2b-256 checksum
How to use checksums
ed87b9605d1e02d2f31008c49cec412bb8166f50fa11dc63610349ac7bbaa760
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp313-cp313t-macosx_10_12_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp313-cp313t-macosx_10_12_x86_64.whl
Size 3.3 MB
Tags CPython 3.13 CPython 3.13 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ec836514bd8deaadf8d76d697e23822c13445a5f0f3e82f95d3330aeddc21761
BLAKE2b-256 checksum
How to use checksums
a3f53da50d0045c5233ac32c40d7c480933225ca74555f268869b3317422dbe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-win_amd64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-win_amd64.whl
Size 3.2 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
46c463132cd16a656ed1c3b255e8e518e53f30f557a5558e964b3822f1bd6aee
BLAKE2b-256 checksum
How to use checksums
78eb24725ebc283e05d5aff99e860ffcc451d812d9b7c5e3ff8ee56d3c87fc05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_x86_64.whl
Size 6.1 MB
Tags CPython 3.8 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
02c03efb6cb6eea7138a89ee9d2fda040c912b54bb17eb8de6055e68452fb081
BLAKE2b-256 checksum
How to use checksums
d330beb5e7967d4cb7856ba738d599035daec3ecb0e9bf35ba4a175c887e6057
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_i686.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_i686.whl
Size 5.9 MB
Tags CPython 3.8 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
e5e2eda1a4da35c6f549c2807fbebeef1de10100e53c0cc20666323488fa06fb
BLAKE2b-256 checksum
How to use checksums
361badfdf11ffbe25be72b6a95dcca72561e3b5be383380a147183f8a7e88ec2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_armv7l.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_armv7l.whl
Size 5.5 MB
Tags CPython 3.8 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
d51771d1d561ac721def54ac36b8f14c943d012f2bb16579b89859cf517fc7ff
BLAKE2b-256 checksum
How to use checksums
0a7c8344b0165a529372cbc74f8a83d0f5b904f97527fbfe566fa554736e4502
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_aarch64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-musllinux_1_2_aarch64.whl
Size 6.4 MB
Tags CPython 3.8 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
b5087b728b4b61d0241009c1573dcc222cc378de0d97afe4d55a9f5a26aa2aab
BLAKE2b-256 checksum
How to use checksums
fecf38ff098c78331e8265145099b3b3c7eb0a844c6eb3899bcafaf941ec092d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_armv7l.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_armv7l.whl
Size 5.2 MB
Tags CPython 3.8 Linux glibc 2.28+ ARMv7l abi3
SHA-256 checksum
How to use checksums
591322dd8e5c884bd452035c2d4d905593ab143104bcd9b3ee70ce434ce3e896
BLAKE2b-256 checksum
How to use checksums
ae0bf29ec5493791118c57d503132e32334bd4a5cea2a0f3dcbf188b05375056
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_aarch64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_28_aarch64.whl
Size 6.1 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
d17012c80b487a009915407d1378ba3693f136d2e10e2cc5c4bdf3fa494fbe32
BLAKE2b-256 checksum
How to use checksums
cc1dea32545aea750fcbe7af2da3b3fd0fde0b30e9259a641a42aefd6a81e1d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.7 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
464f34e40c5455f392768d4702b97453d84458430bc6a87422f4c94e45b45975
BLAKE2b-256 checksum
How to use checksums
16008e7e3d9bef2ea0b73d6950a1ff91672718e3c728ef89dc1b4f94931f5aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 6.1 MB
Tags CPython 3.8 Linux glibc 2.17+ PowerPC 64-le abi3
SHA-256 checksum
How to use checksums
31563cf30381dbda734a0262639df938b36104a2102655f574031bd5fe050bdd
BLAKE2b-256 checksum
How to use checksums
1cb448185fb16dc52bbcbce6910d5188c40621fb729cd7abe872036f678d68d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Size 5.9 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-32 abi3
SHA-256 checksum
How to use checksums
9d62bf2ae6d2d2f841e9dea95f117e5ebeb9bcdcbe075e7522e6180b82e4472e
BLAKE2b-256 checksum
How to use checksums
013fe3d02d103682ec57b6cb7f5051df76f55ecb7cf683393ec2eda0e4cccb4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-macosx_11_0_arm64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-macosx_11_0_arm64.whl
Size 3.3 MB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
76c343381476c26b2dd47a27a45ae7ca7461f17f27359225905860d739f6469b
BLAKE2b-256 checksum
How to use checksums
03f80435917cdc8ce273a2189a4ea9952d4234f771c690be94640885565957ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / baseten_performance_client-0.1.14-cp38-abi3-macosx_10_12_x86_64.whl

Download URL baseten_performance_client-0.1.14-cp38-abi3-macosx_10_12_x86_64.whl
Size 3.4 MB
Tags CPython 3.8 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
beca2155e3a368f900e36c1f944d7cd2b408e0ef600f817f8a50bf4e961eaff4
BLAKE2b-256 checksum
How to use checksums
933c9fe49ca22e6399c3114cc75681fe1b93701309b53f7e202b76f63c3deff2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

This release

0.1.14 This release

22 release files

0.1.8

22 release files

0.1.7

22 release files

0.1.6

22 release files

0.1.5

30 release files

0.1.4

30 release files

0.1.3

30 release files

0.1.2

30 release files

0.1.0

30 release files

0.0.9

23 release files

0.0.8

23 release files

0.0.7

23 release files

0.0.6

25 release files

0.0.2

25 release files

0.0.1

25 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page