55This is an internal API not covered by versioning policy.
66"""
77
8+ from __future__ import annotations
9+
810import logging
911import re
1012import traceback
@@ -20,8 +22,8 @@ class LookupProtocol(t.Protocol):
2022
2123 def __call__ (
2224 self ,
23- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
24- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
25+ data : str | list [str ] | Mapping [str , str ],
26+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
2527 ) -> bool :
2628 """Return callback for :class:`QueryList` filtering operators."""
2729 ...
@@ -41,9 +43,9 @@ class ObjectDoesNotExist(Exception):
4143
4244
4345def keygetter (
44- obj : " Mapping[str, t.Any]" ,
46+ obj : Mapping [str , t .Any ],
4547 path : str ,
46- ) -> t . Union [ None , t .Any , str , list [str ], " Mapping[str, str]" ]:
48+ ) -> None | t .Any | str | list [str ] | Mapping [str , str ]:
4749 """Fetch values in objects and keys, supported nested data.
4850
4951 **With dictionaries**:
@@ -112,10 +114,10 @@ def keygetter(
112114
113115
114116def parse_lookup (
115- obj : " Mapping[str, t.Any]" ,
117+ obj : Mapping [str , t .Any ],
116118 path : str ,
117119 lookup : str ,
118- ) -> t .Optional [ t . Any ] :
120+ ) -> t .Any | None :
119121 """Check if field lookup key, e.g. "my__path__contains" has comparator, return val.
120122
121123 If comparator not used or value not found, return None.
@@ -151,15 +153,15 @@ def parse_lookup(
151153
152154
153155def lookup_exact (
154- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
155- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
156+ data : str | list [str ] | Mapping [str , str ],
157+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
156158) -> bool :
157159 return rhs == data
158160
159161
160162def lookup_iexact (
161- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
162- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
163+ data : str | list [str ] | Mapping [str , str ],
164+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
163165) -> bool :
164166 if not isinstance (rhs , str ) or not isinstance (data , str ):
165167 return False
@@ -168,8 +170,8 @@ def lookup_iexact(
168170
169171
170172def lookup_contains (
171- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
172- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
173+ data : str | list [str ] | Mapping [str , str ],
174+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
173175) -> bool :
174176 if not isinstance (rhs , str ) or not isinstance (data , (str , Mapping , list )):
175177 return False
@@ -178,8 +180,8 @@ def lookup_contains(
178180
179181
180182def lookup_icontains (
181- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
182- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
183+ data : str | list [str ] | Mapping [str , str ],
184+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
183185) -> bool :
184186 if not isinstance (rhs , str ) or not isinstance (data , (str , Mapping , list )):
185187 return False
@@ -193,8 +195,8 @@ def lookup_icontains(
193195
194196
195197def lookup_startswith (
196- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
197- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
198+ data : str | list [str ] | Mapping [str , str ],
199+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
198200) -> bool :
199201 if not isinstance (rhs , str ) or not isinstance (data , str ):
200202 return False
@@ -203,8 +205,8 @@ def lookup_startswith(
203205
204206
205207def lookup_istartswith (
206- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
207- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
208+ data : str | list [str ] | Mapping [str , str ],
209+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
208210) -> bool :
209211 if not isinstance (rhs , str ) or not isinstance (data , str ):
210212 return False
@@ -213,8 +215,8 @@ def lookup_istartswith(
213215
214216
215217def lookup_endswith (
216- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
217- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
218+ data : str | list [str ] | Mapping [str , str ],
219+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
218220) -> bool :
219221 if not isinstance (rhs , str ) or not isinstance (data , str ):
220222 return False
@@ -223,17 +225,17 @@ def lookup_endswith(
223225
224226
225227def lookup_iendswith (
226- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
227- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
228+ data : str | list [str ] | Mapping [str , str ],
229+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
228230) -> bool :
229231 if not isinstance (rhs , str ) or not isinstance (data , str ):
230232 return False
231233 return data .lower ().endswith (rhs .lower ())
232234
233235
234236def lookup_in (
235- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
236- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
237+ data : str | list [str ] | Mapping [str , str ],
238+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
237239) -> bool :
238240 if isinstance (rhs , list ):
239241 return data in rhs
@@ -254,8 +256,8 @@ def lookup_in(
254256
255257
256258def lookup_nin (
257- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
258- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
259+ data : str | list [str ] | Mapping [str , str ],
260+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
259261) -> bool :
260262 if isinstance (rhs , list ):
261263 return data not in rhs
@@ -276,24 +278,24 @@ def lookup_nin(
276278
277279
278280def lookup_regex (
279- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
280- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
281+ data : str | list [str ] | Mapping [str , str ],
282+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
281283) -> bool :
282284 if isinstance (data , (str , bytes , re .Pattern )) and isinstance (rhs , (str , bytes )):
283285 return bool (re .search (rhs , data ))
284286 return False
285287
286288
287289def lookup_iregex (
288- data : t . Union [ str , list [str ], " Mapping[str, str]" ],
289- rhs : t . Union [ str , list [str ], " Mapping[str, str]" , " re.Pattern[str]" ],
290+ data : str | list [str ] | Mapping [str , str ],
291+ rhs : str | list [str ] | Mapping [str , str ] | re .Pattern [str ],
290292) -> bool :
291293 if isinstance (data , (str , bytes , re .Pattern )) and isinstance (rhs , (str , bytes )):
292294 return bool (re .search (rhs , data , re .IGNORECASE ))
293295 return False
294296
295297
296- LOOKUP_NAME_MAP : ' Mapping[str, " LookupProtocol"]' = {
298+ LOOKUP_NAME_MAP : Mapping [str , LookupProtocol ] = {
297299 "eq" : lookup_exact ,
298300 "exact" : lookup_exact ,
299301 "iexact" : lookup_iexact ,
@@ -469,10 +471,10 @@ class QueryList(list[T], t.Generic[T]):
469471 []
470472 """
471473
472- data : " Sequence[T]"
473- pk_key : t . Optional [ str ]
474+ data : Sequence [T ]
475+ pk_key : str | None
474476
475- def __init__ (self , items : t . Optional [ " Iterable[T]" ] = None ) -> None :
477+ def __init__ (self , items : Iterable [T ] | None = None ) -> None :
476478 super ().__init__ (items if items is not None else [])
477479
478480 def items (self ) -> list [tuple [str , T ]]:
@@ -505,9 +507,9 @@ def __eq__(
505507
506508 def filter (
507509 self ,
508- matcher : t . Optional [ t . Union [ Callable [[T ], bool ], T ]] = None ,
510+ matcher : Callable [[T ], bool ] | T | None = None ,
509511 ** kwargs : t .Any ,
510- ) -> " QueryList[T]" :
512+ ) -> QueryList [T ]:
511513 """Filter list of objects."""
512514
513515 def filter_lookup (obj : t .Any ) -> bool :
@@ -534,7 +536,7 @@ def filter_lookup(obj: t.Any) -> bool:
534536 filter_ = matcher
535537 elif matcher is not None :
536538
537- def val_match (obj : t . Union [ str , list [t .Any ], T ] ) -> bool :
539+ def val_match (obj : str | list [t .Any ] | T ) -> bool :
538540 if isinstance (matcher , list ):
539541 return obj in matcher
540542 return bool (obj == matcher )
@@ -547,10 +549,10 @@ def val_match(obj: t.Union[str, list[t.Any], T]) -> bool:
547549
548550 def get (
549551 self ,
550- matcher : t . Optional [ t . Union [ Callable [[T ], bool ], T ]] = None ,
551- default : t .Optional [ t . Any ] = no_arg ,
552+ matcher : Callable [[T ], bool ] | T | None = None ,
553+ default : t .Any | None = no_arg ,
552554 ** kwargs : t .Any ,
553- ) -> t . Optional [ T ] :
555+ ) -> T | None :
554556 """Retrieve one object.
555557
556558 Raises :exc:`MultipleObjectsReturned` if multiple objects found.
0 commit comments