meilisearch-python-sdk 5.5.1__tar.gz → 5.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-5.5.1 → meilisearch_python_sdk-5.5.2}/.pre-commit-config.yaml +1 -1
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/PKG-INFO +1 -1
- meilisearch_python_sdk-5.5.2/meilisearch_python_sdk/_version.py +1 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/index/_common.py +8 -4
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/index/async_index.py +95 -111
- meilisearch_python_sdk-5.5.1/meilisearch_python_sdk/_version.py +0 -1
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/FUNDING.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/release-draft-template.yaml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/renovate.json5 +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/docs_publish.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/nightly_testing.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/pypi_publish.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/release-drafter.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/testing.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.gitignore +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/CONTRIBUTING.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/LICENSE +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/README.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/assets/add_in_batches.png +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/assets/searches.png +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/codecov.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/datasets/small_movies.json +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docker-compose.https.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docker-compose.yml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/.nojekyll +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/CNAME +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/async_client_api.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/async_index_api.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/client_api.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/css/custom.css +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/decorators_api.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/index.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/index_api.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/js/umami.js +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/json_handler.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/overrides/partials/footer.html +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/plugins.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/pydantic.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/.gitignore +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/README.md +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_search_tracker.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_update_settings.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/fastapi_example.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/orjson_example.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/pyproject.toml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/requirements.txt +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/search_tracker.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/conftest.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/test_async_examples.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/test_examples.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/ujson_example.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/update_settings.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/justfile +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_batch.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_client.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_http_requests.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_task.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_utils.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/decorators.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/errors.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/index/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/index/index.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/json_handler.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/batch.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/client.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/documents.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/health.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/index.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/search.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/settings.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/task.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/version.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/webhook.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/plugins.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/py.typed +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/types.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/mkdocs.yaml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/pyproject.toml +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/__init__.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/conftest.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_client.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_documents.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_index.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_index_plugins.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_search.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_client.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_decorators.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_documents.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_errors.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_index.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_index_plugins.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_search.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_settings_models.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_utils.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_version.py +0 -0
- {meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meilisearch-python-sdk
|
|
3
|
-
Version: 5.5.
|
|
3
|
+
Version: 5.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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "5.5.2"
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from collections.abc import Generator, MutableMapping, Sequence
|
|
4
4
|
from datetime import datetime
|
|
5
|
+
from itertools import chain, islice
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import TYPE_CHECKING, Any, Literal
|
|
7
8
|
from urllib.parse import urlencode
|
|
@@ -81,13 +82,16 @@ class BaseIndex:
|
|
|
81
82
|
def batch(
|
|
82
83
|
documents: Sequence[MutableMapping], batch_size: int
|
|
83
84
|
) -> Generator[Sequence[MutableMapping], None, None]:
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
iterator = iter(documents)
|
|
86
|
+
while True:
|
|
87
|
+
batch_slice = list(islice(iterator, batch_size))
|
|
88
|
+
if not batch_slice:
|
|
89
|
+
break
|
|
90
|
+
yield batch_slice
|
|
87
91
|
|
|
88
92
|
|
|
89
93
|
def combine_documents(documents: list[list[Any]]) -> list[Any]:
|
|
90
|
-
return
|
|
94
|
+
return list(chain.from_iterable(documents))
|
|
91
95
|
|
|
92
96
|
|
|
93
97
|
def plugin_has_method(
|
|
@@ -1598,27 +1598,24 @@ class AsyncIndex(BaseIndex):
|
|
|
1598
1598
|
>>> await index.add_documents_in_batches(documents)
|
|
1599
1599
|
"""
|
|
1600
1600
|
if concurrency_limit:
|
|
1601
|
-
|
|
1602
|
-
if not use_task_groups():
|
|
1603
|
-
batches = [
|
|
1604
|
-
self.add_documents(
|
|
1605
|
-
x, primary_key, custom_metadata=custom_metadata, compress=compress
|
|
1606
|
-
)
|
|
1607
|
-
for x in batch(documents, batch_size)
|
|
1608
|
-
]
|
|
1609
|
-
return await asyncio.gather(*batches)
|
|
1601
|
+
semaphore = asyncio.Semaphore(concurrency_limit)
|
|
1610
1602
|
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1603
|
+
async def add_batch_with_limit(batch_data: Sequence[JsonMapping]) -> TaskInfo:
|
|
1604
|
+
async with semaphore:
|
|
1605
|
+
return await self.add_documents(
|
|
1606
|
+
batch_data, primary_key, custom_metadata=custom_metadata, compress=compress
|
|
1607
|
+
)
|
|
1608
|
+
|
|
1609
|
+
if not use_task_groups():
|
|
1610
|
+
batches = [add_batch_with_limit(data) for data in batch(documents, batch_size)]
|
|
1611
|
+
return await asyncio.gather(*batches)
|
|
1612
|
+
|
|
1613
|
+
async with asyncio.TaskGroup() as tg: # type: ignore[attr-defined]
|
|
1614
|
+
tasks = [
|
|
1615
|
+
tg.create_task(add_batch_with_limit(x)) for x in batch(documents, batch_size)
|
|
1616
|
+
]
|
|
1620
1617
|
|
|
1621
|
-
|
|
1618
|
+
return [x.result() for x in tasks]
|
|
1622
1619
|
|
|
1623
1620
|
if not use_task_groups():
|
|
1624
1621
|
batches = [
|
|
@@ -1712,65 +1709,54 @@ class AsyncIndex(BaseIndex):
|
|
|
1712
1709
|
return [response]
|
|
1713
1710
|
|
|
1714
1711
|
if concurrency_limit:
|
|
1715
|
-
|
|
1716
|
-
if not use_task_groups():
|
|
1717
|
-
add_documents = []
|
|
1718
|
-
for path in directory.iterdir():
|
|
1719
|
-
if path.suffix == f".{document_type}":
|
|
1720
|
-
documents = await _async_load_documents_from_file(
|
|
1721
|
-
path, csv_delimiter, json_handler=self._json_handler
|
|
1722
|
-
)
|
|
1723
|
-
add_documents.append(
|
|
1724
|
-
self.add_documents(
|
|
1725
|
-
documents,
|
|
1726
|
-
primary_key,
|
|
1727
|
-
custom_metadata=custom_metadata,
|
|
1728
|
-
compress=compress,
|
|
1729
|
-
)
|
|
1730
|
-
)
|
|
1712
|
+
semaphore = asyncio.Semaphore(concurrency_limit)
|
|
1731
1713
|
|
|
1732
|
-
|
|
1714
|
+
async def add_docs_with_limit(docs: Sequence[JsonMapping]) -> TaskInfo:
|
|
1715
|
+
async with semaphore:
|
|
1716
|
+
return await self.add_documents(
|
|
1717
|
+
docs,
|
|
1718
|
+
primary_key,
|
|
1719
|
+
custom_metadata=custom_metadata,
|
|
1720
|
+
compress=compress,
|
|
1721
|
+
)
|
|
1733
1722
|
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1723
|
+
if not use_task_groups():
|
|
1724
|
+
add_documents = []
|
|
1725
|
+
for path in directory.iterdir():
|
|
1726
|
+
if path.suffix == f".{document_type}":
|
|
1727
|
+
documents = await _async_load_documents_from_file(
|
|
1728
|
+
path, csv_delimiter, json_handler=self._json_handler
|
|
1729
|
+
)
|
|
1730
|
+
add_documents.append(add_docs_with_limit(documents))
|
|
1738
1731
|
|
|
1739
|
-
|
|
1740
|
-
responses = [*first_response, *responses]
|
|
1741
|
-
else:
|
|
1742
|
-
responses = [await add_documents[0]]
|
|
1732
|
+
raise_on_no_documents(add_documents, document_type, directory_path)
|
|
1743
1733
|
|
|
1744
|
-
|
|
1734
|
+
if len(add_documents) > 1:
|
|
1735
|
+
# Send the first document on its own before starting the gather. Otherwise Meilisearch
|
|
1736
|
+
# returns an error because it thinks all entries are trying to create the same index.
|
|
1737
|
+
first_response = [await add_documents.pop(0)]
|
|
1745
1738
|
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
documents,
|
|
1768
|
-
primary_key,
|
|
1769
|
-
custom_metadata=custom_metadata,
|
|
1770
|
-
compress=compress,
|
|
1771
|
-
)
|
|
1772
|
-
)
|
|
1773
|
-
)
|
|
1739
|
+
responses = await asyncio.gather(*add_documents)
|
|
1740
|
+
responses = [*first_response, *responses]
|
|
1741
|
+
else:
|
|
1742
|
+
responses = [await add_documents[0]]
|
|
1743
|
+
|
|
1744
|
+
return responses
|
|
1745
|
+
|
|
1746
|
+
async with asyncio.TaskGroup() as tg: # type: ignore[attr-defined]
|
|
1747
|
+
tasks = []
|
|
1748
|
+
all_results = []
|
|
1749
|
+
for i, path in enumerate(directory.iterdir()):
|
|
1750
|
+
if path.suffix == f".{document_type}":
|
|
1751
|
+
documents = await _async_load_documents_from_file(
|
|
1752
|
+
path, csv_delimiter, json_handler=self._json_handler
|
|
1753
|
+
)
|
|
1754
|
+
if i == 0:
|
|
1755
|
+
all_results = [await add_docs_with_limit(documents)]
|
|
1756
|
+
else:
|
|
1757
|
+
tasks.append(tg.create_task(add_docs_with_limit(documents)))
|
|
1758
|
+
|
|
1759
|
+
return [*all_results, *[x.result() for x in tasks]]
|
|
1774
1760
|
|
|
1775
1761
|
if not use_task_groups():
|
|
1776
1762
|
add_documents = []
|
|
@@ -2370,29 +2356,26 @@ class AsyncIndex(BaseIndex):
|
|
|
2370
2356
|
>>> await index.update_documents_in_batches(documents)
|
|
2371
2357
|
"""
|
|
2372
2358
|
if concurrency_limit:
|
|
2373
|
-
|
|
2374
|
-
if not use_task_groups():
|
|
2375
|
-
batches = [
|
|
2376
|
-
self.update_documents(
|
|
2377
|
-
x,
|
|
2378
|
-
primary_key=primary_key,
|
|
2379
|
-
custom_metadata=custom_metadata,
|
|
2380
|
-
compress=compress,
|
|
2381
|
-
)
|
|
2382
|
-
for x in batch(documents, batch_size)
|
|
2383
|
-
]
|
|
2384
|
-
return await asyncio.gather(*batches)
|
|
2359
|
+
semaphore = asyncio.Semaphore(concurrency_limit)
|
|
2385
2360
|
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2361
|
+
async def update_batch_with_limit(batch_data: Sequence[JsonMapping]) -> TaskInfo:
|
|
2362
|
+
async with semaphore:
|
|
2363
|
+
return await self.update_documents(
|
|
2364
|
+
batch_data,
|
|
2365
|
+
primary_key=primary_key,
|
|
2366
|
+
custom_metadata=custom_metadata,
|
|
2367
|
+
compress=compress,
|
|
2368
|
+
)
|
|
2369
|
+
|
|
2370
|
+
if not use_task_groups():
|
|
2371
|
+
batches = [update_batch_with_limit(x) for x in batch(documents, batch_size)]
|
|
2372
|
+
return await asyncio.gather(*batches)
|
|
2373
|
+
|
|
2374
|
+
async with asyncio.TaskGroup() as tg: # type: ignore[attr-defined]
|
|
2375
|
+
tasks = [
|
|
2376
|
+
tg.create_task(update_batch_with_limit(x)) for x in batch(documents, batch_size)
|
|
2377
|
+
]
|
|
2378
|
+
return [x.result() for x in tasks]
|
|
2396
2379
|
|
|
2397
2380
|
if not use_task_groups():
|
|
2398
2381
|
batches = [
|
|
@@ -3138,23 +3121,24 @@ class AsyncIndex(BaseIndex):
|
|
|
3138
3121
|
>>> )
|
|
3139
3122
|
"""
|
|
3140
3123
|
if concurrency_limit:
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
return await
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3124
|
+
semaphore = asyncio.Semaphore(concurrency_limit)
|
|
3125
|
+
|
|
3126
|
+
async def delete_with_limit(
|
|
3127
|
+
filter_value: str | list[str | list[str]],
|
|
3128
|
+
) -> TaskInfo:
|
|
3129
|
+
async with semaphore:
|
|
3130
|
+
return await self.delete_documents_by_filter(
|
|
3131
|
+
filter_value, custom_metadata=custom_metadata
|
|
3132
|
+
)
|
|
3133
|
+
|
|
3134
|
+
if not use_task_groups():
|
|
3135
|
+
tasks = [delete_with_limit(filter) for filter in filters]
|
|
3136
|
+
return await asyncio.gather(*tasks)
|
|
3137
|
+
|
|
3138
|
+
async with asyncio.TaskGroup() as tg: # type: ignore[attr-defined]
|
|
3139
|
+
tg_tasks = [tg.create_task(delete_with_limit(filter)) for filter in filters]
|
|
3156
3140
|
|
|
3157
|
-
|
|
3141
|
+
return [x.result() for x in tg_tasks]
|
|
3158
3142
|
|
|
3159
3143
|
if not use_task_groups():
|
|
3160
3144
|
tasks = [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = "5.5.1"
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/release-draft-template.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/docs_publish.yml
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/nightly_testing.yml
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/pypi_publish.yml
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/.github/workflows/release-drafter.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/docs/overrides/partials/footer.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/add_documents_decorator.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/add_documents_in_batches.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_search_tracker.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/async_update_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/test_async_examples.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/examples/tests/test_examples.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/__init__.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_batch.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_task.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/_utils.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/decorators.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/index/index.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/json_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/batch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/models/task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/plugins.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/py.typed
RENAMED
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/meilisearch_python_sdk/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-5.5.1 → meilisearch_python_sdk-5.5.2}/tests/test_async_index_plugins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|