diff --git a/src/cpl_query/base/ordered_queryable.py b/src/cpl_query/base/ordered_queryable.py index 96453089..2bc18bf4 100644 --- a/src/cpl_query/base/ordered_queryable.py +++ b/src/cpl_query/base/ordered_queryable.py @@ -1,4 +1,5 @@ from collections.abc import Callable +from typing import Self from cpl_query.base.ordered_queryable_abc import OrderedQueryableABC from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument @@ -6,12 +7,12 @@ from cpl_query.iterable.iterable import Iterable class OrderedQueryable(OrderedQueryableABC): - r"""Implementation of :class: `cpl_query.extension.Iterable` `cpl_query.extension.OrderedIterableABC`""" + r"""Implementation of :class: `cpl_query.base.ordered_queryable_abc.OrderedQueryableABC`""" def __init__(self, _t: type, _values: Iterable = None, _func: Callable = None): OrderedQueryableABC.__init__(self, _t, _values, _func) - def then_by(self: OrderedQueryableABC, _func: Callable) -> OrderedQueryableABC: + def then_by(self, _func: Callable) -> Self: if self is None: raise ArgumentNoneException(ExceptionArgument.list) @@ -22,7 +23,7 @@ class OrderedQueryable(OrderedQueryableABC): return OrderedQueryable(self.type, sorted(self, key=lambda *args: [f(*args) for f in self._funcs]), _func) - def then_by_descending(self: OrderedQueryableABC, _func: Callable) -> OrderedQueryableABC: + def then_by_descending(self, _func: Callable) -> Self: if self is None: raise ArgumentNoneException(ExceptionArgument.list) diff --git a/src/cpl_query/base/queryable_abc.py b/src/cpl_query/base/queryable_abc.py index 3a80449c..578c3c53 100644 --- a/src/cpl_query/base/queryable_abc.py +++ b/src/cpl_query/base/queryable_abc.py @@ -1,6 +1,12 @@ +from __future__ import annotations + from typing import Optional, Callable, Union, Iterable, Self +from typing import TYPE_CHECKING from cpl_query._helper import is_number + +if TYPE_CHECKING: + from cpl_query.base.ordered_queryable_abc import OrderedQueryableABC from cpl_query.base.sequence import Sequence from cpl_query.exceptions import ( InvalidTypeException, @@ -315,7 +321,7 @@ class QueryableABC(Sequence): return _func(min(self, key=_func)) - def order_by(self, _func: Callable = None) -> "OrderedQueryableABC": + def order_by(self, _func: Callable = None) -> OrderedQueryableABC: r"""Sorts elements by function in ascending order Parameter diff --git a/unittests/unittests_query/iterable_query_test_case.py b/unittests/unittests_query/iterable_query_test_case.py index 2b44c25e..71f2e6eb 100644 --- a/unittests/unittests_query/iterable_query_test_case.py +++ b/unittests/unittests_query/iterable_query_test_case.py @@ -251,6 +251,8 @@ class IterableQueryTestCase(unittest.TestCase): self.assertEqual(res, s_res) def test_then_by_descending(self): + x = List(int, List.range(1, 10)).order_by(lambda x: x).th + res = ( self._tests.order_by_descending(lambda user: user.address.street) .then_by_descending(lambda user: user.address.nr)