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.
Files changed (120) hide show
  1. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/docs_publish.yml +1 -1
  2. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/nightly_testing.yml +1 -1
  3. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/prek_update.yml +1 -1
  4. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/pypi_publish.yml +1 -1
  5. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/testing.yml +6 -6
  6. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/PKG-INFO +2 -1
  7. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docker-compose.https.yml +1 -1
  8. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docker-compose.yml +1 -1
  9. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/async_client_api.md +2 -2
  10. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/client_api.md +2 -2
  11. meilisearch_python_sdk-7.5.2/docs/errors_api.md +9 -0
  12. meilisearch_python_sdk-7.5.2/docs/index.md +217 -0
  13. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/json_handler.md +4 -0
  14. meilisearch_python_sdk-7.5.2/docs/models_client.md +22 -0
  15. meilisearch_python_sdk-7.5.2/docs/models_index.md +13 -0
  16. meilisearch_python_sdk-7.5.2/docs/models_search.md +10 -0
  17. meilisearch_python_sdk-7.5.2/docs/models_settings.md +10 -0
  18. meilisearch_python_sdk-7.5.2/docs/models_task.md +14 -0
  19. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/plugins.md +4 -0
  20. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_batch.py +3 -3
  21. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_async_client.py +46 -4
  22. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_client.py +46 -4
  23. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_task.py +131 -63
  24. meilisearch_python_sdk-7.5.2/meilisearch_python_sdk/_version.py +1 -0
  25. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/mkdocs.yaml +20 -1
  26. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/prek.toml +2 -2
  27. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/pyproject.toml +4 -3
  28. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_client.py +84 -0
  29. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_client.py +80 -0
  30. meilisearch_python_sdk-7.5.2/uv.lock +1261 -0
  31. meilisearch_python_sdk-7.5.0/docs/index.md +0 -30
  32. meilisearch_python_sdk-7.5.0/meilisearch_python_sdk/_version.py +0 -1
  33. meilisearch_python_sdk-7.5.0/uv.lock +0 -1281
  34. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/FUNDING.yml +0 -0
  35. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/release-draft-template.yaml +0 -0
  36. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/renovate.json5 +0 -0
  37. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.github/workflows/release-drafter.yml +0 -0
  38. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/.gitignore +0 -0
  39. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/CONTRIBUTING.md +0 -0
  40. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/LICENSE +0 -0
  41. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/README.md +0 -0
  42. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/assets/add_in_batches.png +0 -0
  43. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/assets/searches.png +0 -0
  44. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/codecov.yml +0 -0
  45. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/datasets/small_movies.json +0 -0
  46. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/.nojekyll +0 -0
  47. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/CNAME +0 -0
  48. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/async_index_api.md +0 -0
  49. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/css/custom.css +0 -0
  50. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/decorators_api.md +0 -0
  51. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/index_api.md +0 -0
  52. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/js/umami.js +0 -0
  53. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/overrides/partials/footer.html +0 -0
  54. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/docs/pydantic.md +0 -0
  55. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/.gitignore +0 -0
  56. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/README.md +0 -0
  57. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/__init__.py +0 -0
  58. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/add_documents_decorator.py +0 -0
  59. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/add_documents_in_batches.py +0 -0
  60. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_add_documents_decorator.py +0 -0
  61. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_add_documents_in_batches.py +0 -0
  62. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_documents_and_search_results.py +0 -0
  63. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_search_tracker.py +0 -0
  64. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/async_update_settings.py +0 -0
  65. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/documents_and_search_results.py +0 -0
  66. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/fastapi_example.py +0 -0
  67. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/orjson_example.py +0 -0
  68. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/pyproject.toml +0 -0
  69. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/requirements.txt +0 -0
  70. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/search_tracker.py +0 -0
  71. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/__init__.py +0 -0
  72. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/conftest.py +0 -0
  73. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/test_async_examples.py +0 -0
  74. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/tests/test_examples.py +0 -0
  75. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/examples/update_settings.py +0 -0
  76. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/justfile +0 -0
  77. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/__init__.py +0 -0
  78. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/__init__.py +0 -0
  79. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_base_client.py +0 -0
  80. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_client/_common.py +0 -0
  81. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_http_requests.py +0 -0
  82. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/_utils.py +0 -0
  83. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/decorators.py +0 -0
  84. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/errors.py +0 -0
  85. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/__init__.py +0 -0
  86. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/_common.py +0 -0
  87. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/async_index.py +0 -0
  88. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/index/index.py +0 -0
  89. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/json_handler.py +0 -0
  90. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/__init__.py +0 -0
  91. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/batch.py +0 -0
  92. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/client.py +0 -0
  93. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/documents.py +0 -0
  94. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/health.py +0 -0
  95. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/index.py +0 -0
  96. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/search.py +0 -0
  97. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/settings.py +0 -0
  98. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/task.py +0 -0
  99. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/version.py +0 -0
  100. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/models/webhook.py +0 -0
  101. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/plugins.py +0 -0
  102. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/py.typed +0 -0
  103. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/meilisearch_python_sdk/types.py +0 -0
  104. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/__init__.py +0 -0
  105. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/conftest.py +0 -0
  106. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_documents.py +0 -0
  107. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_index.py +0 -0
  108. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_index_plugins.py +0 -0
  109. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_async_search.py +0 -0
  110. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_decorators.py +0 -0
  111. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_documents.py +0 -0
  112. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_errors.py +0 -0
  113. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_http_requests.py +0 -0
  114. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_index.py +0 -0
  115. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_index_plugins.py +0 -0
  116. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_json_handler.py +0 -0
  117. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_search.py +0 -0
  118. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_settings_models.py +0 -0
  119. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_utils.py +0 -0
  120. {meilisearch_python_sdk-7.5.0 → meilisearch_python_sdk-7.5.2}/tests/test_version.py +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  steps:
