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 .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
- name: Get GitHub OIDC Token
if: github.repository == 'stainless-sdks/mixedbread-python'
id: github-oidc
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.46.0"
".": "1.0.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 63
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-5ad16eef3948ad48d494f6c0bf0b7da1063e177df5b8deaeedb53502101026d7.yml
openapi_spec_hash: 631634e0b03b231050e790e28377e51f
config_hash: 9e3a32dc554db9ce76299ea928123b75
configured_endpoints: 51
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-68449c5f406b2b3bc2b94ef7f94c47b3724aa0a69e1033bef1a84477f79420f5.yml
openapi_spec_hash: 2b6de88d9a14a977a66f37c066d0b47a
config_hash: fb2cfcdc5ef83ff03407a8b66c26a59b
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## 1.0.0 (2026-02-12)

Full Changelog: [v0.46.0...v1.0.0](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.46.0...v1.0.0)

### Features

* **api:** api update ([aa4cd1b](https://github.com/mixedbread-ai/mixedbread-python/commit/aa4cd1be677441f7099b98316825fa4873b7d0a9))
* **api:** api update ([4ee152e](https://github.com/mixedbread-ai/mixedbread-python/commit/4ee152e99e45c3c3ead05f66864b8c5ad0f703bf))
* **api:** api update ([dbf3b5a](https://github.com/mixedbread-ai/mixedbread-python/commit/dbf3b5a1de72068247b21fa1ccb6449f19af1437))
* **api:** api update ([af6abf1](https://github.com/mixedbread-ai/mixedbread-python/commit/af6abf14e00dc0adf7ed962b0cb9edf3c40846fb))
* **api:** api update ([650eb91](https://github.com/mixedbread-ai/mixedbread-python/commit/650eb91df9e65e4c6d9ad95db440f78381cee89e))
* **api:** api update ([c5efbe2](https://github.com/mixedbread-ai/mixedbread-python/commit/c5efbe227c1ce9a01beace2df1019f30d39fe9b8))
* **api:** manual updates ([8ac3ea2](https://github.com/mixedbread-ai/mixedbread-python/commit/8ac3ea2e1fd757e00ceab7eb97d7421848869664))
* **client:** add custom JSON encoder for extended type support ([75cc241](https://github.com/mixedbread-ai/mixedbread-python/commit/75cc241a06480f5dee3f3a3c284ee51663e68193))


### Chores

* **ci:** upgrade `actions/github-script` ([56e9034](https://github.com/mixedbread-ai/mixedbread-python/commit/56e9034b3f755fef67982f5c2a122a69802c6ea4))
* **internal:** bump dependencies ([580f6f8](https://github.com/mixedbread-ai/mixedbread-python/commit/580f6f8a878e936e1f9474138c1d7c839681b537))

## 0.46.0 (2026-01-17)

Full Changelog: [v0.45.0...v0.46.0](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.45.0...v0.46.0)
Expand Down
50 changes: 1 addition & 49 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Methods:
- <code title="get /">client.<a href="./src/mixedbread/_client.py">info</a>() -> <a href="./src/mixedbread/types/info_response.py">InfoResponse</a></code>
- <code title="post /v1/reranking">client.<a href="./src/mixedbread/_client.py">rerank</a>(\*\*<a href="src/mixedbread/types/client_rerank_params.py">params</a>) -> <a href="./src/mixedbread/types/rerank_response.py">RerankResponse</a></code>

# VectorStores
# Stores

Types:

Expand All @@ -35,54 +35,6 @@ from mixedbread.types import (
ScoredImageURLInputChunk,
ScoredTextInputChunk,
ScoredVideoURLInputChunk,
VectorStore,
VectorStoreChunkSearchOptions,
VectorStoreDeleteResponse,
VectorStoreQuestionAnsweringResponse,
VectorStoreSearchResponse,
)
```

Methods:

- <code title="post /v1/vector_stores">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">create</a>(\*\*<a href="src/mixedbread/types/vector_store_create_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_store.py">VectorStore</a></code>
- <code title="get /v1/vector_stores/{vector_store_identifier}">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">retrieve</a>(vector_store_identifier) -> <a href="./src/mixedbread/types/vector_store.py">VectorStore</a></code>
- <code title="put /v1/vector_stores/{vector_store_identifier}">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">update</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_store_update_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_store.py">VectorStore</a></code>
- <code title="get /v1/vector_stores">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">list</a>(\*\*<a href="src/mixedbread/types/vector_store_list_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_store.py">SyncCursor[VectorStore]</a></code>
- <code title="delete /v1/vector_stores/{vector_store_identifier}">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">delete</a>(vector_store_identifier) -> <a href="./src/mixedbread/types/vector_store_delete_response.py">VectorStoreDeleteResponse</a></code>
- <code title="post /v1/vector_stores/question-answering">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">question_answering</a>(\*\*<a href="src/mixedbread/types/vector_store_question_answering_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_store_question_answering_response.py">VectorStoreQuestionAnsweringResponse</a></code>
- <code title="post /v1/vector_stores/search">client.vector_stores.<a href="./src/mixedbread/resources/vector_stores/vector_stores.py">search</a>(\*\*<a href="src/mixedbread/types/vector_store_search_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_store_search_response.py">VectorStoreSearchResponse</a></code>

## Files

Types:

```python
from mixedbread.types.vector_stores import (
RerankConfig,
ScoredVectorStoreFile,
VectorStoreFileStatus,
VectorStoreFile,
FileListResponse,
FileDeleteResponse,
FileSearchResponse,
)
```

Methods:

- <code title="post /v1/vector_stores/{vector_store_identifier}/files">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">create</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_create_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="get /v1/vector_stores/{vector_store_identifier}/files/{file_id}">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">retrieve</a>(file_id, \*, vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_retrieve_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="post /v1/vector_stores/{vector_store_identifier}/files/list">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">list</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_list_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/file_list_response.py">FileListResponse</a></code>
- <code title="delete /v1/vector_stores/{vector_store_identifier}/files/{file_id}">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">delete</a>(file_id, \*, vector_store_identifier) -> <a href="./src/mixedbread/types/vector_stores/file_delete_response.py">FileDeleteResponse</a></code>
- <code title="post /v1/vector_stores/files/search">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">search</a>(\*\*<a href="src/mixedbread/types/vector_stores/file_search_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/file_search_response.py">FileSearchResponse</a></code>

# Stores

Types:

```python
from mixedbread.types import (
Store,
StoreChunkSearchOptions,
StoreDeleteResponse,
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 = "mixedbread"
version = "0.46.0"
version = "1.0.0"
description = "The official Python library for the Mixedbread API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
20 changes: 10 additions & 10 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.13.2
aiohttp==3.13.3
# via httpx-aiohttp
# via mixedbread
aiosignal==1.4.0
# via aiohttp
annotated-types==0.7.0
# via pydantic
anyio==4.12.0
anyio==4.12.1
# via httpx
# via mixedbread
argcomplete==3.6.3
Expand All @@ -31,7 +31,7 @@ attrs==25.4.0
# via nox
backports-asyncio-runner==1.2.0
# via pytest-asyncio
certifi==2025.11.12
certifi==2026.1.4
# via httpcore
# via httpx
colorlog==6.10.1
Expand Down Expand Up @@ -61,15 +61,15 @@ httpx==0.28.1
# via httpx-aiohttp
# via mixedbread
# via respx
httpx-aiohttp==0.1.9
httpx-aiohttp==0.1.12
# via mixedbread
humanize==4.13.0
# via nox
idna==3.11
# via anyio
# via httpx
# via yarl
importlib-metadata==8.7.0
importlib-metadata==8.7.1
iniconfig==2.1.0
# via pytest
markdown-it-py==3.0.0
Expand All @@ -82,14 +82,14 @@ multidict==6.7.0
mypy==1.17.0
mypy-extensions==1.1.0
# via mypy
nodeenv==1.9.1
nodeenv==1.10.0
# via pyright
nox==2025.11.12
packaging==25.0
# via dependency-groups
# via nox
# via pytest
pathspec==0.12.1
pathspec==1.0.3
# via mypy
platformdirs==4.4.0
# via virtualenv
Expand All @@ -115,13 +115,13 @@ python-dateutil==2.9.0.post0
# via time-machine
respx==0.22.0
rich==14.2.0
ruff==0.14.7
ruff==0.14.13
six==1.17.0
# via python-dateutil
sniffio==1.3.1
# via mixedbread
time-machine==2.19.0
tomli==2.3.0
tomli==2.4.0
# via dependency-groups
# via mypy
# via nox
Expand All @@ -141,7 +141,7 @@ typing-extensions==4.15.0
# via virtualenv
typing-inspection==0.4.2
# via pydantic
virtualenv==20.35.4
virtualenv==20.36.1
# via nox
yarl==1.22.0
# via aiohttp
Expand Down
8 changes: 4 additions & 4 deletions requirements.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.13.2
aiohttp==3.13.3
# via httpx-aiohttp
# via mixedbread
aiosignal==1.4.0
# via aiohttp
annotated-types==0.7.0
# via pydantic
anyio==4.12.0
anyio==4.12.1
# via httpx
# via mixedbread
async-timeout==5.0.1
# via aiohttp
attrs==25.4.0
# via aiohttp
certifi==2025.11.12
certifi==2026.1.4
# via httpcore
# via httpx
distro==1.9.0
Expand All @@ -43,7 +43,7 @@ httpcore==1.0.9
httpx==0.28.1
# via httpx-aiohttp
# via mixedbread
httpx-aiohttp==0.1.9
httpx-aiohttp==0.1.12
# via mixedbread
idna==3.11
# via anyio
Expand Down
7 changes: 5 additions & 2 deletions src/mixedbread/_base_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
APIConnectionError,
APIResponseValidationError,
)
from ._utils._json import openapi_dumps

log: logging.Logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -554,8 +555,10 @@ def _build_request(
kwargs["content"] = options.content
elif isinstance(json_data, bytes):
kwargs["content"] = json_data
else:
kwargs["json"] = json_data if is_given(json_data) else None
elif not files:
# Don't set content when JSON is sent as multipart/form-data,
# since httpx's content param overrides other body arguments
kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
kwargs["files"] = files
else:
headers.pop("Content-Type", None)
Expand Down
39 changes: 1 addition & 38 deletions src/mixedbread/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
from .types.embedding_create_response import EmbeddingCreateResponse

if TYPE_CHECKING:
from .resources import chat, files, stores, parsing, api_keys, embeddings, extractions, data_sources, vector_stores
from .resources import chat, files, stores, parsing, api_keys, embeddings, extractions, data_sources
from .resources.chat import ChatResource, AsyncChatResource
from .resources.files import FilesResource, AsyncFilesResource
from .resources.api_keys import APIKeysResource, AsyncAPIKeysResource
Expand All @@ -62,7 +62,6 @@
from .resources.parsing.parsing import ParsingResource, AsyncParsingResource
from .resources.extractions.extractions import ExtractionsResource, AsyncExtractionsResource
from .resources.data_sources.data_sources import DataSourcesResource, AsyncDataSourcesResource
from .resources.vector_stores.vector_stores import VectorStoresResource, AsyncVectorStoresResource

__all__ = [
"ENVIRONMENTS",
Expand Down Expand Up @@ -162,12 +161,6 @@ def __init__(
_strict_response_validation=_strict_response_validation,
)

@cached_property
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deprecated namespaces removed without compatibility shim

Medium Severity

This release removes the public client.vector_stores surface and related mixedbread.resources/mixedbread.types exports entirely, so existing integrations that still use deprecated vector_store* symbols now fail at runtime with missing attributes/imports instead of continuing to work with deprecation warnings.

Additional Locations (2)

Fix in Cursor Fix in Web

def vector_stores(self) -> VectorStoresResource:
from .resources.vector_stores import VectorStoresResource

return VectorStoresResource(self)

@cached_property
def stores(self) -> StoresResource:
from .resources.stores import StoresResource
Expand Down Expand Up @@ -565,12 +558,6 @@ def __init__(
_strict_response_validation=_strict_response_validation,
)

@cached_property
def vector_stores(self) -> AsyncVectorStoresResource:
from .resources.vector_stores import AsyncVectorStoresResource

return AsyncVectorStoresResource(self)

@cached_property
def stores(self) -> AsyncStoresResource:
from .resources.stores import AsyncStoresResource
Expand Down Expand Up @@ -905,12 +892,6 @@ def __init__(self, client: Mixedbread) -> None:
client.rerank,
)

@cached_property
def vector_stores(self) -> vector_stores.VectorStoresResourceWithRawResponse:
from .resources.vector_stores import VectorStoresResourceWithRawResponse

return VectorStoresResourceWithRawResponse(self._client.vector_stores)

@cached_property
def stores(self) -> stores.StoresResourceWithRawResponse:
from .resources.stores import StoresResourceWithRawResponse
Expand Down Expand Up @@ -976,12 +957,6 @@ def __init__(self, client: AsyncMixedbread) -> None:
client.rerank,
)

@cached_property
def vector_stores(self) -> vector_stores.AsyncVectorStoresResourceWithRawResponse:
from .resources.vector_stores import AsyncVectorStoresResourceWithRawResponse

return AsyncVectorStoresResourceWithRawResponse(self._client.vector_stores)

@cached_property
def stores(self) -> stores.AsyncStoresResourceWithRawResponse:
from .resources.stores import AsyncStoresResourceWithRawResponse
Expand Down Expand Up @@ -1047,12 +1022,6 @@ def __init__(self, client: Mixedbread) -> None:
client.rerank,
)

@cached_property
def vector_stores(self) -> vector_stores.VectorStoresResourceWithStreamingResponse:
from .resources.vector_stores import VectorStoresResourceWithStreamingResponse

return VectorStoresResourceWithStreamingResponse(self._client.vector_stores)

@cached_property
def stores(self) -> stores.StoresResourceWithStreamingResponse:
from .resources.stores import StoresResourceWithStreamingResponse
Expand Down Expand Up @@ -1118,12 +1087,6 @@ def __init__(self, client: AsyncMixedbread) -> None:
client.rerank,
)

@cached_property
def vector_stores(self) -> vector_stores.AsyncVectorStoresResourceWithStreamingResponse:
from .resources.vector_stores import AsyncVectorStoresResourceWithStreamingResponse

return AsyncVectorStoresResourceWithStreamingResponse(self._client.vector_stores)

@cached_property
def stores(self) -> stores.AsyncStoresResourceWithStreamingResponse:
from .resources.stores import AsyncStoresResourceWithStreamingResponse
Expand Down
6 changes: 3 additions & 3 deletions src/mixedbread/_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ def model_dump(
exclude_defaults: bool = False,
warnings: bool = True,
mode: Literal["json", "python"] = "python",
by_alias: bool | None = None,
) -> dict[str, Any]:
if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
return model.model_dump(
Expand All @@ -148,13 +149,12 @@ def model_dump(
exclude_defaults=exclude_defaults,
# warnings are not supported in Pydantic v1
warnings=True if PYDANTIC_V1 else warnings,
by_alias=by_alias,
)
return cast(
"dict[str, Any]",
model.dict( # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
exclude=exclude,
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
exclude=exclude, exclude_unset=exclude_unset, exclude_defaults=exclude_defaults, by_alias=bool(by_alias)
),
)

Expand Down
Loading
Loading