Skip to content

Commit 8d14736

Browse files
authored
Merge pull request #264 from mixedbread-ai/release-please--branches--main--changes--next
release: 1.0.0
2 parents c29e148 + 04ee74d commit 8d14736

57 files changed

Lines changed: 587 additions & 8354 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
- name: Get GitHub OIDC Token
6464
if: github.repository == 'stainless-sdks/mixedbread-python'
6565
id: github-oidc
66-
uses: actions/github-script@v6
66+
uses: actions/github-script@v8
6767
with:
6868
script: core.setOutput('github_token', await core.getIDToken());
6969

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.46.0"
2+
".": "1.0.0"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 63
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-5ad16eef3948ad48d494f6c0bf0b7da1063e177df5b8deaeedb53502101026d7.yml
3-
openapi_spec_hash: 631634e0b03b231050e790e28377e51f
4-
config_hash: 9e3a32dc554db9ce76299ea928123b75
1+
configured_endpoints: 51
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-68449c5f406b2b3bc2b94ef7f94c47b3724aa0a69e1033bef1a84477f79420f5.yml
3+
openapi_spec_hash: 2b6de88d9a14a977a66f37c066d0b47a
4+
config_hash: fb2cfcdc5ef83ff03407a8b66c26a59b

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# Changelog
22