17
17
  - uses: actions/checkout@v7
18
18
  - name: Install uv
19
- uses: astral-sh/setup-uv@v9.0.0
19
+ uses: astral-sh/setup-uv@v10.0.1
20
20
  with:
21
21
  enable-cache: true
22
22
  - name: Set up Python
@@ -14,7 +14,7 @@ jobs:
14
14
  steps:
15
15
  - uses: actions/checkout@v7
16
16
  - name: Install uv
17
- uses: astral-sh/setup-uv@v9.0.0
17
+ uses: astral-sh/setup-uv@v10.0.1
18
18
  with:
19
19
  enable-cache: true
20
20
  - name: install Just
@@ -13,7 +13,7 @@ jobs:
13
13
  steps:
14
14
  - uses: actions/checkout@v7
15
15
  - name: Install uv
16
- uses: astral-sh/setup-uv@v9.0.0
16
+ uses: astral-sh/setup-uv@v10.0.1
17
17
  with:
18
18
  enable-cache: true
19
19
  - name: Set up Python
@@ -14,7 +14,7 @@ jobs:
14
14
  steps:
15
15
  - uses: actions/checkout@v7
16
16
  - name: Install uv
17
- uses: astral-sh/setup-uv@v9.0.0
17
+ uses: astral-sh/setup-uv@v10.0.1
18
18
  with:
19
19
  enable-cache: true
20
20
  - name: Set up Python
@@ -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@v9.0.0
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@v9.0.0
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@v9.0.0
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@v9.0.0
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@v9.0.0
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@v9.0.0
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.0
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
 
@@ -1,6 +1,6 @@
1
1
  services:
2
2
  meilisearch:
3
- image: getmeili/meilisearch:v1.53.0
3
+ image: getmeili/meilisearch:v1.53.1
4
4
  ports:
5
5
  - "7700:7700"
6
6
  environment:
@@ -1,6 +1,6 @@
1
1
  services:
2
2
  meilisearch:
3
- image: getmeili/meilisearch:v1.53.0
3
+ image: getmeili/meilisearch:v1.53.1
4
4
  ports:
5
5
  - "7700:7700"
6
6
  environment:
@@ -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 meilisearch-python-sdk import AsyncClient
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 meilisearch-python-sdk import AsyncClient
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 meilisearch-python-sdk import Client
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 meilisearch-python-sdk import Client
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.
@@ -64,3 +64,7 @@ with Client("http://127.0.0.1:7700", json_handler=OrjsonHandler()) as client:
64
64
  index = client.index("movies", primary_key="id")
65
65
  index.add_documents(documents)
66
66
  ```
67
+
68
+ ## JSON Handler API
69
+
70
+ ::: meilisearch_python_sdk.json_handler
@@ -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
@@ -313,3 +313,7 @@ def main() -> int:
313
313
  if __name__ == "__main__":
314
314
  raise SystemExit(main())
315
315
  ```
316
+
317
+ ## Plugins API
318
+
319
+ ::: meilisearch_python_sdk.plugins
@@ -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[int] | None = None,
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[int] | None = None,
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[int] | None = None,
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[int] | None = None,
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[int] | None = None,
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[int] | None = None,
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(url, body=payload)
1222
+ response = await self._http_requests.post("export", body=payload)
1181
1223
 
1182
1224
  return TaskInfo(**self._http_requests.parse_json(response))
1183
1225