meilisearch-python-sdk 7.5.0__tar.gz → 7.5.2__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.
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/docs_publish.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/nightly_testing.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/prek_update.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/pypi_publish.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/testing.yml +6 -6
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/PKG-INFO +2 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docker-compose.https.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docker-compose.yml +1 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/async_client_api.md +2 -2
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/client_api.md +2 -2
- meilisearch_python_sdk-7.5.2/docs/errors_api.md +9 -0
- meilisearch_python_sdk-7.5.2/docs/index.md +217 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/json_handler.md +4 -0
- meilisearch_python_sdk-7.5.2/docs/models_client.md +22 -0
- meilisearch_python_sdk-7.5.2/docs/models_index.md +13 -0
- meilisearch_python_sdk-7.5.2/docs/models_search.md +10 -0
- meilisearch_python_sdk-7.5.2/docs/models_settings.md +10 -0
- meilisearch_python_sdk-7.5.2/docs/models_task.md +14 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/plugins.md +4 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_batch.py +3 -3
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_async_client.py +46 -4
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_client.py +46 -4
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_task.py +131 -63
- meilisearch_python_sdk-7.5.2/meilisearch_python_sdk/_version.py +1 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/mkdocs.yaml +20 -1
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/prek.toml +2 -2
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/pyproject.toml +4 -3
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_client.py +84 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_client.py +80 -0
- meilisearch_python_sdk-7.5.2/uv.lock +1261 -0
- meilisearch_python_sdk-7.5.0/docs/index.md +0 -30
- meilisearch_python_sdk-7.5.0/meilisearch_python_sdk/_version.py +0 -1
- meilisearch_python_sdk-7.5.0/uv.lock +0 -1281
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/FUNDING.yml +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/release-draft-template.yaml +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/renovate.json5 +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/release-drafter.yml +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.gitignore +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/CONTRIBUTING.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/LICENSE +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/README.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/assets/add_in_batches.png +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/assets/searches.png +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/codecov.yml +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/datasets/small_movies.json +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/.nojekyll +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/CNAME +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/async_index_api.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/css/custom.css +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/decorators_api.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/index_api.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/js/umami.js +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/overrides/partials/footer.html +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/pydantic.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/.gitignore +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/README.md +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_search_tracker.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_update_settings.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/fastapi_example.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/orjson_example.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/pyproject.toml +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/requirements.txt +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/search_tracker.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/conftest.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/test_async_examples.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/test_examples.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/update_settings.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/justfile +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_base_client.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_common.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_http_requests.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_utils.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/decorators.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/errors.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/_common.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/async_index.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/index.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/json_handler.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/batch.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/client.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/documents.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/health.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/index.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/search.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/settings.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/task.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/version.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/webhook.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/plugins.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/py.typed +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/types.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/__init__.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/conftest.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_documents.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_index.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_index_plugins.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_search.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_decorators.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_documents.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_errors.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_http_requests.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_index.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_index_plugins.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_json_handler.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_search.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_settings_models.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_utils.py +0 -0
- {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/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@v10.0.1
|
|
19
19
|
with:
|
|
20
20
|
enable-cache: true
|
|
21
21
|
- name: Set up Python
|
|
@@ -45,7 +45,7 @@ jobs:
|
|
|
45
45
|
- name: install Just
|
|
46
46
|
uses: taiki-e/install-action@just
|
|
47
47
|
- name: Install uv
|
|
48
|
-
uses: astral-sh/setup-uv@
|
|
48
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
49
49
|
with:
|
|
50
50
|
enable-cache: true
|
|
51
51
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -74,7 +74,7 @@ jobs:
|
|
|
74
74
|
- name: install Just
|
|
75
75
|
uses: taiki-e/install-action@just
|
|
76
76
|
- name: Install uv
|
|
77
|
-
uses: astral-sh/setup-uv@
|
|
77
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
78
78
|
with:
|
|
79
79
|
enable-cache: true
|
|
80
80
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -114,7 +114,7 @@ jobs:
|
|
|
114
114
|
- name: install Just
|
|
115
115
|
uses: taiki-e/install-action@just
|
|
116
116
|
- name: Install uv
|
|
117
|
-
uses: astral-sh/setup-uv@
|
|
117
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
118
118
|
with:
|
|
119
119
|
enable-cache: true
|
|
120
120
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -143,7 +143,7 @@ jobs:
|
|
|
143
143
|
- name: install Just
|
|
144
144
|
uses: taiki-e/install-action@just
|
|
145
145
|
- name: Install uv
|
|
146
|
-
uses: astral-sh/setup-uv@
|
|
146
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
147
147
|
with:
|
|
148
148
|
enable-cache: true
|
|
149
149
|
- name: Set up Python ${{ matrix.python-version }}
|
|
@@ -197,7 +197,7 @@ jobs:
|
|
|
197
197
|
- name: install Just
|
|
198
198
|
uses: taiki-e/install-action@just
|
|
199
199
|
- name: Install uv
|
|
200
|
-
uses: astral-sh/setup-uv@
|
|
200
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
201
201
|
with:
|
|
202
202
|
enable-cache: true
|
|
203
203
|
- name: Set up Python
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: meilisearch-python-sdk
|
|
3
|
-
Version: 7.5.
|
|
3
|
+
Version: 7.5.2
|
|
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
|
|
7
7
|
Project-URL: documentation, https://meilisearch-python-sdk.paulsanders.dev
|
|
8
|
+
Project-URL: funding, https://github.com/sponsors/sanders41
|
|
8
9
|
Author-email: Paul Sanders <paul@paulsanders.dev>
|
|
9
10
|
License: MIT License
|
|
10
11
|
|
|
@@ -6,7 +6,7 @@ This client runs in a context manager which ensures that everything is cleaned u
|
|
|
6
6
|
the client is done. To create a client:
|
|
7
7
|
|
|
8
8
|
```py
|
|
9
|
-
from
|
|
9
|
+
from meilisearch_python_sdk import AsyncClient
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
async with AsyncClient("http://localhost:7700", "masterKey") as client:
|
|
@@ -37,7 +37,7 @@ It is also possible to call the client without using a context manager, but in d
|
|
|
37
37
|
need to make sure to do the cleanup yourself:
|
|
38
38
|
|
|
39
39
|
```py
|
|
40
|
-
from
|
|
40
|
+
from meilisearch_python_sdk import AsyncClient
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
try:
|
|
@@ -6,7 +6,7 @@ This client runs in a context manager which ensures that everything is cleaned u
|
|
|
6
6
|
the client is done. To create a client:
|
|
7
7
|
|
|
8
8
|
```py
|
|
9
|
-
from
|
|
9
|
+
from meilisearch_python_sdk import Client
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
with Client("http://localhost:7700", "masterKey") as client:
|
|
@@ -37,7 +37,7 @@ It is also possible to call the client without using a context manager, but in d
|
|
|
37
37
|
need to make sure to do the cleanup yourself:
|
|
38
38
|
|
|
39
39
|
```py
|
|
40
|
-
from
|
|
40
|
+
from meilisearch_python_sdk import Client
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
try:
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## Errors
|
|
2
|
+
|
|
3
|
+
These are the exceptions raised by the SDK. `MeilisearchApiError` is raised when Meilisearch
|
|
4
|
+
returns an error response, and `MeilisearchCommunicationError` is raised when Meilisearch cannot
|
|
5
|
+
be reached at all. The token errors are raised when generating or validating tenant tokens.
|
|
6
|
+
|
|
7
|
+
## Errors API
|
|
8
|
+
|
|
9
|
+
::: meilisearch_python_sdk.errors
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Meilisearch Python SDK
|
|
2
|
+
|
|
3
|
+
Meilisearch Python SDK provides both an async and sync client for the
|
|
4
|
+
[Meilisearch](https://github.com/meilisearch/meilisearch) API.
|
|
5
|
+
|
|
6
|
+
The focus of this documentation is on the Meilisearch Python SDK API. More information of
|
|
7
|
+
Meilisearch itself and how to use it can be found at [https://www.meilisearch.com/docs](https://www.meilisearch.com/docs).
|
|
8
|
+
|
|
9
|
+
## Which client to chose
|
|
10
|
+
|
|
11
|
+
If the code base you are working with uses asyncio, for example if you are using
|
|
12
|
+
[FastAPI](https://fastapi.tiangolo.com/), chose the `AsyncClint` otherwise chose the `Client`.
|
|
13
|
+
The functionality of the two clients is the same, the difference being the `AsyncClient` provides
|
|
14
|
+
async methods and uses the `AsyncIndex`, which also provides async methods, while the `Client`
|
|
15
|
+
provides blocking methods and uses the `Index`, which also provides blocking methods.
|
|
16
|
+
|
|
17
|
+
## Instillation
|
|
18
|
+
|
|
19
|
+
Using a virtual environment is recommended for installing this package. Once the virtual
|
|
20
|
+
environment is created and activated, install the package with:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
pip install meilisearch-python-sdk
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Installing with the orjson extra will make JSON serilization/deserilization faster.
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
pip install meilisearch-python-sdk[orjson]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Run Meilisearch
|
|
33
|
+
|
|
34
|
+
This package talks to a running Meilisearch server, so you will need one to connect to. There are
|
|
35
|
+
several ways to
|
|
36
|
+
[run Meilisearch](https://www.meilisearch.com/docs/learn/getting_started/installation), pick the
|
|
37
|
+
one that works best for your use case and then start the server. As an example, to use Docker:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
docker pull getmeili/meilisearch:latest
|
|
41
|
+
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quickstart
|
|
45
|
+
|
|
46
|
+
The examples below add two documents to a `books` index and then search it. Note that
|
|
47
|
+
`client.index("books")` creates an index instance but does not make a network call, so with the
|
|
48
|
+
`AsyncClient` it does not need to be awaited.
|
|
49
|
+
|
|
50
|
+
### AsyncClient
|
|
51
|
+
|
|
52
|
+
```py
|
|
53
|
+
import asyncio
|
|
54
|
+
|
|
55
|
+
from meilisearch_python_sdk import AsyncClient
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
async def main() -> None:
|
|
59
|
+
async with AsyncClient("http://127.0.0.1:7700", "masterKey") as client:
|
|
60
|
+
index = client.index("books")
|
|
61
|
+
|
|
62
|
+
documents = [
|
|
63
|
+
{"id": 1, "title": "Ready Player One"},
|
|
64
|
+
{"id": 42, "title": "The Hitchhiker's Guide to the Galaxy"},
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
task = await index.add_documents(documents)
|
|
68
|
+
await client.wait_for_task(task.task_uid)
|
|
69
|
+
|
|
70
|
+
result = await index.search("ready player")
|
|
71
|
+
print(result.hits)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
asyncio.run(main())
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Client
|
|
78
|
+
|
|
79
|
+
```py
|
|
80
|
+
from meilisearch_python_sdk import Client
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
with Client("http://127.0.0.1:7700", "masterKey") as client:
|
|
84
|
+
index = client.index("books")
|
|
85
|
+
|
|
86
|
+
documents = [
|
|
87
|
+
{"id": 1, "title": "Ready Player One"},
|
|
88
|
+
{"id": 42, "title": "The Hitchhiker's Guide to the Galaxy"},
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
task = index.add_documents(documents)
|
|
92
|
+
client.wait_for_task(task.task_uid)
|
|
93
|
+
|
|
94
|
+
result = index.search("ready player")
|
|
95
|
+
print(result.hits)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Waiting on tasks
|
|
99
|
+
|
|
100
|
+
Meilisearch processes writes asynchronously, so methods that modify data return a
|
|
101
|
+
[`TaskInfo`](models_task.md) instead of the result of the write. The `task_uid` on it can be used
|
|
102
|
+
to wait for the write to finish, or to check on its status later.
|
|
103
|
+
|
|
104
|
+
```py
|
|
105
|
+
task = index.add_documents([{"id": 1, "title": "Ready Player One"}])
|
|
106
|
+
result = client.wait_for_task(task.task_uid)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If you would rather check the status yourself instead of blocking, use `get_task`.
|
|
110
|
+
|
|
111
|
+
```py
|
|
112
|
+
task = index.add_documents([{"id": 1, "title": "Ready Player One"}])
|
|
113
|
+
status = client.get_task(task.task_uid)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The `AsyncClient` provides the same methods as awaitables.
|
|
117
|
+
|
|
118
|
+
## Search results
|
|
119
|
+
|
|
120
|
+
Searching returns a [`SearchResults`](models_search.md) object. The matching documents are in
|
|
121
|
+
`hits`, and the remaining fields describe the search that was run.
|
|
122
|
+
|
|
123
|
+
```py
|
|
124
|
+
SearchResults(
|
|
125
|
+
hits=[
|
|
126
|
+
{
|
|
127
|
+
"id": 1,
|
|
128
|
+
"title": "Ready Player One",
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
offset=0,
|
|
132
|
+
limit=20,
|
|
133
|
+
estimated_total_hits=1,
|
|
134
|
+
processing_time_ms=1,
|
|
135
|
+
query="ready player",
|
|
136
|
+
facet_distribution=None,
|
|
137
|
+
facet_stats=None,
|
|
138
|
+
total_pages=None,
|
|
139
|
+
total_hits=None,
|
|
140
|
+
page=None,
|
|
141
|
+
hits_per_page=None,
|
|
142
|
+
semantic_hit_count=None,
|
|
143
|
+
query_vector=None,
|
|
144
|
+
performance_details=None,
|
|
145
|
+
)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Custom search
|
|
149
|
+
|
|
150
|
+
`search` accepts the Meilisearch
|
|
151
|
+
[search parameters](https://www.meilisearch.com/docs/reference/api/search/search-with-post) as
|
|
152
|
+
keyword arguments. For example, to highlight the matching terms in the title and only return books
|
|
153
|
+
with an `id` above 10:
|
|
154
|
+
|
|
155
|
+
```py
|
|
156
|
+
index.search(
|
|
157
|
+
"guide",
|
|
158
|
+
attributes_to_highlight=["title"],
|
|
159
|
+
filter="id > 10",
|
|
160
|
+
)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The highlighted values are added to each hit in a `_formatted` key.
|
|
164
|
+
|
|
165
|
+
```py
|
|
166
|
+
SearchResults(
|
|
167
|
+
hits=[
|
|
168
|
+
{
|
|
169
|
+
"id": 42,
|
|
170
|
+
"title": "The Hitchhiker's Guide to the Galaxy",
|
|
171
|
+
"_formatted": {
|
|
172
|
+
"id": "42",
|
|
173
|
+
"title": "The Hitchhiker's <em>Guide</em> to the Galaxy",
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
offset=0,
|
|
178
|
+
limit=20,
|
|
179
|
+
estimated_total_hits=1,
|
|
180
|
+
processing_time_ms=5,
|
|
181
|
+
query="guide",
|
|
182
|
+
facet_distribution=None,
|
|
183
|
+
facet_stats=None,
|
|
184
|
+
total_pages=None,
|
|
185
|
+
total_hits=None,
|
|
186
|
+
page=None,
|
|
187
|
+
hits_per_page=None,
|
|
188
|
+
semantic_hit_count=None,
|
|
189
|
+
query_vector=None,
|
|
190
|
+
performance_details=None,
|
|
191
|
+
)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Note that filtering only works on attributes that have been added to the index's filterable
|
|
195
|
+
attributes first, otherwise Meilisearch returns an error.
|
|
196
|
+
|
|
197
|
+
```py
|
|
198
|
+
task = index.update_filterable_attributes(["id"])
|
|
199
|
+
client.wait_for_task(task.task_uid)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
See the [settings models](models_settings.md) for the rest of the settings that can be updated.
|
|
203
|
+
|
|
204
|
+
## Where to go next
|
|
205
|
+
|
|
206
|
+
- [AsyncClient](async_client_api.md) and [Client](client_api.md) for the server level methods,
|
|
207
|
+
such as managing indexes, API keys, and tasks.
|
|
208
|
+
- [AsyncIndex](async_index_api.md) and [Index](index_api.md) for the methods that work with
|
|
209
|
+
documents, searching, and index settings.
|
|
210
|
+
- [Search models](models_search.md), [settings models](models_settings.md),
|
|
211
|
+
[index models](models_index.md), [task models](models_task.md), and
|
|
212
|
+
[client models](models_client.md) for the objects the methods accept and return.
|
|
213
|
+
- [Errors](errors_api.md) for the exceptions the SDK raises.
|
|
214
|
+
- [Plugins](plugins.md) for extending the behavior of the index methods.
|
|
215
|
+
- [JSON Handler](json_handler.md) for controlling JSON serialization, including using orjson.
|
|
216
|
+
- [Pydantic](pydantic.md) for deserializing your documents into your own Pydantic models.
|
|
217
|
+
- [Decorators](decorators_api.md) for the helpers provided for working with Meilisearch.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## Client Models
|
|
2
|
+
|
|
3
|
+
These are the models returned by, and passed to, the methods on the `AsyncClient` and `Client`
|
|
4
|
+
that work at the server level rather than on a single index. This covers API keys, the network
|
|
5
|
+
configuration used for remote federated search, webhooks, and the health and version information
|
|
6
|
+
for the server.
|
|
7
|
+
|
|
8
|
+
## Client Models API
|
|
9
|
+
|
|
10
|
+
::: meilisearch_python_sdk.models.client
|
|
11
|
+
|
|
12
|
+
## Webhook Models API
|
|
13
|
+
|
|
14
|
+
::: meilisearch_python_sdk.models.webhook
|
|
15
|
+
|
|
16
|
+
## Health Models API
|
|
17
|
+
|
|
18
|
+
::: meilisearch_python_sdk.models.health
|
|
19
|
+
|
|
20
|
+
## Version Models API
|
|
21
|
+
|
|
22
|
+
::: meilisearch_python_sdk.models.version
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## Index Models
|
|
2
|
+
|
|
3
|
+
These are the models that describe indexes and the documents in them. `IndexInfo` and `IndexStats`
|
|
4
|
+
are returned by the index information methods, the `Field` models describe how an attribute is
|
|
5
|
+
configured, and `DocumentsInfo` is returned when getting multiple documents.
|
|
6
|
+
|
|
7
|
+
## Index Models API
|
|
8
|
+
|
|
9
|
+
::: meilisearch_python_sdk.models.index
|
|
10
|
+
|
|
11
|
+
## Document Models API
|
|
12
|
+
|
|
13
|
+
::: meilisearch_python_sdk.models.documents
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## Search Models
|
|
2
|
+
|
|
3
|
+
These are the models used by the search methods. `search` returns a `SearchResults` object,
|
|
4
|
+
`facet_search` returns a `FacetSearchResults` object, and `search_similar_documents` returns a
|
|
5
|
+
`SimilarSearchResults` object. `Hybrid`, `Personalize`, and the `Federation` models are passed
|
|
6
|
+
into the search methods to control how the search is run.
|
|
7
|
+
|
|
8
|
+
## Search Models API
|
|
9
|
+
|
|
10
|
+
::: meilisearch_python_sdk.models.search
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## Settings Models
|
|
2
|
+
|
|
3
|
+
These are the models used when getting and updating index settings. `MeilisearchSettings` holds
|
|
4
|
+
all of the settings for an index and is what `get_settings` returns and `update_settings` accepts.
|
|
5
|
+
The remaining models are the values used within it, for example the embedder models are used to
|
|
6
|
+
configure vector search.
|
|
7
|
+
|
|
8
|
+
## Settings Models API
|
|
9
|
+
|
|
10
|
+
::: meilisearch_python_sdk.models.settings
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## Task Models
|
|
2
|
+
|
|
3
|
+
Meilisearch processes writes asynchronously, so methods that modify data return a `TaskInfo`
|
|
4
|
+
rather than the result of the write. The `task_uid` from that `TaskInfo` can be used to look up
|
|
5
|
+
a `TaskResult` to find out whether the write succeeded. Batches group the tasks Meilisearch
|
|
6
|
+
processed together.
|
|
7
|
+
|
|
8
|
+
## Task Models API
|
|
9
|
+
|
|
10
|
+
::: meilisearch_python_sdk.models.task
|
|
11
|
+
|
|
12
|
+
## Batch Models API
|
|
13
|
+
|
|
14
|
+
::: meilisearch_python_sdk.models.batch
|
{meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_batch.py
RENAMED
|
@@ -41,7 +41,7 @@ async def async_get_batches(
|
|
|
41
41
|
json_handler: JsonHandler,
|
|
42
42
|
uids: list[int] | None = None,
|
|
43
43
|
batch_uids: list[int] | None = None,
|
|
44
|
-
index_uids: list[
|
|
44
|
+
index_uids: list[str] | None = None,
|
|
45
45
|
statuses: list[str] | None = None,
|
|
46
46
|
types: list[str] | None = None,
|
|
47
47
|
limit: int = 20,
|
|
@@ -94,7 +94,7 @@ def get_batches(
|
|
|
94
94
|
json_handler: JsonHandler,
|
|
95
95
|
uids: list[int] | None = None,
|
|
96
96
|
batch_uids: list[int] | None = None,
|
|
97
|
-
index_uids: list[
|
|
97
|
+
index_uids: list[str] | None = None,
|
|
98
98
|
statuses: list[str] | None = None,
|
|
99
99
|
types: list[str] | None = None,
|
|
100
100
|
limit: int = 20,
|
|
@@ -131,7 +131,7 @@ def _build_parameters(
|
|
|
131
131
|
*,
|
|
132
132
|
uids: list[int] | None = None,
|
|
133
133
|
batch_uids: list[int] | None = None,
|
|
134
|
-
index_uids: list[
|
|
134
|
+
index_uids: list[str] | None = None,
|
|
135
135
|
statuses: list[str] | None = None,
|
|
136
136
|
types: list[str] | None = None,
|
|
137
137
|
limit: int = 20,
|
|
@@ -895,7 +895,7 @@ class AsyncClient(BaseClient):
|
|
|
895
895
|
*,
|
|
896
896
|
uids: list[int] | None = None,
|
|
897
897
|
batch_uids: list[int] | None = None,
|
|
898
|
-
index_uids: list[
|
|
898
|
+
index_uids: list[str] | None = None,
|
|
899
899
|
statuses: list[str] | None = None,
|
|
900
900
|
types: list[str] | None = None,
|
|
901
901
|
limit: int = 20,
|
|
@@ -927,7 +927,7 @@ class AsyncClient(BaseClient):
|
|
|
927
927
|
self,
|
|
928
928
|
*,
|
|
929
929
|
uids: list[int] | None = None,
|
|
930
|
-
index_uids: list[
|
|
930
|
+
index_uids: list[str] | None = None,
|
|
931
931
|
statuses: list[str] | None = None,
|
|
932
932
|
types: list[str] | None = None,
|
|
933
933
|
before_enqueued_at: datetime | None = None,
|
|
@@ -1005,7 +1005,7 @@ class AsyncClient(BaseClient):
|
|
|
1005
1005
|
self,
|
|
1006
1006
|
*,
|
|
1007
1007
|
uids: list[int] | None = None,
|
|
1008
|
-
index_uids: list[
|
|
1008
|
+
index_uids: list[str] | None = None,
|
|
1009
1009
|
statuses: list[str] | None = None,
|
|
1010
1010
|
types: list[str] | None = None,
|
|
1011
1011
|
before_enqueued_at: datetime | None = None,
|
|
@@ -1061,6 +1061,18 @@ class AsyncClient(BaseClient):
|
|
|
1061
1061
|
index_ids: list[str] | None = None,
|
|
1062
1062
|
types: str | list[str] | None = None,
|
|
1063
1063
|
reverse: bool | None = None,
|
|
1064
|
+
uids: list[int] | None = None,
|
|
1065
|
+
batch_uids: list[int] | None = None,
|
|
1066
|
+
canceled_by: list[int] | None = None,
|
|
1067
|
+
statuses: str | list[str] | None = None,
|
|
1068
|
+
before_enqueued_at: datetime | None = None,
|
|
1069
|
+
after_enqueued_at: datetime | None = None,
|
|
1070
|
+
before_started_at: datetime | None = None,
|
|
1071
|
+
after_started_at: datetime | None = None,
|
|
1072
|
+
before_finished_at: datetime | None = None,
|
|
1073
|
+
after_finished_at: datetime | None = None,
|
|
1074
|
+
limit: int | None = None,
|
|
1075
|
+
from_: int | None = None,
|
|
1064
1076
|
) -> TaskStatus:
|
|
1065
1077
|
"""Get multiple tasks.
|
|
1066
1078
|
|
|
@@ -1069,6 +1081,24 @@ class AsyncClient(BaseClient):
|
|
|
1069
1081
|
tasks only for the specified indexes, if not all tasks will be returned. Default = None
|
|
1070
1082
|
types: Specify specific task types to retrieve. Default = None
|
|
1071
1083
|
reverse: If True the tasks will be returned in reverse order. Default = None
|
|
1084
|
+
uids: A list of task UIDs to retrieve. Default = None
|
|
1085
|
+
batch_uids: A list of batch UIDs for which to get the tasks. Default = None
|
|
1086
|
+
canceled_by: A list of task UIDs that canceled the tasks to retrieve. Default = None
|
|
1087
|
+
statuses: Specify specific task statuses to retrieve. Default = None
|
|
1088
|
+
before_enqueued_at: Get tasks that were enqueued before the specified date time.
|
|
1089
|
+
Default = None
|
|
1090
|
+
after_enqueued_at: Get tasks that were enqueued after the specified date time.
|
|
1091
|
+
Default = None
|
|
1092
|
+
before_started_at: Get tasks that were started before the specified date time.
|
|
1093
|
+
Default = None
|
|
1094
|
+
after_started_at: Get tasks that were started after the specified date time.
|
|
1095
|
+
Default = None
|
|
1096
|
+
before_finished_at: Get tasks that were finished before the specified date time.
|
|
1097
|
+
Default = None
|
|
1098
|
+
after_finished_at: Get tasks that were finished after the specified date time.
|
|
1099
|
+
Default = None
|
|
1100
|
+
limit: The maximum number of tasks to return. Default = None
|
|
1101
|
+
from_: The task UID from which to start returning tasks. Default = None
|
|
1072
1102
|
|
|
1073
1103
|
Returns:
|
|
1074
1104
|
Task statuses.
|
|
@@ -1090,6 +1120,18 @@ class AsyncClient(BaseClient):
|
|
|
1090
1120
|
index_ids=index_ids,
|
|
1091
1121
|
types=types,
|
|
1092
1122
|
reverse=reverse,
|
|
1123
|
+
uids=uids,
|
|
1124
|
+
batch_uids=batch_uids,
|
|
1125
|
+
canceled_by=canceled_by,
|
|
1126
|
+
statuses=statuses,
|
|
1127
|
+
before_enqueued_at=before_enqueued_at,
|
|
1128
|
+
after_enqueued_at=after_enqueued_at,
|
|
1129
|
+
before_started_at=before_started_at,
|
|
1130
|
+
after_started_at=after_started_at,
|
|
1131
|
+
before_finished_at=before_finished_at,
|
|
1132
|
+
after_finished_at=after_finished_at,
|
|
1133
|
+
limit=limit,
|
|
1134
|
+
from_=from_,
|
|
1093
1135
|
)
|
|
1094
1136
|
|
|
1095
1137
|
async def wait_for_task(
|
|
@@ -1177,7 +1219,7 @@ class AsyncClient(BaseClient):
|
|
|
1177
1219
|
"""
|
|
1178
1220
|
payload = build_transfer_documents_payload(url, api_key, payload_size, indexes)
|
|
1179
1221
|
|
|
1180
|
-
response = await self._http_requests.post(
|
|
1222
|
+
response = await self._http_requests.post("export", body=payload)
|
|
1181
1223
|
|
|
1182
1224
|
return TaskInfo(**self._http_requests.parse_json(response))
|
|
1183
1225
|
|