#161 #162
| @@ -1,6 +1,6 @@ | |||||||
| from __future__ import annotations | 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 typing import TYPE_CHECKING | ||||||
|  |  | ||||||
| from cpl_query._helper import is_number | from cpl_query._helper import is_number | ||||||
| @@ -378,7 +378,10 @@ class QueryableABC(Sequence): | |||||||
|         if _func is None: |         if _func is None: | ||||||
|             _func = _default_lambda |             _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: |     def select_many(self, _func: Callable) -> Self: | ||||||
|         r"""Flattens resulting lists to one |         r"""Flattens resulting lists to one | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ class Sequence(ABC): | |||||||
|         return self.to_list().__len__() |         return self.to_list().__len__() | ||||||
|  |  | ||||||
|     @classmethod |     @classmethod | ||||||
|     def __class_getitem__(cls, _t: type): |     def __class_getitem__(cls, _t: type) -> type: | ||||||
|         return _t |         return _t | ||||||
|  |  | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|   | |||||||
| @@ -270,6 +270,12 @@ class IterableQueryTestCase(unittest.TestCase): | |||||||
|         self.assertEqual(res.to_list(), l_res) |         self.assertEqual(res.to_list(), l_res) | ||||||
|  |  | ||||||
|     def test_select(self): |     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)) |         range_list = List(int, range(0, 100)) | ||||||
|         selected_range = range_list.select(lambda x: x + 1) |         selected_range = range_list.select(lambda x: x + 1) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user