3+
## 1.0.0 (2026-02-12)
4+
5+
Full Changelog: [v0.46.0...v1.0.0](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.46.0...v1.0.0)
6+
7+
### Features
8+
9+
* **api:** api update ([aa4cd1b](https://github.com/mixedbread-ai/mixedbread-python/commit/aa4cd1be677441f7099b98316825fa4873b7d0a9))
10+
* **api:** api update ([4ee152e](https://github.com/mixedbread-ai/mixedbread-python/commit/4ee152e99e45c3c3ead05f66864b8c5ad0f703bf))
11+
* **api:** api update ([dbf3b5a](https://github.com/mixedbread-ai/mixedbread-python/commit/dbf3b5a1de72068247b21fa1ccb6449f19af1437))
12+
* **api:** api update ([af6abf1](https://github.com/mixedbread-ai/mixedbread-python/commit/af6abf14e00dc0adf7ed962b0cb9edf3c40846fb))
13+
* **api:** api update ([650eb91](https://github.com/mixedbread-ai/mixedbread-python/commit/650eb91df9e65e4c6d9ad95db440f78381cee89e))
14+
* **api:** api update ([c5efbe2](https://github.com/mixedbread-ai/mixedbread-python/commit/c5efbe227c1ce9a01beace2df1019f30d39fe9b8))
15+
* **api:** manual updates ([8ac3ea2](https://github.com/mixedbread-ai/mixedbread-python/commit/8ac3ea2e1fd757e00ceab7eb97d7421848869664))
16+
* **client:** add custom JSON encoder for extended type support ([75cc241](https://github.com/mixedbread-ai/mixedbread-python/commit/75cc241a06480f5dee3f3a3c284ee51663e68193))
17+
18+
19+
### Chores
20+
21+
* **ci:** upgrade `actions/github-script` ([56e9034](https://github.com/mixedbread-ai/mixedbread-python/commit/56e9034b3f755fef67982f5c2a122a69802c6ea4))
22+
* **internal:** bump dependencies ([580f6f8](https://github.com/mixedbread-ai/mixedbread-python/commit/580f6f8a878e936e1f9474138c1d7c839681b537))
23+
324
## 0.46.0 (2026-01-17)
425

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

api.md

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Methods:
2424
- <code title="get /">client.<a href="./src/mixedbread/_client.py">info</a>() -> <a href="./src/mixedbread/types/info_response.py">InfoResponse</a></code>
2525
- <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>
2626

27-
# VectorStores
27+
# Stores
2828

2929
Types:
3030

@@ -35,54 +35,6 @@ from mixedbread.types import (
3535
ScoredImageURLInputChunk,
3636
ScoredTextInputChunk,
3737
ScoredVideoURLInputChunk,
38-
VectorStore,
39-
VectorStoreChunkSearchOptions,
40-
VectorStoreDeleteResponse,
41-
VectorStoreQuestionAnsweringResponse,
42-
VectorStoreSearchResponse,
43-
)
44-
```
45-
46-
Methods:
47-
48-
- <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>
49-
- <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>
50-
- <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>
51-
- <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>
52-
- <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>
53-
- <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>
54-
- <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>
55-
56-
## Files
57-
58-
Types:
59-
60-
```python
61-
from mixedbread.types.vector_stores import (
62-
RerankConfig,
63-
ScoredVectorStoreFile,
64-
VectorStoreFileStatus,
65-
VectorStoreFile,
66-
FileListResponse,
67-
FileDeleteResponse,
68-
FileSearchResponse,
69-
)
70-
```
71-
72-
Methods:
73-
74-
- <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>
75-
- <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>
76-
- <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>
77-
- <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>
78-
- <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>
79-
80-
# Stores
81-
82-
Types:
83-
84-
```python
85-
from mixedbread.types import (
8638
Store,
8739
StoreChunkSearchOptions,
8840
StoreDeleteResponse,

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "mixedbread"
3-
version = "0.46.0"
3+
version = "1.0.0"
44
description = "The official Python library for the Mixedbread API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"

requirements-dev.lock

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
-e file:.
1313
aiohappyeyeballs==2.6.1
1414
# via aiohttp
15-
aiohttp==3.13.2
15+
aiohttp==3.13.3
1616
# via httpx-aiohttp
1717
# via mixedbread
1818
aiosignal==1.4.0
1919
# via aiohttp
2020
annotated-types==0.7.0
2121
# via pydantic
22-
anyio==4.12.0
22+
anyio==4.12.1
2323
# via httpx
2424
# via mixedbread
2525
argcomplete==3.6.3
@@ -31,7 +31,7 @@ attrs==25.4.0
3131
# via nox
3232
backports-asyncio-runner==1.2.0
3333
# via pytest-asyncio
34-
certifi==2025.11.12
34+
certifi==2026.1.4
3535
# via httpcore
3636
# via httpx
3737
colorlog==6.10.1
@@ -61,15 +61,15 @@ httpx==0.28.1
6161
# via httpx-aiohttp
6262
# via mixedbread
6363
# via respx
64-
httpx-aiohttp==0.1.9
64+
httpx-aiohttp==0.1.12
6565
# via mixedbread
6666
humanize==4.13.0
6767
# via nox
6868
idna==3.11
6969
# via anyio
7070
# via httpx
7171
# via yarl
72-
importlib-metadata==8.7.0
72+
importlib-metadata==8.7.1
7373
iniconfig==2.1.0
7474
# via pytest
7575
markdown-it-py==3.0.0
@@ -82,14 +82,14 @@ multidict==6.7.0
8282
mypy==1.17.0
8383
mypy-extensions==1.1.0
8484
# via mypy
85-
nodeenv==1.9.1
85+
nodeenv==1.10.0
8686
# via pyright
8787
nox==2025.11.12
8888
packaging==25.0
8989
# via dependency-groups
9090
# via nox
9191
# via pytest
92-
pathspec==0.12.1
92+
pathspec==1.0.3
9393
# via mypy
9494
platformdirs==4.4.0
9595
# via virtualenv
@@ -115,13 +115,13 @@ python-dateutil==2.9.0.post0
115115
# via time-machine
116116
respx==0.22.0
117117
rich==14.2.0
118-
ruff==0.14.7
118+
ruff==0.14.13
119119
six==1.17.0
120120
# via python-dateutil
121121
sniffio==1.3.1
122122
# via mixedbread
123123
time-machine==2.19.0
124-
tomli==2.3.0
124+
tomli==2.4.0
125125
# via dependency-groups
126126
# via mypy
127127
# via nox
@@ -141,7 +141,7 @@ typing-extensions==4.15.0
141141
# via virtualenv
142142
typing-inspection==0.4.2
143143
# via pydantic
144-
virtualenv==20.35.4
144+
virtualenv==20.36.1
145145
# via nox
146146
yarl==1.22.0
147147
# via aiohttp

requirements.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@
1212
-e file:.
1313
aiohappyeyeballs==2.6.1
1414
# via aiohttp
15-
aiohttp==3.13.2
15+
aiohttp==3.13.3
1616
# via httpx-aiohttp
1717
# via mixedbread
1818
aiosignal==1.4.0
1919
# via aiohttp
2020
annotated-types==0.7.0
2121
# via pydantic
22-
anyio==4.12.0
22+
anyio==4.12.1
2323
# via httpx
2424
# via mixedbread
2525
async-timeout==5.0.1
2626
# via aiohttp
2727
attrs==25.4.0
2828
# via aiohttp
29-
certifi==2025.11.12
29+
certifi==2026.1.4
3030
# via httpcore
3131
# via httpx
3232
distro==1.9.0
@@ -43,7 +43,7 @@ httpcore==1.0.9
4343
httpx==0.28.1
4444
# via httpx-aiohttp
4545
# via mixedbread
46-
httpx-aiohttp==0.1.9
46+
httpx-aiohttp==0.1.12
4747
# via mixedbread
4848
idna==3.11
4949
# via anyio

src/mixedbread/_base_client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
APIConnectionError,
8787
APIResponseValidationError,
8888
)
89+
from ._utils._json import openapi_dumps
8990

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

@@ -554,8 +555,10 @@ def _build_request(
554555
kwargs["content"] = options.content
555556
elif isinstance(json_data, bytes):
556557
kwargs["content"] = json_data
557-
else:
558-
kwargs["json"] = json_data if is_given(json_data) else None
558+
elif not files:
559+
# Don't set content when JSON is sent as multipart/form-data,
560+
# since httpx's content param overrides other body arguments
561+
kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
559562
kwargs["files"] = files
560563
else:
561564
headers.pop("Content-Type", None)

src/mixedbread/_client.py

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
from .types.embedding_create_response import EmbeddingCreateResponse
5454

5555
if TYPE_CHECKING:
56-
from .resources import chat, files, stores, parsing, api_keys, embeddings, extractions, data_sources, vector_stores
56+
from .resources import chat, files, stores, parsing, api_keys, embeddings, extractions, data_sources
5757
from .resources.chat import ChatResource, AsyncChatResource
5858
from .resources.files import FilesResource, AsyncFilesResource
5959
from .resources.api_keys import APIKeysResource, AsyncAPIKeysResource
@@ -62,7 +62,6 @@
6262
from .resources.parsing.parsing import ParsingResource, AsyncParsingResource
6363
from .resources.extractions.extractions import ExtractionsResource, AsyncExtractionsResource
6464
from .resources.data_sources.data_sources import DataSourcesResource, AsyncDataSourcesResource
65-
from .resources.vector_stores.vector_stores import VectorStoresResource, AsyncVectorStoresResource
6665

6766
__all__ = [
6867
"ENVIRONMENTS",
@@ -162,12 +161,6 @@ def __init__(
162161
_strict_response_validation=_strict_response_validation,
163162
)
164163

165-
@cached_property
166-
def vector_stores(self) -> VectorStoresResource:
167-
from .resources.vector_stores import VectorStoresResource
168-
169-
return VectorStoresResource(self)
170-
171164
@cached_property
172165
def stores(self) -> StoresResource:
173166
from .resources.stores import StoresResource
@@ -565,12 +558,6 @@ def __init__(
565558
_strict_response_validation=_strict_response_validation,
566559
)
567560

568-
@cached_property
569-
def vector_stores(self) -> AsyncVectorStoresResource:
570-
from .resources.vector_stores import AsyncVectorStoresResource
571-
572-
return AsyncVectorStoresResource(self)
573-
574561
@cached_property
575562
def stores(self) -> AsyncStoresResource:
576563
from .resources.stores import AsyncStoresResource
@@ -905,12 +892,6 @@ def __init__(self, client: Mixedbread) -> None:
905892
client.rerank,
906893
)
907894

908-
@cached_property
909-
def vector_stores(self) -> vector_stores.VectorStoresResourceWithRawResponse:
910-
from .resources.vector_stores import VectorStoresResourceWithRawResponse
911-
912-
return VectorStoresResourceWithRawResponse(self._client.vector_stores)
913-
914895
@cached_property
915896
def stores(self) -> stores.StoresResourceWithRawResponse:
916897
from .resources.stores import StoresResourceWithRawResponse
@@ -976,12 +957,6 @@ def __init__(self, client: AsyncMixedbread) -> None:
976957
client.rerank,
977958
)
978959

979-
@cached_property
980-
def vector_stores(self) -> vector_stores.AsyncVectorStoresResourceWithRawResponse:
981-
from .resources.vector_stores import AsyncVectorStoresResourceWithRawResponse
982-
983-
return AsyncVectorStoresResourceWithRawResponse(self._client.vector_stores)
984-
985960
@cached_property
986961
def stores(self) -> stores.AsyncStoresResourceWithRawResponse:
987962
from .resources.stores import AsyncStoresResourceWithRawResponse
@@ -1047,12 +1022,6 @@ def __init__(self, client: Mixedbread) -> None:
10471022
client.rerank,
10481023
)
10491024

1050-
@cached_property
1051-
def vector_stores(self) -> vector_stores.VectorStoresResourceWithStreamingResponse:
1052-
from .resources.vector_stores import VectorStoresResourceWithStreamingResponse
1053-
1054-
return VectorStoresResourceWithStreamingResponse(self._client.vector_stores)
1055-
10561025
@cached_property
10571026
def stores(self) -> stores.StoresResourceWithStreamingResponse:
10581027
from .resources.stores import StoresResourceWithStreamingResponse
@@ -1118,12 +1087,6 @@ def __init__(self, client: AsyncMixedbread) -> None:
11181087
client.rerank,
11191088
)
11201089

1121-
@cached_property
1122-
def vector_stores(self) -> vector_stores.AsyncVectorStoresResourceWithStreamingResponse:
1123-
from .resources.vector_stores import AsyncVectorStoresResourceWithStreamingResponse
1124-
1125-
return AsyncVectorStoresResourceWithStreamingResponse(self._client.vector_stores)
1126-
11271090
@cached_property
11281091
def stores(self) -> stores.AsyncStoresResourceWithStreamingResponse:
11291092
from .resources.stores import AsyncStoresResourceWithStreamingResponse

0 commit comments

Comments
 (0)