Skip to content

Commit 5dd994d

Browse files
committed
Merge remote-tracking branch 'upstream/main' into issue-884
2 parents 057e27a + fdd848a commit 5dd994d

File tree

7 files changed

+204
-193
lines changed

7 files changed

+204
-193
lines changed

Pipfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ types-requests = "*"
1515
black = "*"
1616
isort = "*"
1717
importlib_metadata = {version = "*", markers="python_version < '3.8'"}
18-
zipp = {version = "==3.16.2", markers="python_version < '3.8'"}
18+
zipp = {version = "==3.17.0", markers="python_version < '3.8'"}
1919
exceptiongroup = {version = "*", markers="python_version < '3.11'"}
2020
tomli = {version = "*", markers="python_version < '3.11'"}
2121
wrapt = {version = "*", markers="python_version < '3.11'"}

Pipfile.lock

Lines changed: 145 additions & 146 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

meilisearch/_httprequests.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import json
44
from functools import lru_cache
5-
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
5+
from typing import Any, Callable, List, Mapping, Optional, Sequence, Tuple, Union
66

77
import requests
88

@@ -27,7 +27,9 @@ def send_request(
2727
self,
2828
http_method: Callable,
2929
path: str,
30-
body: Optional[Union[Dict[str, Any], List[Dict[str, Any]], List[str], str]] = None,
30+
body: Optional[
31+
Union[Mapping[str, Any], Sequence[Mapping[str, Any]], List[str], str]
32+
] = None,
3133
content_type: Optional[str] = None,
3234
) -> Any:
3335
if content_type:
@@ -67,31 +69,37 @@ def get(self, path: str) -> Any:
6769
def post(
6870
self,
6971
path: str,
70-
body: Optional[Union[Dict[str, Any], List[Dict[str, Any]], List[str], str]] = None,
72+
body: Optional[
73+
Union[Mapping[str, Any], Sequence[Mapping[str, Any]], List[str], str]
74+
] = None,
7175
content_type: Optional[str] = "application/json",
7276
) -> Any:
7377
return self.send_request(requests.post, path, body, content_type)
7478

7579
def patch(
7680
self,
7781
path: str,
78-
body: Optional[Union[Dict[str, Any], List[Dict[str, Any]], List[str], str]] = None,
82+
body: Optional[
83+
Union[Mapping[str, Any], Sequence[Mapping[str, Any]], List[str], str]
84+
] = None,
7985
content_type: Optional[str] = "application/json",
8086
) -> Any:
8187
return self.send_request(requests.patch, path, body, content_type)
8288

8389
def put(
8490
self,
8591
path: str,
86-
body: Optional[Union[Dict[str, Any], List[Dict[str, Any]], List[str], str]] = None,
92+
body: Optional[
93+
Union[Mapping[str, Any], Sequence[Mapping[str, Any]], List[str], str]
94+
] = None,
8795
content_type: Optional[str] = "application/json",
8896
) -> Any:
8997
return self.send_request(requests.put, path, body, content_type)
9098

9199
def delete(
92100
self,
93101
path: str,
94-
body: Optional[Union[Dict[str, Any], List[Dict[str, Any]], List[str]]] = None,
102+
body: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]], List[str]]] = None,
95103
) -> Any:
96104
return self.send_request(requests.delete, path, body)
97105

meilisearch/client.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import hmac
99
import json
1010
import re
11-
from typing import Any, Dict, List, Optional, Tuple, Union
11+
from typing import Any, Dict, List, Mapping, MutableMapping, Optional, Sequence, Tuple, Union
1212
from urllib import parse
1313

