meilisearch-python-sdk 8.1.0__tar.gz → 8.1.1__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 (118) hide show
  1. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/PKG-INFO +1 -1
  2. meilisearch_python_sdk-8.1.1/meilisearch_python_sdk/_version.py +1 -0
  3. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/decorators.py +15 -12
  4. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/index/_common.py +3 -3
  5. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/json_handler.py +7 -13
  6. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/prek.toml +1 -1
  7. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/pyproject.toml +3 -3
  8. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_async_documents.py +1 -1
  9. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_documents.py +1 -1
  10. meilisearch_python_sdk-8.1.1/tests/test_json_handler.py +36 -0
  11. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/uv.lock +218 -194
  12. meilisearch_python_sdk-8.1.0/meilisearch_python_sdk/_version.py +0 -1
  13. meilisearch_python_sdk-8.1.0/tests/test_json_handler.py +0 -13
  14. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/FUNDING.yml +0 -0
  15. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/release-draft-template.yaml +0 -0
  16. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/renovate.json5 +0 -0
  17. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/docs_publish.yml +0 -0
  18. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/nightly_testing.yml +0 -0
  19. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/prek_update.yml +0 -0
  20. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/pypi_publish.yml +0 -0
  21. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/release-drafter.yml +0 -0
  22. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.github/workflows/testing.yml +0 -0
  23. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/.gitignore +0 -0
  24. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/CONTRIBUTING.md +0 -0
  25. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/LICENSE +0 -0
  26. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/README.md +0 -0
  27. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/assets/add_in_batches.png +0 -0
  28. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/assets/searches.png +0 -0
  29. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/datasets/small_movies.json +0 -0
  30. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docker-compose.https.yml +0 -0
  31. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docker-compose.yml +0 -0
  32. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/.nojekyll +0 -0
  33. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/CNAME +0 -0
  34. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/async_client_api.md +0 -0
  35. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/async_index_api.md +0 -0
  36. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/client_api.md +0 -0
  37. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/css/custom.css +0 -0
  38. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/decorators_api.md +0 -0
  39. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/errors_api.md +0 -0
  40. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/index.md +0 -0
  41. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/index_api.md +0 -0
  42. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/js/umami.js +0 -0
  43. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/json_handler.md +0 -0
  44. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/models_client.md +0 -0
  45. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/models_index.md +0 -0
  46. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/models_search.md +0 -0
  47. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/models_settings.md +0 -0
  48. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/models_task.md +0 -0
  49. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/overrides/partials/footer.html +0 -0
  50. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/plugins.md +0 -0
  51. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/docs/pydantic.md +0 -0
  52. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/.gitignore +0 -0
  53. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/README.md +0 -0
  54. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/__init__.py +0 -0
  55. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/add_documents_decorator.py +0 -0
  56. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/add_documents_in_batches.py +0 -0
  57. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/async_add_documents_decorator.py +0 -0
  58. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/async_add_documents_in_batches.py +0 -0
  59. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/async_documents_and_search_results.py +0 -0
  60. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/async_search_tracker.py +0 -0
  61. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/async_update_settings.py +0 -0
  62. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/documents_and_search_results.py +0 -0
  63. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/fastapi_example.py +0 -0
  64. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/orjson_example.py +0 -0
  65. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/pyproject.toml +0 -0
  66. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/requirements.txt +0 -0
  67. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/search_tracker.py +0 -0
  68. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/tests/__init__.py +0 -0
  69. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/tests/conftest.py +0 -0
  70. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/tests/test_async_examples.py +0 -0
  71. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/tests/test_examples.py +0 -0
  72. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/examples/update_settings.py +0 -0
  73. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/justfile +0 -0
  74. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/__init__.py +0 -0
  75. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_batch.py +0 -0
  76. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_client/__init__.py +0 -0
  77. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_client/_async_client.py +0 -0
  78. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_client/_base_client.py +0 -0
  79. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_client/_client.py +0 -0
  80. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_client/_common.py +0 -0
  81. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_http_requests.py +0 -0
  82. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_task.py +0 -0
  83. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/_utils.py +0 -0
  84. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/errors.py +0 -0
  85. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/index/__init__.py +0 -0
  86. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/index/async_index.py +0 -0
  87. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/index/index.py +0 -0
  88. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/__init__.py +0 -0
  89. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/batch.py +0 -0
  90. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/client.py +0 -0
  91. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/documents.py +0 -0
  92. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/health.py +0 -0
  93. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/index.py +0 -0
  94. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/search.py +0 -0
  95. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/settings.py +0 -0
  96. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/task.py +0 -0
  97. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/version.py +0 -0
  98. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/models/webhook.py +0 -0
  99. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/plugins.py +0 -0
  100. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/py.typed +0 -0
  101. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/meilisearch_python_sdk/types.py +0 -0
  102. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/mkdocs.yaml +0 -0
  103. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/__init__.py +0 -0
  104. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/conftest.py +0 -0
  105. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_async_client.py +0 -0
  106. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_async_index.py +0 -0
  107. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_async_index_plugins.py +0 -0
  108. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_async_search.py +0 -0
  109. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_client.py +0 -0
  110. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_decorators.py +0 -0
  111. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_errors.py +0 -0
  112. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_http_requests.py +0 -0
  113. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_index.py +0 -0
  114. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_index_plugins.py +0 -0
  115. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_search.py +0 -0
  116. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_settings_models.py +0 -0
  117. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_utils.py +0 -0
  118. {meilisearch_python_sdk-8.1.0 → meilisearch_python_sdk-8.1.1}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: meilisearch-python-sdk
