From: Violet Folino Gallo <48537601+galloviolet@users.noreply.github.com> Date: Wed, 9 Jul 2025 22:07:24 +0000 (-0700) Subject: make linter happy X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=897929e75919cbfde61793ef681ae093841171f1;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git make linter happy --- diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index 1e1b26e863..91fb2e5b66 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -4231,7 +4231,9 @@ class Over(ColumnElement[_T]): element: ColumnElement[_T], partition_by: Optional[_ByArgument] = None, order_by: Optional[_ByArgument] = None, - range_: Optional[typing_Tuple[Optional[typing.Any], Optional[typing.Any]]] = None, + range_: Optional[ + typing_Tuple[Optional[typing.Any], Optional[typing.Any]] + ] = None, rows: Optional[typing_Tuple[Optional[int], Optional[int]]] = None, groups: Optional[typing_Tuple[Optional[int], Optional[int]]] = None, ): @@ -4252,8 +4254,8 @@ class Over(ColumnElement[_T]): ) else: self.range_ = _FrameClause(range_) if range_ else None - self.rows = _FrameClause(self._interpret_int_range(rows)) if rows else None - self.groups = _FrameClause(self._interpret_int_range(groups)) if groups else None + self.rows = self._interpret_int_range(rows) + self.groups = self._interpret_int_range(groups) if not TYPE_CHECKING: @@ -4272,15 +4274,18 @@ class Over(ColumnElement[_T]): ] ) ) - + def _interpret_int_range(self, rows): + if rows is None: + return None try: lower = rows[0] if rows[0] is None else int(rows[0]) upper = rows[1] if rows[1] is None else int(rows[1]) except ValueError as ve: - raise exc.ArgumentError("Integer or None expected for rows value and groups value") from ve + err = "Integer or None expected for rows value and groups value" + raise exc.ArgumentError(err) from ve - return lower, upper + return _FrameClause((lower, upper)) class _FrameClauseType(Enum): @@ -4315,9 +4320,15 @@ class _FrameClause(ClauseElement): lower_value, upper_value = range_ except (ValueError, TypeError) as ve: raise exc.ArgumentError("2-tuple expected for range/rows") from ve - - lower_type = type_api.INTEGERTYPE if isinstance(lower_value, int) else type_api.NUMERICTYPE - upper_type = type_api.INTEGERTYPE if isinstance(upper_value, int) else type_api.NUMERICTYPE + + if isinstance(lower_value, int): + lower_type = type_api.INTEGERTYPE + else: + lower_type = type_api.NUMERICTYPE + if isinstance(upper_value, int): + upper_type = type_api.INTEGERTYPE + else: + upper_type = type_api.NUMERICTYPE if lower_value is None: self.lower_type = _FrameClauseType.RANGE_UNBOUNDED diff --git a/lib/sqlalchemy/testing/suite/test_select.py b/lib/sqlalchemy/testing/suite/test_select.py index c54bc20d3a..0b55a57c13 100644 --- a/lib/sqlalchemy/testing/suite/test_select.py +++ b/lib/sqlalchemy/testing/suite/test_select.py @@ -25,6 +25,7 @@ from ... import column from ... import Computed from ... import exists from ... import false +from ... import Float from ... import ForeignKey from ... import func from ... import Identity @@ -42,7 +43,6 @@ from ... import tuple_ from ... import TupleType from ... import union from ... import values -from ... import Float from ...exc import DatabaseError from ...exc import ProgrammingError @@ -1919,9 +1919,16 @@ class WindowFunctionTest(fixtures.TablesTest): @classmethod def insert_data(cls, connection): + def row_factory(i): + return { + "id": i, + "col1": i, + "col2": i * 5, + "col3": i + 0.5, + } connection.execute( cls.tables.some_table.insert(), - [{"id": i, "col1": i, "col2": i * 5, "col3": i + 0.5} for i in range(1, 50)], + [row_factory(i) for i in range(1, 50)], ) def test_window(self, connection):