baseten-performance-client


Namebaseten-performance-client JSON
Version 0.0.9 PyPI version JSON
download
home_pageNone
SummaryA ultra-high performance package for sending requests to Baseten Embedding Inference'
upload_time2025-07-31 05:29:05
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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 simulaneous sync and async usage. It was benchmarked with >1200 rps per client in [our blog](https://www.baseten.co/blog/your-client-code-matters-10x-higher-embedding-throughput-with-python-and-rust/). PerformanceClient is built on top of pyo3, reqwest and tokio and is MIT licensed.

![benchmarks](https://www.baseten.co/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F104802%2F1749832130-diagram-9.png%3Fauto%3Dformat%26fit%3Dmax%26w%3D1200&w=3840&q=75)

## Installation

```
pip install baseten_performance_client
```

## Usage

```python
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"
client = PerformanceClient(base_url=base_url_embed, api_key=api_key)
```
### Embeddings
#### Synchronous Embedding

```python
texts = ["Hello world", "Example text", "Another sample"]
response = client.embed(
    input=texts,
    model="my_model",
    batch_size=4,
    max_concurrent_requests=32,
    timeout_s=360
)

# 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

```python
async def async_embed():
    texts = ["Async hello", "Async example"]
    response = await client.async_embed(
        input=texts,
        model="my_model",
        batch_size=2,
        max_concurrent_requests=16,
        timeout_s=360
    )
    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× |

### Gerneral 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
```python
payload1 = {"model": "my_model", "input": ["Batch request sample 1"]}
payload2 = {"model": "my_model", "input": ["Batch request sample 2"]}
response_obj = client.batch_post(
    url_path="/v1/embeddings", # Example path, adjust to your needs
    payloads=[payload1, payload2],
    max_concurrent_requests=96,
    timeout_s=360
)
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

```python
async def async_batch_post_example():
    payload1 = {"model": "my_model", "input": ["Async batch sample 1"]}
    payload2 = {"model": "my_model", "input": ["Async batch sample 2"]}
    response_obj = await client.async_batch_post(
        url_path="/v1/embeddings",
        payloads=[payload1, payload2],
        max_concurrent_requests=4,
        timeout_s=360
    )
    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

```python
query = "What is the best framework?"
documents = ["Doc 1 text", "Doc 2 text", "Doc 3 text"]
rerank_response = client.rerank(
    query=query,
    texts=documents,
    return_text=True,
    batch_size=2,
    max_concurrent_requests=16,
    timeout_s=360
)
for res in rerank_response.data:
    print(f"Index: {res.index} Score: {res.score}")
```

#### Asynchronous Reranking

```python
async def async_rerank():
    query = "Async query sample"
    docs = ["Async doc1", "Async doc2"]
    response = await client.async_rerank(
        query=query,
        texts=docs,
        return_text=True,
        batch_size=1,
        max_concurrent_requests=8,
        timeout_s=360
    )
    for res in response.data:
        print(f"Async Index: {res.index} Score: {res.score}")

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

### Classification
Predicy (classification endpoint) compatible with BEI or text-embeddings-inference.
#### Synchronous Classification

```python
texts_to_classify = [
    "This is great!",
    "I did not like it.",
    "Neutral experience."
]
classify_response = client.classify(
    inputs=texts_to_classify,
    batch_size=2,
    max_concurrent_requests=16,
    timeout_s=360
)
for group in classify_response.data:
    for result in group:
        print(f"Label: {result.label}, Score: {result.score}")
```

#### Asynchronous Classification
```python
async def async_classify():
    texts = ["Async positive", "Async negative"]
    response = await client.async_classify(
        inputs=texts,
        batch_size=1,
        max_concurrent_requests=8,
        timeout_s=360
    )
    for group in response.data:
        for res in group:
            print(f"Async Label: {res.label}, Score: {res.score}")

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


### 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:

```python
import requests

# client = PerformanceClient(base_url="your_b10_url", api_key="your_b10_api_key")

texts_to_embed = ["Hello world", "Another text example"]
try:
    response = client.embed(
        input=texts_to_embed,
        model="your_embedding_model", # Replace with your actual model name
        batch_size=2,
        max_concurrent_requests=4,
        timeout_s=60 # Timeout in seconds
    )
    # 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

```bash
# 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


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "baseten-performance-client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Michael Feil <no-reply@baseten.co>",
    "download_url": "https://files.pythonhosted.org/packages/14/2e/982de2cad15b17ae82367cb5b39f83c97271e63220abde5e3e4f8a1032f4/baseten_performance_client-0.0.9.tar.gz",
    "platform": null,
    "description": "# High performance client for Baseten.co\n\nThis 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 simulaneous sync and async usage. It was benchmarked with >1200 rps per client in [our blog](https://www.baseten.co/blog/your-client-code-matters-10x-higher-embedding-throughput-with-python-and-rust/). PerformanceClient is built on top of pyo3, reqwest and tokio and is MIT licensed.\n\n![benchmarks](https://www.baseten.co/_next/image/?url=https%3A%2F%2Fwww.datocms-assets.com%2F104802%2F1749832130-diagram-9.png%3Fauto%3Dformat%26fit%3Dmax%26w%3D1200&w=3840&q=75)\n\n## Installation\n\n```\npip install baseten_performance_client\n```\n\n## Usage\n\n```python\nimport os\nimport asyncio\nfrom baseten_performance_client import PerformanceClient, OpenAIEmbeddingsResponse, RerankResponse, ClassificationResponse\n\napi_key = os.environ.get(\"BASETEN_API_KEY\")\nbase_url_embed = \"https://model-yqv4yjjq.api.baseten.co/environments/production/sync\"\n# Also works with OpenAI or Mixedbread.\n# base_url_embed = \"https://api.openai.com\" or \"https://api.mixedbread.com\"\nclient = PerformanceClient(base_url=base_url_embed, api_key=api_key)\n```\n### Embeddings\n#### Synchronous Embedding\n\n```python\ntexts = [\"Hello world\", \"Example text\", \"Another sample\"]\nresponse = client.embed(\n    input=texts,\n    model=\"my_model\",\n    batch_size=4,\n    max_concurrent_requests=32,\n    timeout_s=360\n)\n\n# Accessing embedding data\nprint(f\"Model used: {response.model}\")\nprint(f\"Total tokens used: {response.usage.total_tokens}\")\nprint(f\"Total time: {response.total_time:.4f}s\")\nif response.individual_batch_request_times:\n    for i, batch_time in enumerate(response.individual_batch_request_times):\n        print(f\"  Time for batch {i}: {batch_time:.4f}s\")\n\nfor i, embedding_data in enumerate(response.data):\n    print(f\"Embedding for text {i} (original input index {embedding_data.index}):\")\n    # embedding_data.embedding can be List[float] or str (base64)\n    if isinstance(embedding_data.embedding, list):\n        print(f\"  First 3 dimensions: {embedding_data.embedding[:3]}\")\n        print(f\"  Length: {len(embedding_data.embedding)}\")\n\n# Using the numpy() method (requires numpy to be installed)\nimport numpy as np\nnumpy_array = response.numpy()\nprint(\"\\nEmbeddings as NumPy array:\")\nprint(f\"  Shape: {numpy_array.shape}\")\nprint(f\"  Data type: {numpy_array.dtype}\")\nif numpy_array.shape[0] > 0:\n    print(f\"  First 3 dimensions of the first embedding: {numpy_array[0][:3]}\")\n\n```\n\nNote: The embed method is versatile and can be used with any embeddings service, e.g. OpenAI API embeddings, not just for Baseten deployments.\n\n#### Asynchronous Embedding\n\n```python\nasync def async_embed():\n    texts = [\"Async hello\", \"Async example\"]\n    response = await client.async_embed(\n        input=texts,\n        model=\"my_model\",\n        batch_size=2,\n        max_concurrent_requests=16,\n        timeout_s=360\n    )\n    print(\"Async embedding response:\", response.data)\n\n# To run:\n# asyncio.run(async_embed())\n```\n\n#### Embedding Benchmarks\nComparison 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.\n\n| Number of inputs / embeddings | Number of Tasks | PerformanceClient (s) | AsyncOpenAI (s) | Speedup |\n|-------------------------------:|---------------:|---------------------:|----------------:|--------:|\n| 128                            |              1 |                0.12 |            0.13 |    1.08\u00d7 |\n| 512                            |              4 |                0.14 |            0.21 |    1.50\u00d7 |\n| 8 192                          |             64 |                0.83 |            1.95 |    2.35\u00d7 |\n| 131 072                        |           1 024 |                4.63 |           39.07 |    8.44\u00d7 |\n| 2 097 152                      |          16 384 |               70.92 |          903.68 |   12.74\u00d7 |\n\n### Gerneral Batch POST\n\nThe 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.\n\n#### Synchronous Batch POST\n```python\npayload1 = {\"model\": \"my_model\", \"input\": [\"Batch request sample 1\"]}\npayload2 = {\"model\": \"my_model\", \"input\": [\"Batch request sample 2\"]}\nresponse_obj = client.batch_post(\n    url_path=\"/v1/embeddings\", # Example path, adjust to your needs\n    payloads=[payload1, payload2],\n    max_concurrent_requests=96,\n    timeout_s=360\n)\nprint(f\"Total time for batch POST: {response_obj.total_time:.4f}s\")\nfor i, (resp_data, headers, time_taken) in enumerate(zip(response_obj.data, response_obj.response_headers, response_obj.individual_request_times)):\n    print(f\"Response {i+1}:\")\n    print(f\"  Data: {resp_data}\")\n    print(f\"  Headers: {headers}\")\n    print(f\"  Time taken: {time_taken:.4f}s\")\n```\n\n#### Asynchronous Batch POST\n\n```python\nasync def async_batch_post_example():\n    payload1 = {\"model\": \"my_model\", \"input\": [\"Async batch sample 1\"]}\n    payload2 = {\"model\": \"my_model\", \"input\": [\"Async batch sample 2\"]}\n    response_obj = await client.async_batch_post(\n        url_path=\"/v1/embeddings\",\n        payloads=[payload1, payload2],\n        max_concurrent_requests=4,\n        timeout_s=360\n    )\n    print(f\"Async total time for batch POST: {response_obj.total_time:.4f}s\")\n    for i, (resp_data, headers, time_taken) in enumerate(zip(response_obj.data, response_obj.response_headers, response_obj.individual_request_times)):\n        print(f\"Async Response {i+1}:\")\n        print(f\"  Data: {resp_data}\")\n        print(f\"  Headers: {headers}\")\n        print(f\"  Time taken: {time_taken:.4f}s\")\n\n# To run:\n# asyncio.run(async_batch_post_example())\n```\n### Reranking\nReranking compatible with BEI or text-embeddings-inference.\n\n#### Synchronous Reranking\n\n```python\nquery = \"What is the best framework?\"\ndocuments = [\"Doc 1 text\", \"Doc 2 text\", \"Doc 3 text\"]\nrerank_response = client.rerank(\n    query=query,\n    texts=documents,\n    return_text=True,\n    batch_size=2,\n    max_concurrent_requests=16,\n    timeout_s=360\n)\nfor res in rerank_response.data:\n    print(f\"Index: {res.index} Score: {res.score}\")\n```\n\n#### Asynchronous Reranking\n\n```python\nasync def async_rerank():\n    query = \"Async query sample\"\n    docs = [\"Async doc1\", \"Async doc2\"]\n    response = await client.async_rerank(\n        query=query,\n        texts=docs,\n        return_text=True,\n        batch_size=1,\n        max_concurrent_requests=8,\n        timeout_s=360\n    )\n    for res in response.data:\n        print(f\"Async Index: {res.index} Score: {res.score}\")\n\n# To run:\n# asyncio.run(async_rerank())\n```\n\n### Classification\nPredicy (classification endpoint) compatible with BEI or text-embeddings-inference.\n#### Synchronous Classification\n\n```python\ntexts_to_classify = [\n    \"This is great!\",\n    \"I did not like it.\",\n    \"Neutral experience.\"\n]\nclassify_response = client.classify(\n    inputs=texts_to_classify,\n    batch_size=2,\n    max_concurrent_requests=16,\n    timeout_s=360\n)\nfor group in classify_response.data:\n    for result in group:\n        print(f\"Label: {result.label}, Score: {result.score}\")\n```\n\n#### Asynchronous Classification\n```python\nasync def async_classify():\n    texts = [\"Async positive\", \"Async negative\"]\n    response = await client.async_classify(\n        inputs=texts,\n        batch_size=1,\n        max_concurrent_requests=8,\n        timeout_s=360\n    )\n    for group in response.data:\n        for res in group:\n            print(f\"Async Label: {res.label}, Score: {res.score}\")\n\n# To run:\n# asyncio.run(async_classify())\n```\n\n\n### Error Handling\n\nThe client can raise several types of errors. Here's how to handle common ones:\n\n- **`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.\n- **`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.\n\nHere's an example demonstrating how to catch these errors for the `embed` method:\n\n```python\nimport requests\n\n# client = PerformanceClient(base_url=\"your_b10_url\", api_key=\"your_b10_api_key\")\n\ntexts_to_embed = [\"Hello world\", \"Another text example\"]\ntry:\n    response = client.embed(\n        input=texts_to_embed,\n        model=\"your_embedding_model\", # Replace with your actual model name\n        batch_size=2,\n        max_concurrent_requests=4,\n        timeout_s=60 # Timeout in seconds\n    )\n    # Process successful response\n    print(f\"Model used: {response.model}\")\n    print(f\"Total tokens: {response.usage.total_tokens}\")\n    for item in response.data:\n        embedding_preview = item.embedding[:3] if isinstance(item.embedding, list) else \"Base64 Data\"\n        print(f\"Index {item.index}, Embedding (first 3 dims or type): {embedding_preview}\")\n\nexcept requests.exceptions.HTTPError as e:\n    print(f\"An HTTP error occurred: {e}, code {e.args[0]}\")\n\n```\n\nFor 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.\n\n## Development\n\n```bash\n# Install prerequisites\nsudo apt-get install patchelf\n# Install cargo if not already installed.\n\n# Set up a Python virtual environment\npython -m venv .venv\nsource .venv/bin/activate\n\n# Install development dependencies\npip install maturin[patchelf] pytest requests numpy\n\n# Build and install the Rust extension in development mode\nmaturin develop\ncargo fmt\n# Run tests\npytest tests\n```\n\n## Contributions\nFeel free to contribute to this repo, tag @michaelfeil for review.\n\n## License\nMIT License\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A ultra-high performance package for sending requests to Baseten Embedding Inference'",
    "version": "0.0.9",
    "project_urls": {
        "Issues": "https://github.com/basetenlabs/truss/issues",
        "Repository": "https://github.com/basetenlabs/truss.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d24b5685ff57d49945ae16cd080d6818a6a95dfa194327cf66c6555b80748f02",
                "md5": "644da18074eb452d6bf3b0c3e8203b3b",
                "sha256": "a5d3fc73fcb1d729dc60dd84ddb5246244bd732813b5a913754225e7d4ca714b"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "644da18074eb452d6bf3b0c3e8203b3b",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1813225,
            "upload_time": "2025-07-31T05:28:43",
            "upload_time_iso_8601": "2025-07-31T05:28:43.395330Z",
            "url": "https://files.pythonhosted.org/packages/d2/4b/5685ff57d49945ae16cd080d6818a6a95dfa194327cf66c6555b80748f02/baseten_performance_client-0.0.9-cp313-cp313t-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ab16ea78bf36bdc3009c334b4c7d3b7d01cf25c099259b98d22dc1112070e64a",
                "md5": "bcb13e21f2e69042aacb70a8203df621",
                "sha256": "eab8140a4b691b957bd9a29d4b95fbb9535711bb7ef6f919d1ff66e90cfa7938"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bcb13e21f2e69042aacb70a8203df621",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1753749,
            "upload_time": "2025-07-31T05:28:39",
            "upload_time_iso_8601": "2025-07-31T05:28:39.538944Z",
            "url": "https://files.pythonhosted.org/packages/ab/16/ea78bf36bdc3009c334b4c7d3b7d01cf25c099259b98d22dc1112070e64a/baseten_performance_client-0.0.9-cp313-cp313t-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "655135d75bed6fe0d61616aa78130b4f10670e171d391fcb2a9ed55016ed2e65",
                "md5": "698f1b724d02c54a01e1eabe15f1a7c9",
                "sha256": "3eee9e2cb902cbade7924292ac4eb1836ac2c38d48085798e5f5c8628507c5fe"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "698f1b724d02c54a01e1eabe15f1a7c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4081216,
            "upload_time": "2025-07-31T05:28:30",
            "upload_time_iso_8601": "2025-07-31T05:28:30.482958Z",
            "url": "https://files.pythonhosted.org/packages/65/51/35d75bed6fe0d61616aa78130b4f10670e171d391fcb2a9ed55016ed2e65/baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c1b5b4e1f1b8c82d3c61c8c5bae886fc306ef3f3166398301dd8bb82a9892612",
                "md5": "402fd53e55dd619be01ec33b73a2b3b2",
                "sha256": "ce561e8bbf8a8541688bba36cedddd160905314324cc281eaa2567635c015304"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "402fd53e55dd619be01ec33b73a2b3b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4078448,
            "upload_time": "2025-07-31T05:28:25",
            "upload_time_iso_8601": "2025-07-31T05:28:25.869812Z",
            "url": "https://files.pythonhosted.org/packages/c1/b5/b4e1f1b8c82d3c61c8c5bae886fc306ef3f3166398301dd8bb82a9892612/baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c0f9cd76e3f891116edbe5cc6c92153a3c2886813128983911e83e00c9dfc22",
                "md5": "ae82b05b352e8dd39e27508d851590a5",
                "sha256": "04b65c5e631c359d25c184e294c6cc03a538da30fedd9fa3bd5b71bbe67fa6ac"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ae82b05b352e8dd39e27508d851590a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4022840,
            "upload_time": "2025-07-31T05:28:35",
            "upload_time_iso_8601": "2025-07-31T05:28:35.294379Z",
            "url": "https://files.pythonhosted.org/packages/8c/0f/9cd76e3f891116edbe5cc6c92153a3c2886813128983911e83e00c9dfc22/baseten_performance_client-0.0.9-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1ffc68c82198bcfcf2ab66efc2354ab8070455fac97f50d873c01f00f9eb2589",
                "md5": "4b302896e5842b7c8e196040d2159a47",
                "sha256": "19b975b2ce932b15b9a5967c9aa3c88c3ea2e7388c64f344fe06301baf9784ab"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4b302896e5842b7c8e196040d2159a47",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4527446,
            "upload_time": "2025-07-31T05:28:47",
            "upload_time_iso_8601": "2025-07-31T05:28:47.858431Z",
            "url": "https://files.pythonhosted.org/packages/1f/fc/68c82198bcfcf2ab66efc2354ab8070455fac97f50d873c01f00f9eb2589/baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9f2cecaeb5e45e84539affdfb74819d15143e7d1a6943ad2bc1ba1bf46591600",
                "md5": "dd8e7dd67895d44af40baad51cfbd6dd",
                "sha256": "dccbe021a6184cb87f34bdacbcf7e68cfeb2c8cde9853092e82efd1f8841bf78"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "dd8e7dd67895d44af40baad51cfbd6dd",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 3833857,
            "upload_time": "2025-07-31T05:28:52",
            "upload_time_iso_8601": "2025-07-31T05:28:52.331503Z",
            "url": "https://files.pythonhosted.org/packages/9f/2c/ecaeb5e45e84539affdfb74819d15143e7d1a6943ad2bc1ba1bf46591600/baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9a9735cfd49a14dfe3a144a2986989a55cbb37fe1fe1b900e19fa53706ce1d72",
                "md5": "658e85a892e2752654bd99783c4b7a09",
                "sha256": "141ee7fc40c36ab1ba72c83afff58f0464b4af1782757f3f7fa6a2e0aa1015d3"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "658e85a892e2752654bd99783c4b7a09",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4139125,
            "upload_time": "2025-07-31T05:28:57",
            "upload_time_iso_8601": "2025-07-31T05:28:57.259396Z",
            "url": "https://files.pythonhosted.org/packages/9a/97/35cfd49a14dfe3a144a2986989a55cbb37fe1fe1b900e19fa53706ce1d72/baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c8591f65d8857bc139c3bd1479e8800e97484626799c5df96378db9bc8fd95a",
                "md5": "abf662c03506e9e9a3cb8b4bc562a166",
                "sha256": "825237a58b704c9672cc20d9bfe0465df09f496c4385744b6214fc2b251ce719"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "abf662c03506e9e9a3cb8b4bc562a166",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 4158831,
            "upload_time": "2025-07-31T05:29:01",
            "upload_time_iso_8601": "2025-07-31T05:29:01.310483Z",
            "url": "https://files.pythonhosted.org/packages/8c/85/91f65d8857bc139c3bd1479e8800e97484626799c5df96378db9bc8fd95a/baseten_performance_client-0.0.9-cp313-cp313t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8d062989fc444426dcf59e42089a0705476d379033d62ecd790b586c750b5bc2",
                "md5": "ad6b55b420bb2ae7040a3a41e855d65a",
                "sha256": "39645c0f0d3fbcbb238742b9808abe160189acfc7d6066b9fb74ec0586c18bbc"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad6b55b420bb2ae7040a3a41e855d65a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1831104,
            "upload_time": "2025-07-31T05:28:45",
            "upload_time_iso_8601": "2025-07-31T05:28:45.514611Z",
            "url": "https://files.pythonhosted.org/packages/8d/06/2989fc444426dcf59e42089a0705476d379033d62ecd790b586c750b5bc2/baseten_performance_client-0.0.9-cp38-abi3-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "180725baa8e0d4eaff11f280879c37eb5473736ab79bc6529bf4e7679a0a464d",
                "md5": "dc68233f4f87d00340aa5e310c1f8b58",
                "sha256": "308fb1582e8917033ed0ea6c5273bb28799d0a569752fd46d00fcb7f52a2527d"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "dc68233f4f87d00340aa5e310c1f8b58",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1764628,
            "upload_time": "2025-07-31T05:28:41",
            "upload_time_iso_8601": "2025-07-31T05:28:41.378501Z",
            "url": "https://files.pythonhosted.org/packages/18/07/25baa8e0d4eaff11f280879c37eb5473736ab79bc6529bf4e7679a0a464d/baseten_performance_client-0.0.9-cp38-abi3-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "675a35c379b2ea70a26e3306f3c9eb44a98b0f4e1ef1fef1f72acd8900691aa0",
                "md5": "88e060f88fbb7771a1fdac1f222d3051",
                "sha256": "64d932cf9de0dad831c3a4da7ddb321737698e955236e8a2ce2bd8e00d8198b3"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "88e060f88fbb7771a1fdac1f222d3051",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4087098,
            "upload_time": "2025-07-31T05:28:32",
            "upload_time_iso_8601": "2025-07-31T05:28:32.817585Z",
            "url": "https://files.pythonhosted.org/packages/67/5a/35c379b2ea70a26e3306f3c9eb44a98b0f4e1ef1fef1f72acd8900691aa0/baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a7f9219e2ba30ea94db9a97e7112c74a9382012cd2ae947388bee2d7b4edb4c",
                "md5": "5fefa6ab87ba46f2d59b9bb87790e773",
                "sha256": "662dd4506f225610e167e0930e2facd1b461e3bbc5be5283dde5a9bbfc0108b5"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "5fefa6ab87ba46f2d59b9bb87790e773",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4082921,
            "upload_time": "2025-07-31T05:28:28",
            "upload_time_iso_8601": "2025-07-31T05:28:28.141574Z",
            "url": "https://files.pythonhosted.org/packages/2a/7f/9219e2ba30ea94db9a97e7112c74a9382012cd2ae947388bee2d7b4edb4c/baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4fb818ea1323bc8338b4a887f85f2f42869a1c793663785cea4493522a62403e",
                "md5": "f4132da724f25769d470a0997fc500d6",
                "sha256": "8448246adb0cba4798690f869293c07f404351af50128307b7b217771dabab8e"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f4132da724f25769d470a0997fc500d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4023831,
            "upload_time": "2025-07-31T05:28:37",
            "upload_time_iso_8601": "2025-07-31T05:28:37.634877Z",
            "url": "https://files.pythonhosted.org/packages/4f/b8/18ea1323bc8338b4a887f85f2f42869a1c793663785cea4493522a62403e/baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "098183347e1bad6647400a790bef35eff15f7d7fea421cd9f12e22707154ca23",
                "md5": "3fb258854b3f4edeaa4a369b4ad0f22e",
                "sha256": "10275f3b772126d14949df26fc816e135017e1218ceedbc7b57a2b5d73c8e862"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_28_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3fb258854b3f4edeaa4a369b4ad0f22e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4250300,
            "upload_time": "2025-07-31T05:28:20",
            "upload_time_iso_8601": "2025-07-31T05:28:20.955708Z",
            "url": "https://files.pythonhosted.org/packages/09/81/83347e1bad6647400a790bef35eff15f7d7fea421cd9f12e22707154ca23/baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_28_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e941150bd43c6f155f14a5274ee30c934e9b34282a4d11f629ff51a63ba43093",
                "md5": "a6a144bf6ffcace0d75938b8656d6646",
                "sha256": "edcd0003a5846a587036b98ffecd09d6808af91473ea3eafb2cf57b971c751d3"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_28_armv7l.whl",
            "has_sig": false,
            "md5_digest": "a6a144bf6ffcace0d75938b8656d6646",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3552675,
            "upload_time": "2025-07-31T05:28:23",
            "upload_time_iso_8601": "2025-07-31T05:28:23.547226Z",
            "url": "https://files.pythonhosted.org/packages/e9/41/150bd43c6f155f14a5274ee30c934e9b34282a4d11f629ff51a63ba43093/baseten_performance_client-0.0.9-cp38-abi3-manylinux_2_28_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "09c8bafc6269bbd3d426500af76a3a0d283a452d1647ad0977a4d694befbf17a",
                "md5": "7bdce7ec4512d02d198d0ecc7382547e",
                "sha256": "251df44d50530f41a5033f4fcaa5d7c91fa52b5a25710f72a5d32dc5bde3b17e"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7bdce7ec4512d02d198d0ecc7382547e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4529679,
            "upload_time": "2025-07-31T05:28:50",
            "upload_time_iso_8601": "2025-07-31T05:28:50.013491Z",
            "url": "https://files.pythonhosted.org/packages/09/c8/bafc6269bbd3d426500af76a3a0d283a452d1647ad0977a4d694befbf17a/baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7d83dab1266ac5df6a04f6076a9b5f49386be87b5decbf6abf488eddc9b7da57",
                "md5": "044018c23fc2af677e7941823eddad90",
                "sha256": "b419c3553e68d376983bc571d7d30a1aa0724d8dcc5a9c2b77684f6a13853b19"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "044018c23fc2af677e7941823eddad90",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3841085,
            "upload_time": "2025-07-31T05:28:54",
            "upload_time_iso_8601": "2025-07-31T05:28:54.797383Z",
            "url": "https://files.pythonhosted.org/packages/7d/83/dab1266ac5df6a04f6076a9b5f49386be87b5decbf6abf488eddc9b7da57/baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "234f488822ec93b2330d34583f0de2e9185984311e78de6088a7d3f92e50e6d7",
                "md5": "c56ec24a6a7eeacb8cbdb39e79f09763",
                "sha256": "437158387e40fdce7a10b0ddc017061b9ed8b6be2f9764e6c283898e21331888"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "c56ec24a6a7eeacb8cbdb39e79f09763",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4147425,
            "upload_time": "2025-07-31T05:28:59",
            "upload_time_iso_8601": "2025-07-31T05:28:59.293758Z",
            "url": "https://files.pythonhosted.org/packages/23/4f/488822ec93b2330d34583f0de2e9185984311e78de6088a7d3f92e50e6d7/baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "94ee4ed47aff81465658bcc29d0e4945a5427db42bd59069c94f0e6847fa46cf",
                "md5": "783037f5394d12dd3fc077f96d0c5ac1",
                "sha256": "f5371922c21ec959797ffe5edfb65fe566b5765c9d2e1c6f8c9dc0efd27da6e8"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "783037f5394d12dd3fc077f96d0c5ac1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 4166455,
            "upload_time": "2025-07-31T05:29:03",
            "upload_time_iso_8601": "2025-07-31T05:29:03.497002Z",
            "url": "https://files.pythonhosted.org/packages/94/ee/4ed47aff81465658bcc29d0e4945a5427db42bd59069c94f0e6847fa46cf/baseten_performance_client-0.0.9-cp38-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8b902ac4793926053175e82a25ce8e6372b01d49cc58e2abc8d9b0130a925220",
                "md5": "2755e4bb3cb94154896fc48634e0c592",
                "sha256": "ea922047c937cd7a980cafe3edf29aa349fae6611110534b8697dc607de4ee75"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "2755e4bb3cb94154896fc48634e0c592",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1461595,
            "upload_time": "2025-07-31T05:29:08",
            "upload_time_iso_8601": "2025-07-31T05:29:08.472421Z",
            "url": "https://files.pythonhosted.org/packages/8b/90/2ac4793926053175e82a25ce8e6372b01d49cc58e2abc8d9b0130a925220/baseten_performance_client-0.0.9-cp38-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dec313d814c0f4b61dbd7b8eaf766f11d5e74d3a9bcb2befc53b578fe4ff3c24",
                "md5": "4a99b2dec28bebfd9ba56bea9ab1e040",
                "sha256": "764ac1b450236cfaeef046207e50881b3fb9a3e37bcad9ce44ed3e1279cede22"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9-cp38-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4a99b2dec28bebfd9ba56bea9ab1e040",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1576820,
            "upload_time": "2025-07-31T05:29:06",
            "upload_time_iso_8601": "2025-07-31T05:29:06.636936Z",
            "url": "https://files.pythonhosted.org/packages/de/c3/13d814c0f4b61dbd7b8eaf766f11d5e74d3a9bcb2befc53b578fe4ff3c24/baseten_performance_client-0.0.9-cp38-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "142e982de2cad15b17ae82367cb5b39f83c97271e63220abde5e3e4f8a1032f4",
                "md5": "72f6f4833f74d4c2009f4c314cd612bb",
                "sha256": "d2055ac3b1eaba10427531dd21a4873a414a6e3327146074c6e3c9af8c863c66"
            },
            "downloads": -1,
            "filename": "baseten_performance_client-0.0.9.tar.gz",
            "has_sig": false,
            "md5_digest": "72f6f4833f74d4c2009f4c314cd612bb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 61202,
            "upload_time": "2025-07-31T05:29:05",
            "upload_time_iso_8601": "2025-07-31T05:29:05.210088Z",
            "url": "https://files.pythonhosted.org/packages/14/2e/982de2cad15b17ae82367cb5b39f83c97271e63220abde5e3e4f8a1032f4/baseten_performance_client-0.0.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-31 05:29:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "basetenlabs",
    "github_project": "truss",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "baseten-performance-client"
}
        
Elapsed time: 2.93978s