meilisearch-python-sdk 3.5.1__tar.gz → 3.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of meilisearch-python-sdk might be problematic. Click here for more details.
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/workflows/nightly_testing.yml +3 -12
- meilisearch_python_sdk-3.5.1/.github/workflows/pypi_publish.yaml → meilisearch_python_sdk-3.6.0/.github/workflows/pypi_publish.yml +10 -8
- meilisearch_python_sdk-3.5.1/.github/workflows/testing.yaml → meilisearch_python_sdk-3.6.0/.github/workflows/testing.yml +18 -67
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.pre-commit-config.yaml +3 -3
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/PKG-INFO +2 -2
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docker-compose.https.yml +10 -2
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docker-compose.yml +2 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/requirements.txt +1 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/justfile +12 -12
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_client.py +21 -4
- meilisearch_python_sdk-3.6.0/meilisearch_python_sdk/_version.py +1 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/index.py +16 -4
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/search.py +14 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/settings.py +8 -4
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/pyproject.toml +4 -4
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_async_search.py +56 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_search.py +33 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/uv.lock +41 -31
- meilisearch_python_sdk-3.5.1/meilisearch_python_sdk/_version.py +0 -1
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/FUNDING.yml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/dependabot.yaml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/release-draft-template.yaml +0 -0
- /meilisearch_python_sdk-3.5.1/.github/workflows/release-drafter.yaml → /meilisearch_python_sdk-3.6.0/.github/workflows/release-drafter.yml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.gitignore +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/CONTRIBUTING.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/LICENSE +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/README.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/assets/add_in_batches.png +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/assets/searches.png +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/benchmark/run_benchmark.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/codecov.yml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/datasets/small_movies.json +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/.nojekyll +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/CNAME +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/async_client_api.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/async_index_api.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/client_api.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/css/custom.css +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/decorators_api.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/index.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/index_api.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/js/umami.js +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/json_handler.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/plugins.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/docs/pydantic.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/.gitignore +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/README.md +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/__init__.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_add_documents_decorator.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_add_documents_in_batches.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_search_tracker.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_update_settings.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/documents_and_search_results.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/fastapi_example.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/orjson_example.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/pyproject.toml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/search_tracker.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/__init__.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/conftest.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/test_async_examples.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/test_examples.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/ujson_example.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/update_settings.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/__init__.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_http_requests.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_task.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_utils.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/decorators.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/errors.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/json_handler.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/__init__.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/client.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/documents.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/health.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/index.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/task.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/version.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/plugins.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/py.typed +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/types.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/mkdocs.yaml +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/__init__.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/conftest.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_async_client.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_async_documents.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_async_index.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_async_index_plugins.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_client.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_decorators.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_documents.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_errors.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_index.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_index_plugins.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_utils.py +0 -0
- {meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/tests/test_version.py +0 -0
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/workflows/nightly_testing.yml
RENAMED
|
@@ -5,7 +5,6 @@ on:
|
|
|
5
5
|
# Set with UTC time
|
|
6
6
|
- cron: "0 5 * * *"
|
|
7
7
|
env:
|
|
8
|
-
UV_CACHE_DIR: /tmp/.uv-cache
|
|
9
8
|
PYTHON_VERSION: "3.12"
|
|
10
9
|
jobs:
|
|
11
10
|
random-test-order:
|
|
@@ -15,26 +14,18 @@ jobs:
|
|
|
15
14
|
steps:
|
|
16
15
|
- uses: actions/checkout@v4
|
|
17
16
|
- name: Install uv
|
|
18
|
-
|
|
17
|
+
uses: astral-sh/setup-uv@v3
|
|
18
|
+
with:
|
|
19
|
+
enable-cache: true
|
|
19
20
|
- name: install Just
|
|
20
21
|
uses: taiki-e/install-action@just
|
|
21
22
|
- name: Set up Python
|
|
22
23
|
uses: actions/setup-python@v5
|
|
23
24
|
with:
|
|
24
25
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
25
|
-
- name: Restore uv cache
|
|
26
|
-
uses: actions/cache@v4
|
|
27
|
-
with:
|
|
28
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
29
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
30
|
-
restore-keys: |
|
|
31
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
32
|
-
uv-${{ runner.os }}
|
|
33
26
|
- name: Install Dependencies
|
|
34
27
|
run: |
|
|
35
28
|
just install
|
|
36
29
|
uv pip install pytest-randomly
|
|
37
30
|
- name: Test with pytest in random order
|
|
38
31
|
run: just test-ci
|
|
39
|
-
- name: Minimize uv cache
|
|
40
|
-
run: uv cache prune --ci
|
|
@@ -8,22 +8,24 @@ env:
|
|
|
8
8
|
jobs:
|
|
9
9
|
deploy:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
# For PyPI's trusted publishing.
|
|
13
|
+
id-token: write
|
|
11
14
|
steps:
|
|
12
15
|
- uses: actions/checkout@v4
|
|
13
16
|
- name: Install uv
|
|
14
|
-
|
|
17
|
+
uses: astral-sh/setup-uv@v3
|
|
18
|
+
with:
|
|
19
|
+
enable-cache: true
|
|
15
20
|
- name: Set up Python
|
|
16
21
|
uses: actions/setup-python@v5
|
|
17
22
|
with:
|
|
18
23
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
19
24
|
- name: Install Dependencies
|
|
20
25
|
run: uv sync --frozen --all-extras
|
|
21
|
-
- name: Build
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
run: |
|
|
26
|
-
uvx --from build pyproject-build --installer uv
|
|
27
|
-
uvx twine upload dist/*
|
|
26
|
+
- name: Build package
|
|
27
|
+
run: uv build
|
|
28
|
+
- name: Publish package
|
|
29
|
+
run: uv publish
|
|
28
30
|
- name: Deploy Docs
|
|
29
31
|
run: uv run mkdocs gh-deploy --force
|
|
@@ -6,7 +6,6 @@ on:
|
|
|
6
6
|
- main
|
|
7
7
|
pull_request:
|
|
8
8
|
env:
|
|
9
|
-
UV_CACHE_DIR: /tmp/.uv-cache
|
|
10
9
|
PYTHON_VERSION: "3.9"
|
|
11
10
|
jobs:
|
|
12
11
|
linting:
|
|
@@ -16,25 +15,17 @@ jobs:
|
|
|
16
15
|
- name: install Just
|
|
17
16
|
uses: taiki-e/install-action@just
|
|
18
17
|
- name: Install uv
|
|
19
|
-
|
|
18
|
+
uses: astral-sh/setup-uv@v3
|
|
19
|
+
with:
|
|
20
|
+
enable-cache: true
|
|
20
21
|
- name: Set up Python
|
|
21
22
|
uses: actions/setup-python@v5
|
|
22
23
|
with:
|
|
23
24
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
24
|
-
- name: Restore uv cache
|
|
25
|
-
uses: actions/cache@v4
|
|
26
|
-
with:
|
|
27
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
28
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
29
|
-
restore-keys: |
|
|
30
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
31
|
-
uv-${{ runner.os }}
|
|
32
25
|
- name: Install Dependencies
|
|
33
26
|
run: just install
|
|
34
27
|
- name: mypy check
|
|
35
28
|
run: just mypy
|
|
36
|
-
- name: Minimize uv cache
|
|
37
|
-
run: uv cache prune --ci
|
|
38
29
|
|
|
39
30
|
parallel-testing:
|
|
40
31
|
strategy:
|
|
@@ -47,19 +38,13 @@ jobs:
|
|
|
47
38
|
- name: install Just
|
|
48
39
|
uses: taiki-e/install-action@just
|
|
49
40
|
- name: Install uv
|
|
50
|
-
|
|
41
|
+
uses: astral-sh/setup-uv@v3
|
|
42
|
+
with:
|
|
43
|
+
enable-cache: true
|
|
51
44
|
- name: Set up Python ${{ matrix.python-version }}
|
|
52
45
|
uses: actions/setup-python@v5
|
|
53
46
|
with:
|
|
54
47
|
python-version: ${{ matrix.python-version }}
|
|
55
|
-
- name: Restore uv cache
|
|
56
|
-
uses: actions/cache@v4
|
|
57
|
-
with:
|
|
58
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
59
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
60
|
-
restore-keys: |
|
|
61
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
62
|
-
uv-${{ runner.os }}
|
|
63
48
|
- name: Install Dependencies
|
|
64
49
|
run: just install
|
|
65
50
|
- name: Test with pytest
|
|
@@ -69,8 +54,6 @@ jobs:
|
|
|
69
54
|
with:
|
|
70
55
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
71
56
|
fail_ci_if_error: true
|
|
72
|
-
- name: Minimize uv cache
|
|
73
|
-
run: uv cache prune --ci
|
|
74
57
|
|
|
75
58
|
parallel-testing-http2:
|
|
76
59
|
strategy:
|
|
@@ -83,19 +66,13 @@ jobs:
|
|
|
83
66
|
- name: install Just
|
|
84
67
|
uses: taiki-e/install-action@just
|
|
85
68
|
- name: Install uv
|
|
86
|
-
|
|
69
|
+
uses: astral-sh/setup-uv@v3
|
|
70
|
+
with:
|
|
71
|
+
enable-cache: true
|
|
87
72
|
- name: Set up Python ${{ matrix.python-version }}
|
|
88
73
|
uses: actions/setup-python@v5
|
|
89
74
|
with:
|
|
90
75
|
python-version: ${{ matrix.python-version }}
|
|
91
|
-
- name: Restore uv cache
|
|
92
|
-
uses: actions/cache@v4
|
|
93
|
-
with:
|
|
94
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
95
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
96
|
-
restore-keys: |
|
|
97
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
98
|
-
uv-${{ runner.os }}
|
|
99
76
|
- name: Install Dependencies
|
|
100
77
|
run: just install
|
|
101
78
|
- name: Install truststore
|
|
@@ -117,8 +94,6 @@ jobs:
|
|
|
117
94
|
with:
|
|
118
95
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
119
96
|
fail_ci_if_error: true
|
|
120
|
-
- name: Minimize uv cache
|
|
121
|
-
run: uv cache prune --ci
|
|
122
97
|
|
|
123
98
|
no-parallel-testing:
|
|
124
99
|
strategy:
|
|
@@ -131,19 +106,13 @@ jobs:
|
|
|
131
106
|
- name: install Just
|
|
132
107
|
uses: taiki-e/install-action@just
|
|
133
108
|
- name: Install uv
|
|
134
|
-
|
|
109
|
+
uses: astral-sh/setup-uv@v3
|
|
110
|
+
with:
|
|
111
|
+
enable-cache: true
|
|
135
112
|
- name: Set up Python ${{ matrix.python-version }}
|
|
136
113
|
uses: actions/setup-python@v5
|
|
137
114
|
with:
|
|
138
115
|
python-version: ${{ matrix.python-version }}
|
|
139
|
-
- name: Restore uv cache
|
|
140
|
-
uses: actions/cache@v4
|
|
141
|
-
with:
|
|
142
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
143
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
144
|
-
restore-keys: |
|
|
145
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
146
|
-
uv-${{ runner.os }}
|
|
147
116
|
- name: Install Dependencies
|
|
148
117
|
run: just install
|
|
149
118
|
- name: Test with pytest
|
|
@@ -153,8 +122,6 @@ jobs:
|
|
|
153
122
|
with:
|
|
154
123
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
155
124
|
fail_ci_if_error: true
|
|
156
|
-
- name: Minimize uv cache
|
|
157
|
-
run: uv cache prune --ci
|
|
158
125
|
|
|
159
126
|
no-parallel-testing-http2:
|
|
160
127
|
strategy:
|
|
@@ -167,19 +134,13 @@ jobs:
|
|
|
167
134
|
- name: install Just
|
|
168
135
|
uses: taiki-e/install-action@just
|
|
169
136
|
- name: Install uv
|
|
170
|
-
|
|
137
|
+
uses: astral-sh/setup-uv@v3
|
|
138
|
+
with:
|
|
139
|
+
enable-cache: true
|
|
171
140
|
- name: Set up Python ${{ matrix.python-version }}
|
|
172
141
|
uses: actions/setup-python@v5
|
|
173
142
|
with:
|
|
174
143
|
python-version: ${{ matrix.python-version }}
|
|
175
|
-
- name: Restore uv cache
|
|
176
|
-
uses: actions/cache@v4
|
|
177
|
-
with:
|
|
178
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
179
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
180
|
-
restore-keys: |
|
|
181
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
182
|
-
uv-${{ runner.os }}
|
|
183
144
|
- name: Install Dependencies
|
|
184
145
|
run: just install
|
|
185
146
|
- name: Install truststore
|
|
@@ -201,8 +162,6 @@ jobs:
|
|
|
201
162
|
with:
|
|
202
163
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
203
164
|
fail_ci_if_error: true
|
|
204
|
-
- name: Minimize uv cache
|
|
205
|
-
run: uv cache prune --ci
|
|
206
165
|
example-testing:
|
|
207
166
|
strategy:
|
|
208
167
|
fail-fast: false
|
|
@@ -228,22 +187,14 @@ jobs:
|
|
|
228
187
|
- name: install Just
|
|
229
188
|
uses: taiki-e/install-action@just
|
|
230
189
|
- name: Install uv
|
|
231
|
-
|
|
190
|
+
uses: astral-sh/setup-uv@v3
|
|
191
|
+
with:
|
|
192
|
+
enable-cache: true
|
|
232
193
|
- name: Set up Python
|
|
233
194
|
uses: actions/setup-python@v5
|
|
234
195
|
with:
|
|
235
196
|
python-version: "3.11"
|
|
236
|
-
- name: Restore uv cache
|
|
237
|
-
uses: actions/cache@v4
|
|
238
|
-
with:
|
|
239
|
-
path: ${{ env.UV_CACHE_DIR }}
|
|
240
|
-
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
241
|
-
restore-keys: |
|
|
242
|
-
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
|
|
243
|
-
uv-${{ runner.os }}
|
|
244
197
|
- name: Install Dependencies
|
|
245
198
|
run: just install
|
|
246
199
|
- name: Test Docs Build
|
|
247
200
|
run: just build-docs
|
|
248
|
-
- name: Minimize uv cache
|
|
249
|
-
run: uv cache prune --ci
|
|
@@ -9,12 +9,12 @@ repos:
|
|
|
9
9
|
- id: end-of-file-fixer
|
|
10
10
|
- id: trailing-whitespace
|
|
11
11
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
12
|
-
rev: v1.
|
|
12
|
+
rev: v1.13.0
|
|
13
13
|
hooks:
|
|
14
14
|
- id: mypy
|
|
15
|
-
additional_dependencies: [pydantic, types-aiofiles, types-ujson]
|
|
15
|
+
additional_dependencies: [pydantic, orjson, types-aiofiles, types-ujson]
|
|
16
16
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
17
|
-
rev: v0.
|
|
17
|
+
rev: v0.7.0
|
|
18
18
|
hooks:
|
|
19
19
|
- id: ruff
|
|
20
20
|
args: [--fix, --exit-non-zero-on-fix]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: meilisearch-python-sdk
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.6.0
|
|
4
4
|
Summary: A Python client providing both async and sync support for the Meilisearch API
|
|
5
5
|
Project-URL: repository, https://github.com/sanders41/meilisearch-python-sdk
|
|
6
6
|
Project-URL: homepage, https://github.com/sanders41/meilisearch-python-sdk
|
|
@@ -41,7 +41,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
41
41
|
Classifier: Typing :: Typed
|
|
42
42
|
Requires-Python: >=3.9
|
|
43
43
|
Requires-Dist: aiofiles>=0.7
|
|
44
|
-
Requires-Dist: camel-converter>=1.0.0
|
|
44
|
+
Requires-Dist: camel-converter[pydantic]>=1.0.0
|
|
45
45
|
Requires-Dist: eval-type-backport>=0.2.0; python_version < '3.10'
|
|
46
46
|
Requires-Dist: httpx[http2]>=0.17
|
|
47
47
|
Requires-Dist: pydantic>=2.0.0
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
services:
|
|
2
2
|
meilisearch:
|
|
3
|
-
image: getmeili/meilisearch:latest
|
|
3
|
+
# image: getmeili/meilisearch:latest
|
|
4
|
+
image: getmeili/meilisearch:v1
|
|
4
5
|
ports:
|
|
5
6
|
- "7700:7700"
|
|
6
7
|
environment:
|
|
@@ -9,4 +10,11 @@ services:
|
|
|
9
10
|
volumes:
|
|
10
11
|
- ./meilisearch.key:/meilisearch.key
|
|
11
12
|
- ./meilisearch.crt:/meilisearch.crt
|
|
12
|
-
command:
|
|
13
|
+
command:
|
|
14
|
+
[
|
|
15
|
+
"meilisearch",
|
|
16
|
+
"--ssl-cert-path",
|
|
17
|
+
"/meilisearch.crt",
|
|
18
|
+
"--ssl-key-path",
|
|
19
|
+
"/meilisearch.key",
|
|
20
|
+
]
|
|
@@ -18,23 +18,23 @@
|
|
|
18
18
|
@ruff-format:
|
|
19
19
|
uv run ruff format meilisearch_python_sdk tests examples
|
|
20
20
|
|
|
21
|
-
@test:
|
|
22
|
-
-uv run pytest
|
|
21
|
+
@test *args="":
|
|
22
|
+
-uv run pytest {{args}}
|
|
23
23
|
|
|
24
|
-
@test-http2:
|
|
25
|
-
-uv run pytest
|
|
24
|
+
@test-http2 *args="":
|
|
25
|
+
-uv run pytest --http2 {{args}}
|
|
26
26
|
|
|
27
|
-
@test-parallel:
|
|
28
|
-
-uv run pytest -n auto -
|
|
27
|
+
@test-parallel *args="":
|
|
28
|
+
-uv run pytest -n auto -m "not no_parallel" {{args}}
|
|
29
29
|
|
|
30
|
-
@test-no-parallel:
|
|
31
|
-
-uv run pytest -
|
|
30
|
+
@test-no-parallel *args="":
|
|
31
|
+
-uv run pytest -m "no_parallel" {{args}}
|
|
32
32
|
|
|
33
|
-
@test-parallel-http2:
|
|
34
|
-
-uv run pytest -n auto -
|
|
33
|
+
@test-parallel-http2 *args="":
|
|
34
|
+
-uv run pytest -n auto -m "not no_parallel" --http2 {{args}}
|
|
35
35
|
|
|
36
|
-
@test-no-parallel-http2:
|
|
37
|
-
-uv run pytest -
|
|
36
|
+
@test-no-parallel-http2 *args="":
|
|
37
|
+
-uv run pytest -m "no_parallel" --http2 {{args}}
|
|
38
38
|
|
|
39
39
|
@test-ci: start-meilisearch-detached && stop-meilisearch
|
|
40
40
|
uv run pytest --cov=meilisearch_python_sdk --cov-report=xml
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_client.py
RENAMED
|
@@ -24,6 +24,7 @@ from meilisearch_python_sdk.models.health import Health
|
|
|
24
24
|
from meilisearch_python_sdk.models.index import IndexInfo
|
|
25
25
|
from meilisearch_python_sdk.models.search import (
|
|
26
26
|
Federation,
|
|
27
|
+
FederationMerged,
|
|
27
28
|
SearchParams,
|
|
28
29
|
SearchResultsFederated,
|
|
29
30
|
SearchResultsWithUID,
|
|
@@ -587,7 +588,7 @@ class AsyncClient(BaseClient):
|
|
|
587
588
|
self,
|
|
588
589
|
queries: list[SearchParams],
|
|
589
590
|
*,
|
|
590
|
-
federation: Federation | None = None,
|
|
591
|
+
federation: Federation | FederationMerged | None = None,
|
|
591
592
|
hits_type: Any = JsonDict,
|
|
592
593
|
) -> list[SearchResultsWithUID] | SearchResultsFederated:
|
|
593
594
|
"""Multi-index search.
|
|
@@ -628,10 +629,18 @@ class AsyncClient(BaseClient):
|
|
|
628
629
|
else:
|
|
629
630
|
processed_queries = [x.model_dump(by_alias=True) for x in queries]
|
|
630
631
|
|
|
632
|
+
if federation:
|
|
633
|
+
federation_payload = federation.model_dump(by_alias=True)
|
|
634
|
+
if federation.facets_by_index is None:
|
|
635
|
+
del federation_payload["facetsByIndex"]
|
|
636
|
+
|
|
637
|
+
else:
|
|
638
|
+
federation_payload = None
|
|
639
|
+
|
|
631
640
|
response = await self._http_requests.post(
|
|
632
641
|
url,
|
|
633
642
|
body={
|
|
634
|
-
"federation":
|
|
643
|
+
"federation": federation_payload,
|
|
635
644
|
"queries": processed_queries,
|
|
636
645
|
},
|
|
637
646
|
)
|
|
@@ -1396,7 +1405,7 @@ class Client(BaseClient):
|
|
|
1396
1405
|
self,
|
|
1397
1406
|
queries: list[SearchParams],
|
|
1398
1407
|
*,
|
|
1399
|
-
federation: Federation | None = None,
|
|
1408
|
+
federation: Federation | FederationMerged | None = None,
|
|
1400
1409
|
hits_type: Any = JsonDict,
|
|
1401
1410
|
) -> list[SearchResultsWithUID] | SearchResultsFederated:
|
|
1402
1411
|
"""Multi-index search.
|
|
@@ -1437,10 +1446,18 @@ class Client(BaseClient):
|
|
|
1437
1446
|
else:
|
|
1438
1447
|
processed_queries = [x.model_dump(by_alias=True) for x in queries]
|
|
1439
1448
|
|
|
1449
|
+
if federation:
|
|
1450
|
+
federation_payload = federation.model_dump(by_alias=True)
|
|
1451
|
+
if federation.facets_by_index is None:
|
|
1452
|
+
del federation_payload["facetsByIndex"]
|
|
1453
|
+
|
|
1454
|
+
else:
|
|
1455
|
+
federation_payload = None
|
|
1456
|
+
|
|
1440
1457
|
response = self._http_requests.post(
|
|
1441
1458
|
url,
|
|
1442
1459
|
body={
|
|
1443
|
-
"federation":
|
|
1460
|
+
"federation": federation_payload,
|
|
1444
1461
|
"queries": processed_queries,
|
|
1445
1462
|
},
|
|
1446
1463
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "3.6.0"
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/index.py
RENAMED
|
@@ -3079,7 +3079,11 @@ class AsyncIndex(_BaseIndex):
|
|
|
3079
3079
|
>>> index = client.index("movies")
|
|
3080
3080
|
>>> await index.update_settings(new_settings)
|
|
3081
3081
|
"""
|
|
3082
|
-
body_dict = {
|
|
3082
|
+
body_dict = {
|
|
3083
|
+
k: v
|
|
3084
|
+
for k, v in body.model_dump(by_alias=True, exclude_none=True).items()
|
|
3085
|
+
if v is not None
|
|
3086
|
+
}
|
|
3083
3087
|
response = await self._http_requests.patch(self._settings_url, body_dict, compress=compress)
|
|
3084
3088
|
|
|
3085
3089
|
return TaskInfo(**response.json())
|
|
@@ -4270,7 +4274,9 @@ class AsyncIndex(_BaseIndex):
|
|
|
4270
4274
|
payload = {}
|
|
4271
4275
|
for key, embedder in embedders.embedders.items():
|
|
4272
4276
|
payload[key] = {
|
|
4273
|
-
k: v
|
|
4277
|
+
k: v
|
|
4278
|
+
for k, v in embedder.model_dump(by_alias=True, exclude_none=True).items()
|
|
4279
|
+
if v is not None
|
|
4274
4280
|
}
|
|
4275
4281
|
|
|
4276
4282
|
response = await self._http_requests.patch(
|
|
@@ -6498,7 +6504,11 @@ class Index(_BaseIndex):
|
|
|
6498
6504
|
>>> index = client.index("movies")
|
|
6499
6505
|
>>> index.update_settings(new_settings)
|
|
6500
6506
|
"""
|
|
6501
|
-
body_dict = {
|
|
6507
|
+
body_dict = {
|
|
6508
|
+
k: v
|
|
6509
|
+
for k, v in body.model_dump(by_alias=True, exclude_none=True).items()
|
|
6510
|
+
if v is not None
|
|
6511
|
+
}
|
|
6502
6512
|
response = self._http_requests.patch(self._settings_url, body_dict, compress=compress)
|
|
6503
6513
|
|
|
6504
6514
|
return TaskInfo(**response.json())
|
|
@@ -7672,7 +7682,9 @@ class Index(_BaseIndex):
|
|
|
7672
7682
|
payload = {}
|
|
7673
7683
|
for key, embedder in embedders.embedders.items():
|
|
7674
7684
|
payload[key] = {
|
|
7675
|
-
k: v
|
|
7685
|
+
k: v
|
|
7686
|
+
for k, v in embedder.model_dump(by_alias=True, exclude_none=True).items()
|
|
7687
|
+
if v is not None
|
|
7676
7688
|
}
|
|
7677
7689
|
|
|
7678
7690
|
response = self._http_requests.patch(
|
|
@@ -24,12 +24,24 @@ class FacetSearchResults(CamelBase):
|
|
|
24
24
|
|
|
25
25
|
class Hybrid(CamelBase):
|
|
26
26
|
semantic_ratio: float
|
|
27
|
-
embedder: str
|
|
27
|
+
embedder: str
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class MergeFacets(CamelBase):
|
|
31
|
+
max_values_per_facet: int
|
|
28
32
|
|
|
29
33
|
|
|
30
34
|
class Federation(CamelBase):
|
|
31
35
|
limit: int = 20
|
|
32
36
|
offset: int = 0
|
|
37
|
+
facets_by_index: dict[str, list[str]] | None = None
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class FederationMerged(CamelBase):
|
|
41
|
+
limit: int = 20
|
|
42
|
+
offset: int = 0
|
|
43
|
+
facets_by_index: dict[str, list[str]] | None = None
|
|
44
|
+
merge_facets: MergeFacets | None
|
|
33
45
|
|
|
34
46
|
|
|
35
47
|
class SearchParams(CamelBase):
|
|
@@ -99,6 +111,7 @@ class SearchResultsFederated(CamelBase, Generic[T]):
|
|
|
99
111
|
page: int | None = None
|
|
100
112
|
hits_per_page: int | None = None
|
|
101
113
|
semantic_hit_count: int | None = None
|
|
114
|
+
facets_by_index: JsonDict | None = None
|
|
102
115
|
|
|
103
116
|
|
|
104
117
|
class SimilarSearchResults(CamelBase, Generic[T]):
|
|
@@ -49,18 +49,20 @@ class Distribution(CamelBase):
|
|
|
49
49
|
class OpenAiEmbedder(CamelBase):
|
|
50
50
|
source: str = "openAi"
|
|
51
51
|
url: str | None = None
|
|
52
|
-
model: str | None = None
|
|
53
|
-
dimensions: int | None = None
|
|
54
|
-
api_key: str | None = None
|
|
52
|
+
model: str | None = None
|
|
53
|
+
dimensions: int | None = None
|
|
54
|
+
api_key: str | None = None
|
|
55
55
|
document_template: str | None = None
|
|
56
|
+
document_template_max_bytes: int | None = None
|
|
56
57
|
distribution: Distribution | None = None
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
class HuggingFaceEmbedder(CamelBase):
|
|
60
61
|
source: str = "huggingFace"
|
|
61
|
-
model: str | None = None
|
|
62
|
+
model: str | None = None
|
|
62
63
|
revision: str | None = None
|
|
63
64
|
document_template: str | None = None
|
|
65
|
+
document_template_max_bytes: int | None = None
|
|
64
66
|
distribution: Distribution | None = None
|
|
65
67
|
|
|
66
68
|
|
|
@@ -71,6 +73,7 @@ class OllamaEmbedder(CamelBase):
|
|
|
71
73
|
model: str
|
|
72
74
|
dimensions: int | None = None
|
|
73
75
|
document_template: str | None = None
|
|
76
|
+
document_template_max_bytes: int | None = None
|
|
74
77
|
distribution: Distribution | None = None
|
|
75
78
|
|
|
76
79
|
|
|
@@ -80,6 +83,7 @@ class RestEmbedder(CamelBase):
|
|
|
80
83
|
api_key: str | None = None
|
|
81
84
|
dimensions: int
|
|
82
85
|
document_template: str | None = None
|
|
86
|
+
document_template_max_bytes: int | None = None
|
|
83
87
|
distribution: Distribution | None = None
|
|
84
88
|
headers: JsonDict | None = None
|
|
85
89
|
request: JsonDict
|
|
@@ -25,7 +25,7 @@ classifiers=[
|
|
|
25
25
|
dynamic = ["version"]
|
|
26
26
|
dependencies = [
|
|
27
27
|
"aiofiles>=0.7",
|
|
28
|
-
"camel-converter>=1.0.0",
|
|
28
|
+
"camel-converter[pydantic]>=1.0.0",
|
|
29
29
|
# allows pydantic to use pipe instead of Union
|
|
30
30
|
"eval-type-backport>=0.2.0; python_version < '3.10'",
|
|
31
31
|
"httpx[http2]>=0.17",
|
|
@@ -38,12 +38,12 @@ orjson = ["orjson>=3.10.6"]
|
|
|
38
38
|
ujson = ["ujson>=5.10.0"]
|
|
39
39
|
all = ["orjson", "ujson"]
|
|
40
40
|
|
|
41
|
-
[
|
|
42
|
-
dev
|
|
41
|
+
[dependency-groups]
|
|
42
|
+
dev = [
|
|
43
43
|
"mkdocs==1.6.0",
|
|
44
44
|
"mkdocs-material==9.5.32",
|
|
45
45
|
"mkdocstrings[python]==0.25.2",
|
|
46
|
-
"mypy==1.
|
|
46
|
+
"mypy[faster-cache]==1.13.0",
|
|
47
47
|
"pre-commit==4.0.0",
|
|
48
48
|
"pytest==8.3.2",
|
|
49
49
|
"pytest-cov==5.0.0",
|
|
@@ -9,7 +9,13 @@ from camel_converter.pydantic_base import CamelBase
|
|
|
9
9
|
from meilisearch_python_sdk import AsyncClient
|
|
10
10
|
from meilisearch_python_sdk._task import async_wait_for_task
|
|
11
11
|
from meilisearch_python_sdk.errors import MeilisearchApiError, MeilisearchError
|
|
12
|
-
from meilisearch_python_sdk.models.search import
|
|
12
|
+
from meilisearch_python_sdk.models.search import (
|
|
13
|
+
Federation,
|
|
14
|
+
FederationMerged,
|
|
15
|
+
Hybrid,
|
|
16
|
+
MergeFacets,
|
|
17
|
+
SearchParams,
|
|
18
|
+
)
|
|
13
19
|
|
|
14
20
|
|
|
15
21
|
async def test_basic_search(async_index_with_documents):
|
|
@@ -395,6 +401,55 @@ async def test_multi_search_federated(async_client, async_index_with_documents,
|
|
|
395
401
|
assert "_federation" in response.hits[0]
|
|
396
402
|
|
|
397
403
|
|
|
404
|
+
async def test_multi_search_federated_facets_by_index(
|
|
405
|
+
async_client, async_index_with_documents, async_empty_index
|
|
406
|
+
):
|
|
407
|
+
index1 = await async_index_with_documents()
|
|
408
|
+
task = await index1.update_filterable_attributes(["title"])
|
|
409
|
+
await async_client.wait_for_task(task.task_uid)
|
|
410
|
+
index2 = await async_empty_index()
|
|
411
|
+
federation = Federation()
|
|
412
|
+
federation.facets_by_index = {index1.uid: ["title"]}
|
|
413
|
+
response = await async_client.multi_search(
|
|
414
|
+
[
|
|
415
|
+
SearchParams(index_uid=index1.uid, query="How to Train Your Dragon"),
|
|
416
|
+
SearchParams(index_uid=index2.uid, query=""),
|
|
417
|
+
],
|
|
418
|
+
federation=federation,
|
|
419
|
+
)
|
|
420
|
+
|
|
421
|
+
assert response.hits[0]["id"] == "166428"
|
|
422
|
+
assert "_formatted" not in response.hits[0]
|
|
423
|
+
assert "_federation" in response.hits[0]
|
|
424
|
+
assert response.facets_by_index is not None
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
async def test_multi_search_federated_merge_facets(
|
|
428
|
+
async_client,
|
|
429
|
+
async_index_with_documents,
|
|
430
|
+
async_empty_index,
|
|
431
|
+
):
|
|
432
|
+
index1 = await async_index_with_documents()
|
|
433
|
+
task = await index1.update_filterable_attributes(["title"])
|
|
434
|
+
await async_client.wait_for_task(task.task_uid)
|
|
435
|
+
index2 = await async_empty_index()
|
|
436
|
+
federation = FederationMerged(merge_facets=MergeFacets(max_values_per_facet=10))
|
|
437
|
+
federation.facets_by_index = {index1.uid: ["title"]}
|
|
438
|
+
response = await async_client.multi_search(
|
|
439
|
+
[
|
|
440
|
+
SearchParams(index_uid=index1.uid, query="How to Train Your Dragon"),
|
|
441
|
+
SearchParams(index_uid=index2.uid, query=""),
|
|
442
|
+
],
|
|
443
|
+
federation=federation,
|
|
444
|
+
)
|
|
445
|
+
|
|
446
|
+
assert response.hits[0]["id"] == "166428"
|
|
447
|
+
assert "_formatted" not in response.hits[0]
|
|
448
|
+
assert "_federation" in response.hits[0]
|
|
449
|
+
assert response.facets_by_index is None
|
|
450
|
+
assert response.facet_distribution is not None
|
|
451
|
+
|
|
452
|
+
|
|
398
453
|
async def test_multi_search_locales(async_client, async_index_with_documents, async_empty_index):
|
|
399
454
|
index1 = await async_index_with_documents()
|
|
400
455
|
index2 = await async_empty_index()
|
|
@@ -9,7 +9,13 @@ from camel_converter.pydantic_base import CamelBase
|
|
|
9
9
|
from meilisearch_python_sdk import Client
|
|
10
10
|
from meilisearch_python_sdk._task import wait_for_task
|
|
11
11
|
from meilisearch_python_sdk.errors import MeilisearchApiError, MeilisearchError
|
|
12
|
-
from meilisearch_python_sdk.models.search import
|
|
12
|
+
from meilisearch_python_sdk.models.search import (
|
|
13
|
+
Federation,
|
|
14
|
+
FederationMerged,
|
|
15
|
+
Hybrid,
|
|
16
|
+
MergeFacets,
|
|
17
|
+
SearchParams,
|
|
18
|
+
)
|
|
13
19
|
|
|
14
20
|
|
|
15
21
|
def test_basic_search(index_with_documents):
|
|
@@ -395,6 +401,32 @@ def test_multi_search_federated(client, index_with_documents, empty_index):
|
|
|
395
401
|
assert "_federation" in response.hits[0]
|
|
396
402
|
|
|
397
403
|
|
|
404
|
+
def test_multi_search_federated_merge_facets(
|
|
405
|
+
client,
|
|
406
|
+
index_with_documents,
|
|
407
|
+
empty_index,
|
|
408
|
+
):
|
|
409
|
+
index1 = index_with_documents()
|
|
410
|
+
task = index1.update_filterable_attributes(["title"])
|
|
411
|
+
client.wait_for_task(task.task_uid)
|
|
412
|
+
index2 = empty_index()
|
|
413
|
+
federation = FederationMerged(merge_facets=MergeFacets(max_values_per_facet=10))
|
|
414
|
+
federation.facets_by_index = {index1.uid: ["title"]}
|
|
415
|
+
response = client.multi_search(
|
|
416
|
+
[
|
|
417
|
+
SearchParams(index_uid=index1.uid, query="How to Train Your Dragon"),
|
|
418
|
+
SearchParams(index_uid=index2.uid, query=""),
|
|
419
|
+
],
|
|
420
|
+
federation=federation,
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
assert response.hits[0]["id"] == "166428"
|
|
424
|
+
assert "_formatted" not in response.hits[0]
|
|
425
|
+
assert "_federation" in response.hits[0]
|
|
426
|
+
assert response.facets_by_index is None
|
|
427
|
+
assert response.facet_distribution is not None
|
|
428
|
+
|
|
429
|
+
|
|
398
430
|
def test_multi_search_locales(client, index_with_documents, empty_index):
|
|
399
431
|
index1 = index_with_documents()
|
|
400
432
|
index2 = empty_index()
|
|
@@ -533,11 +533,11 @@ wheels = [
|
|
|
533
533
|
|
|
534
534
|
[[package]]
|
|
535
535
|
name = "meilisearch-python-sdk"
|
|
536
|
-
version = "3.5.
|
|
536
|
+
version = "3.5.1"
|
|
537
537
|
source = { editable = "." }
|
|
538
538
|
dependencies = [
|
|
539
539
|
{ name = "aiofiles" },
|
|
540
|
-
{ name = "camel-converter" },
|
|
540
|
+
{ name = "camel-converter", extra = ["pydantic"] },
|
|
541
541
|
{ name = "eval-type-backport", marker = "python_full_version < '3.10'" },
|
|
542
542
|
{ name = "httpx", extra = ["http2"] },
|
|
543
543
|
{ name = "pydantic" },
|
|
@@ -556,13 +556,13 @@ ujson = [
|
|
|
556
556
|
{ name = "ujson" },
|
|
557
557
|
]
|
|
558
558
|
|
|
559
|
-
[package.
|
|
559
|
+
[package.dependency-groups]
|
|
560
560
|
dev = [
|
|
561
561
|
{ name = "meilisearch" },
|
|
562
562
|
{ name = "mkdocs" },
|
|
563
563
|
{ name = "mkdocs-material" },
|
|
564
564
|
{ name = "mkdocstrings", extra = ["python"] },
|
|
565
|
-
{ name = "mypy" },
|
|
565
|
+
{ name = "mypy", extra = ["faster-cache"] },
|
|
566
566
|
{ name = "pre-commit" },
|
|
567
567
|
{ name = "pytest" },
|
|
568
568
|
{ name = "pytest-asyncio" },
|
|
@@ -578,7 +578,7 @@ dev = [
|
|
|
578
578
|
[package.metadata]
|
|
579
579
|
requires-dist = [
|
|
580
580
|
{ name = "aiofiles", specifier = ">=0.7" },
|
|
581
|
-
{ name = "camel-converter", specifier = ">=1.0.0" },
|
|
581
|
+
{ name = "camel-converter", extras = ["pydantic"], specifier = ">=1.0.0" },
|
|
582
582
|
{ name = "eval-type-backport", marker = "python_full_version < '3.10'", specifier = ">=0.2.0" },
|
|
583
583
|
{ name = "httpx", extras = ["http2"], specifier = ">=0.17" },
|
|
584
584
|
{ name = "orjson", marker = "extra == 'all'" },
|
|
@@ -589,13 +589,13 @@ requires-dist = [
|
|
|
589
589
|
{ name = "ujson", marker = "extra == 'ujson'", specifier = ">=5.10.0" },
|
|
590
590
|
]
|
|
591
591
|
|
|
592
|
-
[package.metadata.
|
|
592
|
+
[package.metadata.dependency-groups]
|
|
593
593
|
dev = [
|
|
594
594
|
{ name = "meilisearch", specifier = "==0.31.5" },
|
|
595
595
|
{ name = "mkdocs", specifier = "==1.6.0" },
|
|
596
596
|
{ name = "mkdocs-material", specifier = "==9.5.32" },
|
|
597
597
|
{ name = "mkdocstrings", extras = ["python"], specifier = "==0.25.2" },
|
|
598
|
-
{ name = "mypy", specifier = "==1.
|
|
598
|
+
{ name = "mypy", extras = ["faster-cache"], specifier = "==1.13.0" },
|
|
599
599
|
{ name = "pre-commit", specifier = "==4.0.0" },
|
|
600
600
|
{ name = "pytest", specifier = "==8.3.2" },
|
|
601
601
|
{ name = "pytest-asyncio", specifier = "==0.24.0" },
|
|
@@ -744,36 +744,46 @@ wheels = [
|
|
|
744
744
|
|
|
745
745
|
[[package]]
|
|
746
746
|
name = "mypy"
|
|
747
|
-
version = "1.
|
|
747
|
+
version = "1.13.0"
|
|
748
748
|
source = { registry = "https://pypi.org/simple" }
|
|
749
749
|
dependencies = [
|
|
750
750
|
{ name = "mypy-extensions" },
|
|
751
751
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
752
752
|
{ name = "typing-extensions" },
|
|
753
753
|
]
|
|
754
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
755
|
-
wheels = [
|
|
756
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
757
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
758
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
759
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
760
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
761
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
762
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
763
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
764
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
765
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
766
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
767
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
768
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
769
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
770
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
771
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
772
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
773
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
774
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
775
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
776
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
754
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e8/21/7e9e523537991d145ab8a0a2fd98548d67646dc2aaaf6091c31ad883e7c1/mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e", size = 3152532 }
|
|
755
|
+
wheels = [
|
|
756
|
+
{ url = "https://files.pythonhosted.org/packages/5e/8c/206de95a27722b5b5a8c85ba3100467bd86299d92a4f71c6b9aa448bfa2f/mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a", size = 11020731 },
|
|
757
|
+
{ url = "https://files.pythonhosted.org/packages/ab/bb/b31695a29eea76b1569fd28b4ab141a1adc9842edde080d1e8e1776862c7/mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80", size = 10184276 },
|
|
758
|
+
{ url = "https://files.pythonhosted.org/packages/a5/2d/4a23849729bb27934a0e079c9c1aad912167d875c7b070382a408d459651/mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7", size = 12587706 },
|
|
759
|
+
{ url = "https://files.pythonhosted.org/packages/5c/c3/d318e38ada50255e22e23353a469c791379825240e71b0ad03e76ca07ae6/mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f", size = 13105586 },
|
|
760
|
+
{ url = "https://files.pythonhosted.org/packages/4a/25/3918bc64952370c3dbdbd8c82c363804678127815febd2925b7273d9482c/mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372", size = 9632318 },
|
|
761
|
+
{ url = "https://files.pythonhosted.org/packages/d0/19/de0822609e5b93d02579075248c7aa6ceaddcea92f00bf4ea8e4c22e3598/mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d", size = 10939027 },
|
|
762
|
+
{ url = "https://files.pythonhosted.org/packages/c8/71/6950fcc6ca84179137e4cbf7cf41e6b68b4a339a1f5d3e954f8c34e02d66/mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d", size = 10108699 },
|
|
763
|
+
{ url = "https://files.pythonhosted.org/packages/26/50/29d3e7dd166e74dc13d46050b23f7d6d7533acf48f5217663a3719db024e/mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b", size = 12506263 },
|
|
764
|
+
{ url = "https://files.pythonhosted.org/packages/3f/1d/676e76f07f7d5ddcd4227af3938a9c9640f293b7d8a44dd4ff41d4db25c1/mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73", size = 12984688 },
|
|
765
|
+
{ url = "https://files.pythonhosted.org/packages/9c/03/5a85a30ae5407b1d28fab51bd3e2103e52ad0918d1e68f02a7778669a307/mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca", size = 9626811 },
|
|
766
|
+
{ url = "https://files.pythonhosted.org/packages/fb/31/c526a7bd2e5c710ae47717c7a5f53f616db6d9097caf48ad650581e81748/mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5", size = 11077900 },
|
|
767
|
+
{ url = "https://files.pythonhosted.org/packages/83/67/b7419c6b503679d10bd26fc67529bc6a1f7a5f220bbb9f292dc10d33352f/mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e", size = 10074818 },
|
|
768
|
+
{ url = "https://files.pythonhosted.org/packages/ba/07/37d67048786ae84e6612575e173d713c9a05d0ae495dde1e68d972207d98/mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2", size = 12589275 },
|
|
769
|
+
{ url = "https://files.pythonhosted.org/packages/1f/17/b1018c6bb3e9f1ce3956722b3bf91bff86c1cefccca71cec05eae49d6d41/mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0", size = 13037783 },
|
|
770
|
+
{ url = "https://files.pythonhosted.org/packages/cb/32/cd540755579e54a88099aee0287086d996f5a24281a673f78a0e14dba150/mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2", size = 9726197 },
|
|
771
|
+
{ url = "https://files.pythonhosted.org/packages/11/bb/ab4cfdc562cad80418f077d8be9b4491ee4fb257440da951b85cbb0a639e/mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7", size = 11069721 },
|
|
772
|
+
{ url = "https://files.pythonhosted.org/packages/59/3b/a393b1607cb749ea2c621def5ba8c58308ff05e30d9dbdc7c15028bca111/mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62", size = 10063996 },
|
|
773
|
+
{ url = "https://files.pythonhosted.org/packages/d1/1f/6b76be289a5a521bb1caedc1f08e76ff17ab59061007f201a8a18cc514d1/mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8", size = 12584043 },
|
|
774
|
+
{ url = "https://files.pythonhosted.org/packages/a6/83/5a85c9a5976c6f96e3a5a7591aa28b4a6ca3a07e9e5ba0cec090c8b596d6/mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7", size = 13036996 },
|
|
775
|
+
{ url = "https://files.pythonhosted.org/packages/b4/59/c39a6f752f1f893fccbcf1bdd2aca67c79c842402b5283563d006a67cf76/mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc", size = 9737709 },
|
|
776
|
+
{ url = "https://files.pythonhosted.org/packages/5f/d4/b33ddd40dad230efb317898a2d1c267c04edba73bc5086bf77edeb410fb2/mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc", size = 11013906 },
|
|
777
|
+
{ url = "https://files.pythonhosted.org/packages/f4/e6/f414bca465b44d01cd5f4a82761e15044bedd1bf8025c5af3cc64518fac5/mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732", size = 10180657 },
|
|
778
|
+
{ url = "https://files.pythonhosted.org/packages/38/e9/fc3865e417722f98d58409770be01afb961e2c1f99930659ff4ae7ca8b7e/mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc", size = 12586394 },
|
|
779
|
+
{ url = "https://files.pythonhosted.org/packages/2e/35/f4d8b6d2cb0b3dad63e96caf159419dda023f45a358c6c9ac582ccaee354/mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d", size = 13103591 },
|
|
780
|
+
{ url = "https://files.pythonhosted.org/packages/22/1d/80594aef135f921dd52e142fa0acd19df197690bd0cde42cea7b88cf5aa2/mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24", size = 9634690 },
|
|
781
|
+
{ url = "https://files.pythonhosted.org/packages/3b/86/72ce7f57431d87a7ff17d442f521146a6585019eb8f4f31b7c02801f78ad/mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a", size = 2647043 },
|
|
782
|
+
]
|
|
783
|
+
|
|
784
|
+
[package.optional-dependencies]
|
|
785
|
+
faster-cache = [
|
|
786
|
+
{ name = "orjson" },
|
|
777
787
|
]
|
|
778
788
|
|
|
779
789
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = "3.5.1"
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/.github/release-draft-template.yaml
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/add_documents_decorator.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/add_documents_in_batches.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/async_search_tracker.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/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
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/test_async_examples.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/examples/tests/test_examples.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_task.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/_utils.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/decorators.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/errors.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/json_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/index.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/models/task.py
RENAMED
|
File without changes
|
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/plugins.py
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/meilisearch_python_sdk/py.typed
RENAMED
|
File without changes
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/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
|
{meilisearch_python_sdk-3.5.1 → meilisearch_python_sdk-3.6.0}/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
|