Skip to content

Commit 3517ddc

Browse files
authored
refactor: add more precise type hints for Table.get (#602)
* Provide more precise type hints for Table.get * Provide even more precise type hints for Table.get The `doc_ids` branch always returns a list, never None. * Add type hint for invalid use of Table.get
1 parent 7ce065f commit 3517ddc

1 file changed

Lines changed: 42 additions & 2 deletions

File tree

tinydb/table.py

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
Iterator,
1111
List,
1212
Mapping,
13+
NoReturn,
1314
Optional,
1415
Union,
1516
cast,
16-
Tuple
17+
Tuple,
18+
overload
1719
)
1820

1921
from .queries import QueryLike
@@ -280,12 +282,50 @@ def search(self, cond: QueryLike) -> List[Document]:
280282

281283
return docs
282284

285+
@overload
286+
def get(self) -> NoReturn: ...
287+
288+
@overload
289+
def get(
290+
self, cond: QueryLike, doc_id: None = ..., doc_ids: None = ...
291+
) -> Optional[Document]: ...
292+
293+
@overload
294+
def get(
295+
self, *, cond: QueryLike, doc_id: None = ..., doc_ids: None = ...
296+
) -> Optional[Document]: ...
297+
298+
@overload
299+
def get(
300+
self, cond: Optional[QueryLike], doc_id: int, doc_ids: Optional[List] = ...
301+
) -> Optional[Document]: ...
302+
303+
@overload
304+
def get(
305+
self, *, cond: Optional[QueryLike] = ..., doc_id: int, doc_ids: Optional[List] = ...,
306+
) -> Optional[Document]: ...
307+
308+
@overload
309+
def get(
310+
self, cond: Optional[QueryLike], doc_id: None, doc_ids: List
311+
) -> List[Document]: ...
312+
313+
@overload
314+
def get(
315+
self, cond: Optional[QueryLike], *, doc_id: None = ..., doc_ids: List
316+
) -> List[Document]: ...
317+
318+
@overload
319+
def get(
320+
self, *, cond: Optional[QueryLike] = ..., doc_id: None = ..., doc_ids: List
321+
) -> List[Document]: ...
322+
283323
def get(
284324
self,
285325
cond: Optional[QueryLike] = None,
286326
doc_id: Optional[int] = None,
287327
doc_ids: Optional[List] = None
288-
) -> Optional[Union[Document, List[Document]]]:
328+
):
289329
"""
290330
Get exactly one document specified by a query or a document ID.
291331
However, if multiple document IDs are given then returns all

0 commit comments

Comments
 (0)