Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "2.4.0"
".": "2.5.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 14
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/turbopuffer-benesch/turbopuffer-17e5bcde1d39d5673f2b1bf4446afa000d90a0fdb9ae4b86a05bd15f12f9e547.yml
openapi_spec_hash: 4aaf757ac332b99a28f9a44a47891a5f
config_hash: bab72dc9f937352c7a01a37dadd44122
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/turbopuffer-benesch/turbopuffer-c47147eabda459ce775ffbab42a531bb3f2778c4cce15f88e05a4eed97013a21.yml
openapi_spec_hash: a981d1b889452ec8c0108ee0ec69dc6d
config_hash: 068c4c3b2277de182691cc65c1e50a7c
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Changelog

## 2.5.0 (2026-06-25)

Full Changelog: [v2.4.0...v2.5.0](https://github.com/turbopuffer/turbopuffer-python/compare/v2.4.0...v2.5.0)

### Features

* tpuf-engine: support dest_encryption in copy_from_namespace ([3421ea0](https://github.com/turbopuffer/turbopuffer-python/commit/3421ea0ba6b98a2500e72dadd4e61aa4b0410f60))


### Chores

* remove unused MCP package ([e779eca](https://github.com/turbopuffer/turbopuffer-python/commit/e779eca3645e79cb84b065f2ca8de4eb0e755103))


### Documentation

* rename /docs/overview to /docs/api-overview ([68e7cd6](https://github.com/turbopuffer/turbopuffer-python/commit/68e7cd6fb1b073b5112def1ee4083f62ab994610))

## 2.4.0 (2026-06-08)

Full Changelog: [v2.3.0...v2.4.0](https://github.com/turbopuffer/turbopuffer-python/compare/v2.3.0...v2.4.0)
Expand Down
11 changes: 1 addition & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,9 @@ and offers both synchronous and asynchronous clients powered by [httpx](https://

It is generated with [Stainless](https://www.stainless.com/).

## MCP Server

Use the turbopuffer MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.

[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40turbopuffer%2Fturbopuffer-mcp&config=eyJuYW1lIjoiQHR1cmJvcHVmZmVyL3R1cmJvcHVmZmVyLW1jcCIsInRyYW5zcG9ydCI6Imh0dHAiLCJ1cmwiOiJodHRwczovL3R1cmJvcHVmZmVyLnN0bG1jcC5jb20iLCJoZWFkZXJzIjp7IngtdHVyYm9wdWZmZXItYXBpLWtleSI6InRwdWZfQTEuLi4ifX0)
[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40turbopuffer%2Fturbopuffer-mcp%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fturbopuffer.stlmcp.com%22%2C%22headers%22%3A%7B%22x-turbopuffer-api-key%22%3A%22tpuf_A1...%22%7D%7D)

> Note: You may need to set environment variables in your MCP client.

## Documentation

The HTTP API documentation can be found at [turbopuffer.com/docs/overview](https://turbopuffer.com/docs/overview).
The HTTP API documentation can be found at [turbopuffer.com/docs/api-overview](https://turbopuffer.com/docs/api-overview).

## Installation

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "turbopuffer"
version = "2.4.0"
version = "2.5.0"
description = "The official Python library for the turbopuffer API"
dynamic = ["readme"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src/turbopuffer/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "turbopuffer"
__version__ = "2.4.0" # x-release-please-version
__version__ = "2.5.0" # x-release-please-version
8 changes: 8 additions & 0 deletions src/turbopuffer/resources/namespaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ def copy_from(
*,
namespace: str | None = None,
source_namespace: str,
dest_encryption: EncryptionParam | Omit = omit,
source_api_key: str | Omit = omit,
source_region: str | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
Expand All @@ -143,6 +144,8 @@ def copy_from(
Args:
source_namespace: The namespace to copy documents from.

dest_encryption: (Optional) The encryption configuration for the destination namespace.

source_api_key: (Optional) An API key for the organization containing the source namespace

source_region: (Optional) The region of the source namespace.
Expand All @@ -165,6 +168,7 @@ def copy_from(
"copy_from_namespace": maybe_transform(
{
"source_namespace": source_namespace,
"dest_encryption": dest_encryption,
"source_api_key": source_api_key,
"source_region": source_region,
},
Expand Down Expand Up @@ -887,6 +891,7 @@ async def copy_from(
*,
namespace: str | None = None,
source_namespace: str,
dest_encryption: EncryptionParam | Omit = omit,
source_api_key: str | Omit = omit,
source_region: str | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
Expand All @@ -902,6 +907,8 @@ async def copy_from(
Args:
source_namespace: The namespace to copy documents from.

dest_encryption: (Optional) The encryption configuration for the destination namespace.

source_api_key: (Optional) An API key for the organization containing the source namespace

source_region: (Optional) The region of the source namespace.
Expand All @@ -924,6 +931,7 @@ async def copy_from(
"copy_from_namespace": await async_maybe_transform(
{
"source_namespace": source_namespace,
"dest_encryption": dest_encryption,
"source_api_key": source_api_key,
"source_region": source_region,
},
Expand Down
2 changes: 2 additions & 0 deletions src/turbopuffer/types/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
GroupByFunction = Tuple[Literal["ForEachUnique"], str]
GroupBy = Union[str, Mapping[str, GroupByFunction]]
RankByAnn = Tuple[str, Literal["ANN"], Sequence[float]]
RankByAnnMulti = Tuple[str, Literal["ANN"], Sequence[Sequence[float]]]
RankByAnnExpr = Tuple[str, Literal["ANN"], Expr]
RankByKnn = Tuple[str, Literal["kNN"], Sequence[float]]
RankByKnnExpr = Tuple[str, Literal["kNN"], Expr]
Expand All @@ -78,6 +79,7 @@
RankByAttributes = Sequence[RankByAttribute]
RankBy = Union[
RankByAnn,
RankByAnnMulti,
RankByAnnExpr,
RankByKnn,
RankByKnnExpr,
Expand Down
5 changes: 5 additions & 0 deletions src/turbopuffer/types/namespace_copy_from_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

from typing_extensions import Required, TypedDict

from .encryption_param import EncryptionParam

__all__ = ["NamespaceCopyFromParams"]


Expand All @@ -13,6 +15,9 @@ class NamespaceCopyFromParams(TypedDict, total=False):
source_namespace: Required[str]
"""The namespace to copy documents from."""

dest_encryption: EncryptionParam
"""(Optional) The encryption configuration for the destination namespace."""

source_api_key: str
"""(Optional) An API key for the organization containing the source namespace"""

Expand Down
8 changes: 8 additions & 0 deletions tests/api_resources/test_namespaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ def test_method_copy_from(self, client: Turbopuffer) -> None:
def test_method_copy_from_with_all_params(self, client: Turbopuffer) -> None:
namespace = client.namespace("namespace").copy_from(
source_namespace="source_namespace",
dest_encryption={
"key_name": "key_name",
"mode": "customer-managed",
},
source_api_key="source_api_key",
source_region="source_region",
)
Expand Down Expand Up @@ -701,6 +705,10 @@ async def test_method_copy_from(self, async_client: AsyncTurbopuffer) -> None:
async def test_method_copy_from_with_all_params(self, async_client: AsyncTurbopuffer) -> None:
namespace = await async_client.namespace("namespace").copy_from(
source_namespace="source_namespace",
dest_encryption={
"key_name": "key_name",
"mode": "customer-managed",
},
source_api_key="source_api_key",
source_region="source_region",
)
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading