2023.4 #168
@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional, Callable, Union, Iterable, Self
|
||||
from typing import Optional, Callable, Union, Iterable, Self, Any
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from cpl_query._helper import is_number
|
||||
@ -378,7 +378,10 @@ class QueryableABC(Sequence):
|
||||
if _func is None:
|
||||
_func = _default_lambda
|
||||
|
||||
return type(self)(object, [_func(_o) for _o in self])
|
||||
_l = [_func(_o) for _o in self]
|
||||
_t = type(_l[0]) if len(_l) > 0 else Any
|
||||
|
||||
return type(self)(_t, _l)
|
||||
|
||||
def select_many(self, _func: Callable) -> Self:
|
||||
r"""Flattens resulting lists to one
|
||||
|
@ -25,7 +25,7 @@ class Sequence(ABC):
|
||||
return self.to_list().__len__()
|
||||
|
||||
@classmethod
|
||||
def __class_getitem__(cls, _t: type):
|
||||
def __class_getitem__(cls, _t: type) -> type:
|
||||
return _t
|
||||
|
||||
def __repr__(self):
|
||||
|
@ -270,6 +270,12 @@ class IterableQueryTestCase(unittest.TestCase):
|
||||
self.assertEqual(res.to_list(), l_res)
|
||||
|
||||
def test_select(self):
|
||||
def test(_l: List) -> List[int]:
|
||||
return _l.select(lambda user: user.address.nr)
|
||||
|
||||
self.assertEqual(List[User], self._tests.type)
|
||||
self.assertEqual(List[int], test(self._tests).type)
|
||||
|
||||
range_list = List(int, range(0, 100))
|
||||
selected_range = range_list.select(lambda x: x + 1)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user