meilisearch-python-sdk 4.5.0__tar.gz → 4.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of meilisearch-python-sdk might be problematic. Click here for more details.
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/workflows/docs_publish.yml +1 -1
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/workflows/nightly_testing.yml +1 -1
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/workflows/pypi_publish.yml +1 -1
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/workflows/testing.yml +10 -10
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.pre-commit-config.yaml +3 -3
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/PKG-INFO +1 -1
- meilisearch_python_sdk-4.7.0/meilisearch_python_sdk/_version.py +1 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/index.py +23 -3
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/settings.py +19 -2
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/pyproject.toml +9 -8
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/conftest.py +2 -10
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_async_index.py +1 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_index.py +1 -0
- meilisearch_python_sdk-4.7.0/uv.lock +1592 -0
- meilisearch_python_sdk-4.5.0/meilisearch_python_sdk/_version.py +0 -1
- meilisearch_python_sdk-4.5.0/uv.lock +0 -1556
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/FUNDING.yml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/release-draft-template.yaml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/renovate.json5 +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.github/workflows/release-drafter.yml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/.gitignore +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/CONTRIBUTING.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/LICENSE +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/README.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/assets/add_in_batches.png +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/assets/searches.png +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/benchmark/run_benchmark.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/codecov.yml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/datasets/small_movies.json +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docker-compose.https.yml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docker-compose.yml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/.nojekyll +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/CNAME +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/async_client_api.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/async_index_api.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/client_api.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/css/custom.css +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/decorators_api.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/index.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/index_api.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/js/umami.js +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/json_handler.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/plugins.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/docs/pydantic.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/.gitignore +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/README.md +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/__init__.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/async_add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/async_add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/async_documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/async_search_tracker.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/async_update_settings.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/fastapi_example.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/orjson_example.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/pyproject.toml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/requirements.txt +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/search_tracker.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/tests/__init__.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/tests/conftest.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/tests/test_async_examples.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/tests/test_examples.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/ujson_example.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/examples/update_settings.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/justfile +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/__init__.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/_batch.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/_client.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/_http_requests.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/_task.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/_utils.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/decorators.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/errors.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/json_handler.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/__init__.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/batch.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/client.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/documents.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/health.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/index.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/search.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/task.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/models/version.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/plugins.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/py.typed +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/types.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/mkdocs.yaml +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/__init__.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_async_client.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_async_documents.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_async_index_plugins.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_async_search.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_client.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_decorators.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_documents.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_errors.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_index_plugins.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_search.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_utils.py +0 -0
- {meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/tests/test_version.py +0 -0
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
- name: install Just
|
|
16
16
|
uses: taiki-e/install-action@just
|
|
17
17
|
- name: Install uv
|
|
18
|
-
uses: astral-sh/setup-uv@
|
|
18
|
+
uses: astral-sh/setup-uv@v6
|
|
19
19
|
with:
|
|
20
20
|
enable-cache: true
|
|
21
21
|
- name: Set up Python
|
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
- name: install Just
|
|
39
39
|
uses: taiki-e/install-action@just
|
|
40
40
|
- name: Install uv
|
|
41
|
-
uses: astral-sh/setup-uv@
|
|
41
|
+
uses: astral-sh/setup-uv@v6
|
|
42
42
|
with:
|
|
43
43
|
enable-cache: true
|
|
44
44
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -50,7 +50,7 @@ jobs:
|
|
|
50
50
|
- name: Test with pytest
|
|
51
51
|
run: just test-parallel-ci
|
|
52
52
|
- name: Upload coverage
|
|
53
|
-
uses: codecov/codecov-action@v5.4.
|
|
53
|
+
uses: codecov/codecov-action@v5.4.3
|
|
54
54
|
with:
|
|
55
55
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
56
56
|
fail_ci_if_error: true
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
- name: install Just
|
|
67
67
|
uses: taiki-e/install-action@just
|
|
68
68
|
- name: Install uv
|
|
69
|
-
uses: astral-sh/setup-uv@
|
|
69
|
+
uses: astral-sh/setup-uv@v6
|
|
70
70
|
with:
|
|
71
71
|
enable-cache: true
|
|
72
72
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -90,7 +90,7 @@ jobs:
|
|
|
90
90
|
- name: Test with pytest
|
|
91
91
|
run: just test-parallel-ci-http2
|
|
92
92
|
- name: Upload coverage
|
|
93
|
-
uses: codecov/codecov-action@v5.4.
|
|
93
|
+
uses: codecov/codecov-action@v5.4.3
|
|
94
94
|
with:
|
|
95
95
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
96
96
|
fail_ci_if_error: true
|
|
@@ -106,7 +106,7 @@ jobs:
|
|
|
106
106
|
- name: install Just
|
|
107
107
|
uses: taiki-e/install-action@just
|
|
108
108
|
- name: Install uv
|
|
109
|
-
uses: astral-sh/setup-uv@
|
|
109
|
+
uses: astral-sh/setup-uv@v6
|
|
110
110
|
with:
|
|
111
111
|
enable-cache: true
|
|
112
112
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -118,7 +118,7 @@ jobs:
|
|
|
118
118
|
- name: Test with pytest
|
|
119
119
|
run: just test-no-parallel-ci
|
|
120
120
|
- name: Upload coverage
|
|
121
|
-
uses: codecov/codecov-action@v5.4.
|
|
121
|
+
uses: codecov/codecov-action@v5.4.3
|
|
122
122
|
with:
|
|
123
123
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
124
124
|
fail_ci_if_error: true
|
|
@@ -134,7 +134,7 @@ jobs:
|
|
|
134
134
|
- name: install Just
|
|
135
135
|
uses: taiki-e/install-action@just
|
|
136
136
|
- name: Install uv
|
|
137
|
-
uses: astral-sh/setup-uv@
|
|
137
|
+
uses: astral-sh/setup-uv@v6
|
|
138
138
|
with:
|
|
139
139
|
enable-cache: true
|
|
140
140
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -158,7 +158,7 @@ jobs:
|
|
|
158
158
|
- name: Test with pytest
|
|
159
159
|
run: just test-no-parallel-ci-http2
|
|
160
160
|
- name: Upload coverage
|
|
161
|
-
uses: codecov/codecov-action@v5.4.
|
|
161
|
+
uses: codecov/codecov-action@v5.4.3
|
|
162
162
|
with:
|
|
163
163
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
164
164
|
fail_ci_if_error: true
|
|
@@ -187,7 +187,7 @@ jobs:
|
|
|
187
187
|
- name: install Just
|
|
188
188
|
uses: taiki-e/install-action@just
|
|
189
189
|
- name: Install uv
|
|
190
|
-
uses: astral-sh/setup-uv@
|
|
190
|
+
uses: astral-sh/setup-uv@v6
|
|
191
191
|
with:
|
|
192
192
|
enable-cache: true
|
|
193
193
|
- name: Set up Python
|
|
@@ -9,13 +9,13 @@ repos:
|
|
|
9
9
|
- id: end-of-file-fixer
|
|
10
10
|
- id: trailing-whitespace
|
|
11
11
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
12
|
-
rev: v1.
|
|
12
|
+
rev: v1.16.0
|
|
13
13
|
hooks:
|
|
14
14
|
- id: mypy
|
|
15
15
|
additional_dependencies: [pydantic, orjson, types-aiofiles, types-ujson]
|
|
16
16
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
17
|
-
rev: v0.11.
|
|
17
|
+
rev: v0.11.12
|
|
18
18
|
hooks:
|
|
19
|
-
- id: ruff
|
|
19
|
+
- id: ruff-check
|
|
20
20
|
args: [--fix, --exit-non-zero-on-fix]
|
|
21
21
|
- id: ruff-format
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meilisearch-python-sdk
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.7.0
|
|
4
4
|
Summary: A Python client providing both async and sync support for the Meilisearch API
|
|
5
5
|
Project-URL: repository, https://github.com/sanders41/meilisearch-python-sdk
|
|
6
6
|
Project-URL: homepage, https://github.com/sanders41/meilisearch-python-sdk
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "4.7.0"
|
{meilisearch_python_sdk-4.5.0 → meilisearch_python_sdk-4.7.0}/meilisearch_python_sdk/index.py
RENAMED
|
@@ -27,6 +27,7 @@ from meilisearch_python_sdk.models.search import (
|
|
|
27
27
|
SimilarSearchResults,
|
|
28
28
|
)
|
|
29
29
|
from meilisearch_python_sdk.models.settings import (
|
|
30
|
+
CompositeEmbedder,
|
|
30
31
|
Embedders,
|
|
31
32
|
Faceting,
|
|
32
33
|
FilterableAttributeFeatures,
|
|
@@ -8459,7 +8460,12 @@ def _embedder_json_to_embedders_model( # pragma: no cover
|
|
|
8459
8460
|
|
|
8460
8461
|
embedders: dict[
|
|
8461
8462
|
str,
|
|
8462
|
-
OpenAiEmbedder
|
|
8463
|
+
OpenAiEmbedder
|
|
8464
|
+
| HuggingFaceEmbedder
|
|
8465
|
+
| OllamaEmbedder
|
|
8466
|
+
| RestEmbedder
|
|
8467
|
+
| UserProvidedEmbedder
|
|
8468
|
+
| CompositeEmbedder,
|
|
8463
8469
|
] = {}
|
|
8464
8470
|
for k, v in embedder_json.items():
|
|
8465
8471
|
if v.get("source") == "openAi":
|
|
@@ -8470,6 +8476,8 @@ def _embedder_json_to_embedders_model( # pragma: no cover
|
|
|
8470
8476
|
embedders[k] = OllamaEmbedder(**v)
|
|
8471
8477
|
elif v.get("source") == "rest":
|
|
8472
8478
|
embedders[k] = RestEmbedder(**v)
|
|
8479
|
+
elif v.get("source") == "composit":
|
|
8480
|
+
embedders[k] = CompositeEmbedder(**v)
|
|
8473
8481
|
else:
|
|
8474
8482
|
embedders[k] = UserProvidedEmbedder(**v)
|
|
8475
8483
|
|
|
@@ -8482,7 +8490,12 @@ def _embedder_json_to_settings_model( # pragma: no cover
|
|
|
8482
8490
|
) -> (
|
|
8483
8491
|
dict[
|
|
8484
8492
|
str,
|
|
8485
|
-
OpenAiEmbedder
|
|
8493
|
+
OpenAiEmbedder
|
|
8494
|
+
| HuggingFaceEmbedder
|
|
8495
|
+
| OllamaEmbedder
|
|
8496
|
+
| RestEmbedder
|
|
8497
|
+
| UserProvidedEmbedder
|
|
8498
|
+
| CompositeEmbedder,
|
|
8486
8499
|
]
|
|
8487
8500
|
| None
|
|
8488
8501
|
):
|
|
@@ -8491,7 +8504,12 @@ def _embedder_json_to_settings_model( # pragma: no cover
|
|
|
8491
8504
|
|
|
8492
8505
|
embedders: dict[
|
|
8493
8506
|
str,
|
|
8494
|
-
OpenAiEmbedder
|
|
8507
|
+
OpenAiEmbedder
|
|
8508
|
+
| HuggingFaceEmbedder
|
|
8509
|
+
| OllamaEmbedder
|
|
8510
|
+
| RestEmbedder
|
|
8511
|
+
| UserProvidedEmbedder
|
|
8512
|
+
| CompositeEmbedder,
|
|
8495
8513
|
] = {}
|
|
8496
8514
|
for k, v in embedder_json.items():
|
|
8497
8515
|
if v.get("source") == "openAi":
|
|
@@ -8502,6 +8520,8 @@ def _embedder_json_to_settings_model( # pragma: no cover
|
|
|
8502
8520
|
embedders[k] = OllamaEmbedder(**v)
|
|
8503
8521
|
elif v.get("source") == "rest":
|
|
8504
8522
|
embedders[k] = RestEmbedder(**v)
|
|
8523
|
+
elif v.get("source") == "composit":
|
|
8524
|
+
embedders[k] = CompositeEmbedder(**v)
|
|
8505
8525
|
else:
|
|
8506
8526
|
embedders[k] = UserProvidedEmbedder(**v)
|
|
8507
8527
|
|
|
@@ -18,6 +18,7 @@ class TypoTolerance(CamelBase):
|
|
|
18
18
|
enabled: bool = True
|
|
19
19
|
disable_on_attributes: list[str] | None = None
|
|
20
20
|
disable_on_words: list[str] | None = None
|
|
21
|
+
disable_on_numbers: bool | None = None
|
|
21
22
|
min_word_size_for_typos: MinWordSizeForTypos | None = None
|
|
22
23
|
|
|
23
24
|
|
|
@@ -106,10 +107,25 @@ class UserProvidedEmbedder(CamelBase):
|
|
|
106
107
|
binary_quantized: bool | None = None
|
|
107
108
|
|
|
108
109
|
|
|
110
|
+
class CompositeEmbedder(CamelBase):
|
|
111
|
+
source: str = "composite"
|
|
112
|
+
search_embedder: (
|
|
113
|
+
OpenAiEmbedder | HuggingFaceEmbedder | OllamaEmbedder | RestEmbedder | UserProvidedEmbedder
|
|
114
|
+
)
|
|
115
|
+
indexing_embedder: (
|
|
116
|
+
OpenAiEmbedder | HuggingFaceEmbedder | OllamaEmbedder | RestEmbedder | UserProvidedEmbedder
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
|
|
109
120
|
class Embedders(CamelBase):
|
|
110
121
|
embedders: dict[
|
|
111
122
|
str,
|
|
112
|
-
OpenAiEmbedder
|
|
123
|
+
OpenAiEmbedder
|
|
124
|
+
| HuggingFaceEmbedder
|
|
125
|
+
| OllamaEmbedder
|
|
126
|
+
| RestEmbedder
|
|
127
|
+
| UserProvidedEmbedder
|
|
128
|
+
| CompositeEmbedder,
|
|
113
129
|
]
|
|
114
130
|
|
|
115
131
|
|
|
@@ -162,7 +178,8 @@ class MeilisearchSettings(CamelBase):
|
|
|
162
178
|
| HuggingFaceEmbedder
|
|
163
179
|
| OllamaEmbedder
|
|
164
180
|
| RestEmbedder
|
|
165
|
-
| UserProvidedEmbedder
|
|
181
|
+
| UserProvidedEmbedder
|
|
182
|
+
| CompositeEmbedder,
|
|
166
183
|
]
|
|
167
184
|
| None
|
|
168
185
|
) = None # Optional[Embedders] = None
|
|
@@ -41,17 +41,17 @@ all = ["orjson", "ujson"]
|
|
|
41
41
|
[dependency-groups]
|
|
42
42
|
dev = [
|
|
43
43
|
"mkdocs==1.6.1",
|
|
44
|
-
"mkdocs-material==9.6.
|
|
44
|
+
"mkdocs-material==9.6.14",
|
|
45
45
|
"mkdocstrings[python]==0.29.1",
|
|
46
|
-
"mypy[faster-cache]==1.
|
|
46
|
+
"mypy[faster-cache]==1.16.0",
|
|
47
47
|
"pre-commit==4.2.0",
|
|
48
|
-
"pytest==8.
|
|
48
|
+
"pytest==8.4.0",
|
|
49
49
|
"pytest-cov==6.1.1",
|
|
50
|
-
"pytest-asyncio==0.
|
|
51
|
-
"pytest-xdist==3.
|
|
52
|
-
"ruff==0.11.
|
|
53
|
-
"types-aiofiles==24.1.0.
|
|
54
|
-
"typing-extensions==4.
|
|
50
|
+
"pytest-asyncio==1.0.0",
|
|
51
|
+
"pytest-xdist==3.7.0",
|
|
52
|
+
"ruff==0.11.13",
|
|
53
|
+
"types-aiofiles==24.1.0.20250606",
|
|
54
|
+
"typing-extensions==4.14.0",
|
|
55
55
|
"types-ujson==5.10.0.20250326",
|
|
56
56
|
"meilisearch==0.34.1",
|
|
57
57
|
"rich==14.0.0",
|
|
@@ -70,6 +70,7 @@ minversion = "6.0"
|
|
|
70
70
|
addopts = "--cov=meilisearch_python_sdk --cov-report term-missing --no-cov-on-fail --ignore examples"
|
|
71
71
|
asyncio_mode = "auto"
|
|
72
72
|
asyncio_default_fixture_loop_scope = "session"
|
|
73
|
+
asyncio_default_test_loop_scope = "session"
|
|
73
74
|
markers = ["no_parallel"]
|
|
74
75
|
|
|
75
76
|
[tool.mypy]
|
|
@@ -8,7 +8,6 @@ from pathlib import Path
|
|
|
8
8
|
from uuid import uuid4
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
|
-
from pytest_asyncio import is_async_test
|
|
12
11
|
|
|
13
12
|
try:
|
|
14
13
|
import truststore as truststore
|
|
@@ -37,13 +36,6 @@ ROOT_PATH = Path().absolute()
|
|
|
37
36
|
SMALL_MOVIES_PATH = ROOT_PATH / "datasets" / "small_movies.json"
|
|
38
37
|
|
|
39
38
|
|
|
40
|
-
def pytest_collection_modifyitems(items):
|
|
41
|
-
pytest_asyncio_tests = (item for item in items if is_async_test(item))
|
|
42
|
-
session_scope_marker = pytest.mark.asyncio(loop_scope="session")
|
|
43
|
-
for async_test in pytest_asyncio_tests:
|
|
44
|
-
async_test.add_marker(session_scope_marker, append=False)
|
|
45
|
-
|
|
46
|
-
|
|
47
39
|
def pytest_addoption(parser):
|
|
48
40
|
parser.addoption("--http2", action="store_true")
|
|
49
41
|
|
|
@@ -301,7 +293,7 @@ async def enable_edit_by_function(base_url, ssl_verify):
|
|
|
301
293
|
base_url=base_url, headers={"Authorization": f"Bearer {MASTER_KEY}"}, verify=ssl_verify
|
|
302
294
|
) as client:
|
|
303
295
|
await client.patch("/experimental-features", json={"editDocumentsByFunction": True})
|
|
304
|
-
|
|
296
|
+
yield
|
|
305
297
|
|
|
306
298
|
|
|
307
299
|
@pytest.fixture(scope="session", autouse=True)
|
|
@@ -310,7 +302,7 @@ async def enable_network(base_url, ssl_verify):
|
|
|
310
302
|
base_url=base_url, headers={"Authorization": f"Bearer {MASTER_KEY}"}, verify=ssl_verify
|
|
311
303
|
) as client:
|
|
312
304
|
await client.patch("/experimental-features", json={"network": True})
|
|
313
|
-
|
|
305
|
+
yield
|
|
314
306
|
|
|
315
307
|
|
|
316
308
|
@pytest.fixture
|
|
@@ -664,6 +664,7 @@ async def test_update_typo_tolerance(compress, async_empty_index):
|
|
|
664
664
|
enabled=True,
|
|
665
665
|
disable_on_attributes=["title"],
|
|
666
666
|
disable_on_words=["spiderman"],
|
|
667
|
+
disable_on_numbers=True,
|
|
667
668
|
min_word_size_for_typos=MinWordSizeForTypos(one_typo=10, two_typos=20),
|
|
668
669
|
)
|
|
669
670
|
index = await async_empty_index()
|
|
@@ -651,6 +651,7 @@ def test_update_typo_tolerance(compress, empty_index):
|
|
|
651
651
|
enabled=True,
|
|
652
652
|
disable_on_attributes=["title"],
|
|
653
653
|
disable_on_words=["spiderman"],
|
|
654
|
+
disable_on_numbers=True,
|
|
654
655
|
min_word_size_for_typos=MinWordSizeForTypos(one_typo=10, two_typos=20),
|
|
655
656
|
)
|
|
656
657
|
index = empty_index()
|