1414
from meilisearch._httprequests import HttpRequests
@@ -55,7 +55,7 @@ def __init__(
5555

5656
self.task_handler = TaskHandler(self.config)
5757

58-
def create_index(self, uid: str, options: Optional[Dict[str, Any]] = None) -> TaskInfo:
58+
def create_index(self, uid: str, options: Optional[Mapping[str, Any]] = None) -> TaskInfo:
5959
"""Create an index.
6060
6161
Parameters
@@ -102,7 +102,7 @@ def delete_index(self, uid: str) -> TaskInfo:
102102

103103
return TaskInfo(**task)
104104

105-
def get_indexes(self, parameters: Optional[Dict[str, Any]] = None) -> Dict[str, List[Index]]:
105+
def get_indexes(self, parameters: Optional[Mapping[str, Any]] = None) -> Dict[str, List[Index]]:
106106
"""Get all indexes.
107107
108108
Parameters
@@ -135,7 +135,9 @@ def get_indexes(self, parameters: Optional[Dict[str, Any]] = None) -> Dict[str,
135135
]
136136
return response
137137

138-
def get_raw_indexes(self, parameters: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]:
138+
def get_raw_indexes(
139+
self, parameters: Optional[Mapping[str, Any]] = None
140+
) -> List[Dict[str, Any]]:
139141
"""Get all indexes in dictionary format.
140142
141143
Parameters
@@ -217,7 +219,7 @@ def index(self, uid: str) -> Index:
217219
return Index(self.config, uid=uid)
218220
raise ValueError("The index UID should not be None")
219221

220-
def multi_search(self, queries: List[Dict[str, Any]]) -> Dict[str, List[Dict[str, Any]]]:
222+
def multi_search(self, queries: Sequence[Mapping[str, Any]]) -> Dict[str, List[Dict[str, Any]]]:
221223
"""Multi-index search.
222224
223225
Parameters
@@ -305,7 +307,7 @@ def get_key(self, key_or_uid: str) -> Key:
305307

306308
return Key(**key)
307309

308-
def get_keys(self, parameters: Optional[Dict[str, Any]] = None) -> KeysResults:
310+
def get_keys(self, parameters: Optional[Mapping[str, Any]] = None) -> KeysResults:
309311
"""Gets the Meilisearch API keys.
310312
311313
Parameters
@@ -330,7 +332,7 @@ def get_keys(self, parameters: Optional[Dict[str, Any]] = None) -> KeysResults:
330332

331333
return KeysResults(**keys)
332334

333-
def create_key(self, options: Dict[str, Any]) -> Key:
335+
def create_key(self, options: Mapping[str, Any]) -> Key:
334336
"""Creates a new API key.
335337
336338
Parameters
@@ -357,7 +359,7 @@ def create_key(self, options: Dict[str, Any]) -> Key:
357359

358360
return Key(**task)
359361

360-
def update_key(self, key_or_uid: str, options: Dict[str, Any]) -> Key:
362+
def update_key(self, key_or_uid: str, options: Mapping[str, Any]) -> Key:
361363
"""Update an API key.
362364
363365
Parameters
@@ -473,7 +475,7 @@ def create_snapshot(self) -> TaskInfo:
473475

474476
return TaskInfo(**task)
475477

476-
def swap_indexes(self, parameters: List[Dict[str, List[str]]]) -> TaskInfo:
478+
def swap_indexes(self, parameters: List[Mapping[str, List[str]]]) -> TaskInfo:
477479
"""Swap two indexes.
478480
479481
Parameters
@@ -494,7 +496,7 @@ def swap_indexes(self, parameters: List[Dict[str, List[str]]]) -> TaskInfo:
494496
"""
495497
return TaskInfo(**self.http.post(self.config.paths.swap, parameters))
496498

497-
def get_tasks(self, parameters: Optional[Dict[str, Any]] = None) -> TaskResults:
499+
def get_tasks(self, parameters: Optional[MutableMapping[str, Any]] = None) -> TaskResults:
498500
"""Get all tasks.
499501
500502
Parameters
@@ -535,7 +537,7 @@ def get_task(self, uid: int) -> Task:
535537
"""
536538
return self.task_handler.get_task(uid)
537539

538-
def cancel_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
540+
def cancel_tasks(self, parameters: MutableMapping[str, Any]) -> TaskInfo:
539541
"""Cancel a list of enqueued or processing tasks.
540542
541543
Parameters
@@ -556,7 +558,7 @@ def cancel_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
556558
"""
557559
return self.task_handler.cancel_tasks(parameters=parameters)
558560

559-
def delete_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
561+
def delete_tasks(self, parameters: MutableMapping[str, Any]) -> TaskInfo:
560562
"""Delete a list of finished tasks.
561563
562564
Parameters
@@ -607,7 +609,7 @@ def wait_for_task(
607609
def generate_tenant_token(
608610
self,
609611
api_key_uid: str,
610-
search_rules: Union[Dict[str, Any], List[str]],
612+
search_rules: Union[Mapping[str, Any], Sequence[str]],
611613
*,
612614
expires_at: Optional[datetime.datetime] = None,
613615
api_key: Optional[str] = None,

meilisearch/index.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from datetime import datetime
4-
from typing import Any, Dict, Generator, List, Optional, Union
4+
from typing import Any, Dict, Generator, List, Mapping, MutableMapping, Optional, Sequence, Union
55
from urllib import parse
66
from warnings import warn
77

@@ -118,7 +118,7 @@ def get_primary_key(self) -> str | None:
118118
return self.fetch_info().primary_key
119119

120120
@staticmethod
121-
def create(config: Config, uid: str, options: Optional[Dict[str, Any]] = None) -> TaskInfo:
121+
def create(config: Config, uid: str, options: Optional[Mapping[str, Any]] = None) -> TaskInfo:
122122
"""Create the index.
123123
124124
Parameters
@@ -146,7 +146,7 @@ def create(config: Config, uid: str, options: Optional[Dict[str, Any]] = None) -
146146

147147
return TaskInfo(**task)
148148

149-
def get_tasks(self, parameters: Optional[Dict[str, Any]] = None) -> TaskResults:
149+
def get_tasks(self, parameters: Optional[MutableMapping[str, Any]] = None) -> TaskResults:
150150
"""Get all tasks of a specific index from the last one.
151151
152152
Parameters
@@ -244,7 +244,7 @@ def get_stats(self) -> IndexStats:
244244
return IndexStats(stats)
245245

246246
@version_error_hint_message
247-
def search(self, query: str, opt_params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
247+
def search(self, query: str, opt_params: Optional[Mapping[str, Any]] = None) -> Dict[str, Any]:
248248
"""Search in the index.
249249
250250
Parameters
@@ -284,7 +284,7 @@ def facet_search(
284284
self,
285285
facet_name: str,
286286
facet_query: Optional[str] = None,
287-
opt_params: Optional[Dict[str, Any]] = None,
287+
opt_params: Optional[Mapping[str, Any]] = None,
288288
) -> Dict[str, Any]:
289289
"""
290290
Perform a facet search based on the given facet query and facet name.
@@ -313,7 +313,7 @@ def facet_search(
313313
)
314314

315315
def get_document(
316-
self, document_id: Union[str, int], parameters: Optional[Dict[str, Any]] = None
316+
self, document_id: Union[str, int], parameters: Optional[MutableMapping[str, Any]] = None
317317
) -> Document:
318318
"""Get one document with given document identifier.
319319
@@ -345,7 +345,9 @@ def get_document(
345345
return Document(document)
346346

347347
@version_error_hint_message
348-
def get_documents(self, parameters: Optional[Dict[str, Any]] = None) -> DocumentsResults:
348+
def get_documents(
349+
self, parameters: Optional[MutableMapping[str, Any]] = None
350+
) -> DocumentsResults:
349351
"""Get a set of documents from the index.
350352
351353
Parameters
@@ -387,7 +389,7 @@ def get_documents(self, parameters: Optional[Dict[str, Any]] = None) -> Document
387389

388390
def add_documents(
389391
self,
390-
documents: List[Dict[str, Any]],
392+
documents: Sequence[Mapping[str, Any]],
391393
primary_key: Optional[str] = None,
392394
) -> TaskInfo:
393395
"""Add documents to the index.
@@ -416,7 +418,7 @@ def add_documents(
416418

417419
def add_documents_in_batches(
418420
self,
419-
documents: List[Dict[str, Any]],
421+
documents: Sequence[Mapping[str, Any]],
420422
batch_size: int = 1000,
421423
primary_key: Optional[str] = None,
422424
) -> List[TaskInfo]:
@@ -573,7 +575,7 @@ def add_documents_raw(
573575
return TaskInfo(**response)
574576

575577
def update_documents(
576-
self, documents: List[Dict[str, Any]], primary_key: Optional[str] = None
578+
self, documents: Sequence[Mapping[str, Any]], primary_key: Optional[str] = None
577579
) -> TaskInfo:
578580
"""Update documents in the index.
579581
@@ -721,7 +723,7 @@ def update_documents_raw(
721723

722724
def update_documents_in_batches(
723725
self,
724-
documents: List[Dict[str, Any]],
726+
documents: Sequence[Mapping[str, Any]],
725727
batch_size: int = 1000,
726728
primary_key: Optional[str] = None,
727729
) -> List[TaskInfo]:
@@ -865,7 +867,7 @@ def get_settings(self) -> Dict[str, Any]:
865867
"""
866868
return self.http.get(f"{self.config.paths.index}/{self.uid}/{self.config.paths.setting}")
867869

868-
def update_settings(self, body: Dict[str, Any]) -> TaskInfo:
870+
def update_settings(self, body: Mapping[str, Any]) -> TaskInfo:
869871
"""Update settings of the index.
870872
871873
https://www.meilisearch.com/docs/reference/api/settings#update-settings
@@ -1413,7 +1415,7 @@ def get_typo_tolerance(self) -> TypoTolerance:
14131415

14141416
return TypoTolerance(**typo_tolerance)
14151417

1416-
def update_typo_tolerance(self, body: Union[Dict[str, Any], None]) -> TaskInfo:
1418+
def update_typo_tolerance(self, body: Union[Mapping[str, Any], None]) -> TaskInfo:
14171419
"""Update typo tolerance of the index.
14181420
14191421
Parameters
@@ -1535,7 +1537,7 @@ def get_faceting_settings(self) -> Faceting:
15351537

15361538
return Faceting(**faceting)
15371539

1538-
def update_faceting_settings(self, body: Union[Dict[str, Any], None]) -> TaskInfo:
1540+
def update_faceting_settings(self, body: Union[Mapping[str, Any], None]) -> TaskInfo:
15391541
"""Update the faceting settings of the index.
15401542
15411543
Parameters
@@ -1757,8 +1759,8 @@ def reset_non_separator_tokens(self) -> TaskInfo:
17571759

17581760
@staticmethod
17591761
def _batch(
1760-
documents: List[Dict[str, Any]], batch_size: int
1761-
) -> Generator[List[Dict[str, Any]], None, None]:
1762+
documents: Sequence[Mapping[str, Any]], batch_size: int
1763+
) -> Generator[Sequence[Mapping[str, Any]], None, None]:
17621764
total_len = len(documents)
17631765
for i in range(0, total_len, batch_size):
17641766
yield documents[i : i + batch_size]

meilisearch/models/task.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111

1212
class Task(CamelBase):
1313
uid: int
14-
index_uid: Union[str, None]
14+
index_uid: Union[str, None] = None
1515
status: str
1616
type: str
17-
details: Union[Dict[str, Any], None]
18-
error: Union[Dict[str, Any], None]
19-
canceled_by: Union[int, None]
20-
duration: Optional[str]
17+
details: Union[Dict[str, Any], None] = None
18+
error: Union[Dict[str, Any], None] = None
19+
canceled_by: Union[int, None] = None
20+
duration: Optional[str] = None
2121
enqueued_at: datetime
22-
started_at: Optional[datetime]
23-
finished_at: Optional[datetime]
22+
started_at: Optional[datetime] = None
23+
finished_at: Optional[datetime] = None
2424

2525
if is_pydantic_2():
2626

meilisearch/task.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from datetime import datetime
44
from time import sleep
5-
from typing import Any, Dict, Optional
5+
from typing import Any, MutableMapping, Optional
66
from urllib import parse
77

88
from meilisearch._httprequests import HttpRequests
@@ -27,7 +27,7 @@ def __init__(self, config: Config):
2727
self.config = config
2828
self.http = HttpRequests(config)
2929

30-
def get_tasks(self, parameters: Optional[Dict[str, Any]] = None) -> TaskResults:
30+
def get_tasks(self, parameters: Optional[MutableMapping[str, Any]] = None) -> TaskResults:
3131
"""Get all tasks.
3232
3333
Parameters
@@ -75,7 +75,7 @@ def get_task(self, uid: int) -> Task:
7575
task = self.http.get(f"{self.config.paths.task}/{uid}")
7676
return Task(**task)
7777

78-
def cancel_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
78+
def cancel_tasks(self, parameters: MutableMapping[str, Any]) -> TaskInfo:
7979
"""Cancel a list of enqueued or processing tasks.
8080
8181
Parameters
@@ -100,7 +100,7 @@ def cancel_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
100100
response = self.http.post(f"{self.config.paths.task}/cancel?{parse.urlencode(parameters)}")
101101
return TaskInfo(**response)
102102

103-
def delete_tasks(self, parameters: Dict[str, Any]) -> TaskInfo:
103+
def delete_tasks(self, parameters: MutableMapping[str, Any]) -> TaskInfo:
104104
"""Delete a list of enqueued or processing tasks.
105105
Parameters
106106
----------

0 commit comments

Comments
 (0)