3
- Version: 8.1.0
3
+ Version: 8.1.1
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 = "8.1.1"
@@ -170,17 +170,17 @@ def add_documents(
170
170
  )
171
171
  return result
172
172
 
173
- decorator_client = Client(
173
+ with Client(
174
174
  url=connection_info.url, api_key=connection_info.api_key, verify=verify
175
- )
176
- _add_documents(
177
- decorator_client,
178
- index_name,
179
- result,
180
- batch_size,
181
- primary_key,
182
- wait_for_task,
183
- )
175
+ ) as client:
176
+ _add_documents(
177
+ client,
178
+ index_name,
179
+ result,
180
+ batch_size,
181
+ primary_key,
182
+ wait_for_task,
183
+ )
184
184
 
185
185
  return result
186
186
 
@@ -210,7 +210,10 @@ async def _async_add_documents(
210
210
 
211
211
  if wait_for_task:
212
212
  async with asyncio.TaskGroup() as tg: # type: ignore[attr-defined]
213
- [tg.create_task(async_client.wait_for_task(x.task_uid)) for x in tasks]
213
+ [
214
+ tg.create_task(async_client.wait_for_task(x.task_uid, timeout_in_ms=None))
215
+ for x in tasks
216
+ ]
214
217
 
215
218
 
216
219
  def _add_documents(
@@ -234,4 +237,4 @@ def _add_documents(
234
237
 
235
238
  if wait_for_task:
236
239
  for task in tasks:
237
- client.wait_for_task(task.task_uid)
240
+ client.wait_for_task(task.task_uid, timeout_in_ms=None)
@@ -206,7 +206,7 @@ def process_search_parameters(
206
206
  body["retrieveVectors"] = retrieve_vectors
207
207
 
208
208
  if exhaustive_facet_count is not None:
209
- body["exhaustivefacetCount"] = exhaustive_facet_count
209
+ body["exhaustiveFacetCount"] = exhaustive_facet_count
210
210
 
211
211
  if media is not None:
212
212
  body["media"] = media
@@ -252,7 +252,7 @@ def embedder_json_to_embedders_model( # pragma: no cover
252
252
  embedders[k] = OllamaEmbedder(**v)
253
253
  elif v.get("source") == "rest":
254
254
  embedders[k] = RestEmbedder(**v)
255
- elif v.get("source") == "composit":
255
+ elif v.get("source") == "composite":
256
256
  embedders[k] = CompositeEmbedder(**v)
257
257
  else:
258
258
  embedders[k] = UserProvidedEmbedder(**v)
@@ -297,7 +297,7 @@ def embedder_json_to_settings_model( # pragma: no cover
297
297
  embedders[k] = OllamaEmbedder(**v)
298
298
  elif v.get("source") == "rest":
299
299
  embedders[k] = RestEmbedder(**v)
300
- elif v.get("source") == "composit":
300
+ elif v.get("source") == "composite":
301
301
  embedders[k] = CompositeEmbedder(**v)
302
302
  else:
303
303
  embedders[k] = UserProvidedEmbedder(**v)
@@ -11,13 +11,11 @@ except ImportError: # pragma: no cover
11
11
 
12
12
 
13
13
  class _JsonHandler(ABC):
14
- @staticmethod
15
14
  @abstractmethod
16
- def dumps(obj: Any) -> str: ... # noqa: ANN401
15
+ def dumps(self, obj: Any) -> str: ... # noqa: ANN401
17
16
 
18
- @staticmethod
19
17
  @abstractmethod
20
- def dump_bytes(obj: Any) -> bytes: ... # noqa: ANN401
18
+ def dump_bytes(self, obj: Any) -> bytes: ... # noqa: ANN401
21
19
 
22
20
  @staticmethod
23
21
  @abstractmethod
@@ -25,8 +23,6 @@ class _JsonHandler(ABC):
25
23
 
26
24
 
27
25
  class BuiltinHandler(_JsonHandler):
28
- serializer: type[json.JSONEncoder] | None = None
29
-
30
26
  def __init__(self, serializer: type[json.JSONEncoder] | None = None) -> None:
31
27
  """Uses the json module from the Python standard library.
32
28
 
@@ -34,15 +30,13 @@ class BuiltinHandler(_JsonHandler):
34
30
  serializer: A custom JSONEncode to handle serializing fields that the build in
35
31
  json.dumps cannot handle, for example UUID and datetime. Defaults to None.
36
32
  """
37
- BuiltinHandler.serializer = serializer
33
+ self.serializer = serializer
38
34
 
39
- @staticmethod
40
- def dumps(obj: Any) -> str: # noqa: ANN401
41
- return json.dumps(obj, cls=BuiltinHandler.serializer)
35
+ def dumps(self, obj: Any) -> str: # noqa: ANN401
36
+ return json.dumps(obj, cls=self.serializer)
42
37
 
43
- @staticmethod
44
- def dump_bytes(obj: Any) -> bytes: # noqa: ANN401
45
- return json.dumps(obj, cls=BuiltinHandler.serializer).encode("utf-8")
38
+ def dump_bytes(self, obj: Any) -> bytes: # noqa: ANN401
39
+ return json.dumps(obj, cls=self.serializer).encode("utf-8")
46
40
 
47
41
  @staticmethod
48
42
  def loads(json_string: str | bytes | bytearray) -> Any: # noqa: ANN401
@@ -47,7 +47,7 @@ hooks = [
47
47
 
48
48
  [[repos]]
49
49
  repo = "https://github.com/rvben/rumdl-pre-commit"
50
- rev = "v0.3.1"
50
+ rev = "v0.3.2"
51
51
  hooks = [
52
52
  { id = "rumdl-fmt" }
53
53
  ]
@@ -40,12 +40,12 @@ dev = [
40
40
  "pyrefly==1.4.0",
41
41
  "pytest==9.2.0",
42
42
  "pytest-cov==7.1.0",
43
- "pytest-asyncio==1.4.1",
43
+ "pytest-asyncio==1.4.1.post1",
44
44
  "pytest-xdist==3.8.0",
45
- "prek==0.5.7",
45
+ "prek==0.5.9",
46
46
  "ruff==0.17.3",
47
47
  "types-aiofiles==25.1.0.20260518",
48
- "zensical==0.0.73",
48
+ "zensical==0.0.74",
49
49
  ]
50
50
 
51
51
  [tool.hatch.version]
@@ -1927,7 +1927,7 @@ async def test_add_documents_custom_serializer(compress, async_empty_index):
1927
1927
  {"id": uuid4(), "title": "Test 2", "when": datetime.now()},
1928
1928
  ]
1929
1929
  index = await async_empty_index()
1930
- index._json_handler = BuiltinHandler(serializer=CustomEncoder)
1930
+ index._json_handler.serializer = CustomEncoder
1931
1931
  response = await index.add_documents(documents, compress=compress)
1932
1932
  update = await async_wait_for_task(
1933
1933
  index.http_client, response.task_uid, json_handler=index._json_handler
@@ -1622,7 +1622,7 @@ def test_add_documents_custom_serializer(compress, empty_index):
1622
1622
  {"id": uuid4(), "title": "Test 2", "when": datetime.now()},
1623
1623
  ]
1624
1624
  index = empty_index()
1625
- index._json_handler = BuiltinHandler(serializer=CustomEncoder)
1625
+ index._json_handler.serializer = CustomEncoder
1626
1626
  response = index.add_documents(documents, compress=compress)
1627
1627
  update = wait_for_task(index.http_client, response.task_uid, json_handler=index._json_handler)
1628
1628
  assert update.status == "succeeded"
@@ -0,0 +1,36 @@
1
+ import json
2
+ from uuid import UUID, uuid4
3
+
4
+ import pytest
5
+
6
+ from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler
7
+
8
+
9
+ @pytest.mark.parametrize("json_handler", (BuiltinHandler(), OrjsonHandler()))
10
+ def test_dumps(json_handler):
11
+ result = json_handler.dumps({"id": 1, "title": "Shazam!"})
12
+
13
+ assert isinstance(result, str)
14
+ assert json.loads(result) == {"id": 1, "title": "Shazam!"}
15
+
16
+
17
+ def test_serializer_not_shared():
18
+ doc_id = uuid4()
19
+
20
+ class UUIDEncoder(json.JSONEncoder):
21
+ def default(self, o):
22
+ if isinstance(o, UUID):
23
+ return str(o)
24
+ return super().default(o)
25
+
26
+ handler = BuiltinHandler(serializer=UUIDEncoder)
27
+ BuiltinHandler()
28
+
29
+ assert json.loads(
30
+ handler.dumps(
31
+ {
32
+ "id": doc_id,
33
+ }
34
+ )
35
+ ) == {"id": str(doc_id)}
36
+ assert json.loads(handler.dump_bytes({"id": doc_id})) == {"id": str(doc_id)}