From: Federico Caselli Date: Mon, 6 Nov 2023 21:59:45 +0000 (+0100) Subject: Enforce positional only attribute using / X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=416c5787b6177d9503b26aa3da4e9284537eaa0a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Enforce positional only attribute using / Change-Id: Ia73c5b0a2d2a23ed2cf80154fbfb476f4dc84b5f --- diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index 31df134534..3cca0ba728 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -1701,18 +1701,18 @@ class _AssociationDict(_AssociationCollection[_VT], MutableMapping[_KT, _VT]): return repr(dict(self)) @overload - def get(self, __key: _KT) -> Optional[_VT]: + def get(self, __key: _KT, /) -> Optional[_VT]: ... @overload - def get(self, __key: _KT, default: Union[_VT, _T]) -> Union[_VT, _T]: + def get(self, __key: _KT, /, default: Union[_VT, _T]) -> Union[_VT, _T]: ... def get( - self, key: _KT, default: Optional[Union[_VT, _T]] = None + self, __key: _KT, /, default: Optional[Union[_VT, _T]] = None ) -> Union[_VT, _T, None]: try: - return self[key] + return self[__key] except KeyError: return default @@ -1738,14 +1738,16 @@ class _AssociationDict(_AssociationCollection[_VT], MutableMapping[_KT, _VT]): return ValuesView(self) @overload - def pop(self, __key: _KT) -> _VT: + def pop(self, __key: _KT, /) -> _VT: ... @overload - def pop(self, __key: _KT, default: Union[_VT, _T] = ...) -> Union[_VT, _T]: + def pop( + self, __key: _KT, /, default: Union[_VT, _T] = ... + ) -> Union[_VT, _T]: ... - def pop(self, __key: _KT, *arg: Any, **kw: Any) -> Union[_VT, _T]: + def pop(self, __key: _KT, /, *arg: Any, **kw: Any) -> Union[_VT, _T]: member = self.col.pop(__key, *arg, **kw) return self._get(member) @@ -1842,19 +1844,19 @@ class _AssociationSet(_AssociationSingleItem[_T], MutableSet[_T]): yield self._get(member) return - def add(self, __element: _T) -> None: + def add(self, __element: _T, /) -> None: if __element not in self: self.col.add(self._create(__element)) # for discard and remove, choosing a more expensive check strategy rather # than call self.creator() - def discard(self, __element: _T) -> None: + def discard(self, __element: _T, /) -> None: for member in self.col: if self._get(member) == __element: self.col.discard(member) break - def remove(self, __element: _T) -> None: + def remove(self, __element: _T, /) -> None: for member in self.col: if self._get(member) == __element: self.col.discard(member) diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 0f82518aaa..38ea9469ee 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -828,15 +828,15 @@ class MutableDict(Mutable, Dict[_KT, _VT]): if TYPE_CHECKING: @overload - def pop(self, __key: _KT) -> _VT: + def pop(self, __key: _KT, /) -> _VT: ... @overload - def pop(self, __key: _KT, __default: _VT | _T) -> _VT | _T: + def pop(self, __key: _KT, default: _VT | _T, /) -> _VT | _T: ... def pop( - self, __key: _KT, __default: _VT | _T | None = None + self, __key: _KT, __default: _VT | _T | None = None, / ) -> _VT | _T: ... diff --git a/lib/sqlalchemy/orm/_orm_constructors.py b/lib/sqlalchemy/orm/_orm_constructors.py index df36c38641..8c70a5d384 100644 --- a/lib/sqlalchemy/orm/_orm_constructors.py +++ b/lib/sqlalchemy/orm/_orm_constructors.py @@ -101,6 +101,7 @@ def mapped_column( __type_pos: Optional[ Union[_TypeEngineArgument[Any], SchemaEventTarget] ] = None, + /, *args: SchemaEventTarget, init: Union[_NoArg, bool] = _NoArg.NO_ARG, repr: Union[_NoArg, bool] = _NoArg.NO_ARG, # noqa: A002 @@ -544,6 +545,7 @@ def column_property( @overload def composite( _class_or_attr: _CompositeAttrType[Any], + /, *attrs: _CompositeAttrType[Any], group: Optional[str] = None, deferred: bool = False, @@ -566,6 +568,7 @@ def composite( @overload def composite( _class_or_attr: Type[_CC], + /, *attrs: _CompositeAttrType[Any], group: Optional[str] = None, deferred: bool = False, @@ -588,6 +591,7 @@ def composite( @overload def composite( _class_or_attr: Callable[..., _CC], + /, *attrs: _CompositeAttrType[Any], group: Optional[str] = None, deferred: bool = False, @@ -611,6 +615,7 @@ def composite( _class_or_attr: Union[ None, Type[_CC], Callable[..., _CC], _CompositeAttrType[Any] ] = None, + /, *attrs: _CompositeAttrType[Any], group: Optional[str] = None, deferred: bool = False, diff --git a/lib/sqlalchemy/orm/decl_api.py b/lib/sqlalchemy/orm/decl_api.py index 80c85f13ad..bd18ce5f4b 100644 --- a/lib/sqlalchemy/orm/decl_api.py +++ b/lib/sqlalchemy/orm/decl_api.py @@ -1578,13 +1578,14 @@ class registry: ), ) @overload - def mapped_as_dataclass(self, __cls: Type[_O]) -> Type[_O]: + def mapped_as_dataclass(self, __cls: Type[_O], /) -> Type[_O]: ... @overload def mapped_as_dataclass( self, __cls: Literal[None] = ..., + /, *, init: Union[_NoArg, bool] = ..., repr: Union[_NoArg, bool] = ..., # noqa: A002 @@ -1600,6 +1601,7 @@ class registry: def mapped_as_dataclass( self, __cls: Optional[Type[_O]] = None, + /, *, init: Union[_NoArg, bool] = _NoArg.NO_ARG, repr: Union[_NoArg, bool] = _NoArg.NO_ARG, # noqa: A002 diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 5da7ee9b22..28f193bc6c 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1492,13 +1492,13 @@ class Query( @overload def with_entities( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / ) -> RowReturningQuery[Tuple[_T0, _T1]]: ... @overload def with_entities( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> RowReturningQuery[Tuple[_T0, _T1, _T2]]: ... @@ -1509,6 +1509,7 @@ class Query( __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -1520,6 +1521,7 @@ class Query( __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -1532,6 +1534,7 @@ class Query( __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -1545,6 +1548,7 @@ class Query( __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -1559,6 +1563,7 @@ class Query( __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... @@ -1854,7 +1859,7 @@ class Query( @_generative def params( - self, __params: Optional[Dict[str, Any]] = None, **kw: Any + self, __params: Optional[Dict[str, Any]] = None, /, **kw: Any ) -> Self: r"""Add values for bind parameters which may have been specified in filter(). @@ -2013,6 +2018,7 @@ class Query( Literal[None, False, _NoArg.NO_ARG], _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, + /, *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> Self: """Apply one or more ORDER BY criteria to the query and return @@ -2064,6 +2070,7 @@ class Query( Literal[None, False, _NoArg.NO_ARG], _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, + /, *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> Self: """Apply one or more GROUP BY criterion to the query and return diff --git a/lib/sqlalchemy/orm/relationships.py b/lib/sqlalchemy/orm/relationships.py index 7ea30d7b18..0a431d2cfb 100644 --- a/lib/sqlalchemy/orm/relationships.py +++ b/lib/sqlalchemy/orm/relationships.py @@ -1831,7 +1831,7 @@ class RelationshipProperty( self.argument = cast("_RelationshipArgumentType[_T]", argument) @util.preload_module("sqlalchemy.orm.mapper") - def _setup_entity(self, __argument: Any = None) -> None: + def _setup_entity(self, __argument: Any = None, /) -> None: if "entity" in self.__dict__: return diff --git a/lib/sqlalchemy/orm/scoping.py b/lib/sqlalchemy/orm/scoping.py index ab632bdd56..15ece71dcd 100644 --- a/lib/sqlalchemy/orm/scoping.py +++ b/lib/sqlalchemy/orm/scoping.py @@ -1590,13 +1590,13 @@ class scoped_session(Generic[_S]): @overload def query( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / ) -> RowReturningQuery[Tuple[_T0, _T1]]: ... @overload def query( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> RowReturningQuery[Tuple[_T0, _T1, _T2]]: ... @@ -1607,6 +1607,7 @@ class scoped_session(Generic[_S]): __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -1618,6 +1619,7 @@ class scoped_session(Generic[_S]): __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -1630,6 +1632,7 @@ class scoped_session(Generic[_S]): __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -1643,6 +1646,7 @@ class scoped_session(Generic[_S]): __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -1657,6 +1661,7 @@ class scoped_session(Generic[_S]): __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index d861981271..4c3ab5ab62 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -2811,13 +2811,13 @@ class Session(_SessionClassMethods, EventTarget): @overload def query( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / ) -> RowReturningQuery[Tuple[_T0, _T1]]: ... @overload def query( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> RowReturningQuery[Tuple[_T0, _T1, _T2]]: ... @@ -2828,6 +2828,7 @@ class Session(_SessionClassMethods, EventTarget): __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -2839,6 +2840,7 @@ class Session(_SessionClassMethods, EventTarget): __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -2851,6 +2853,7 @@ class Session(_SessionClassMethods, EventTarget): __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -2864,6 +2867,7 @@ class Session(_SessionClassMethods, EventTarget): __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -2878,6 +2882,7 @@ class Session(_SessionClassMethods, EventTarget): __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... diff --git a/lib/sqlalchemy/sql/_selectable_constructors.py b/lib/sqlalchemy/sql/_selectable_constructors.py index 41e8b6eb16..27641c372c 100644 --- a/lib/sqlalchemy/sql/_selectable_constructors.py +++ b/lib/sqlalchemy/sql/_selectable_constructors.py @@ -140,6 +140,7 @@ def exists( __argument: Optional[ Union[_ColumnsClauseArgument[Any], SelectBase, ScalarSelect[Any]] ] = None, + /, ) -> Exists: """Construct a new :class:`_expression.Exists` construct. @@ -330,18 +331,20 @@ def outerjoin( @overload -def select(__ent0: _TCCA[_T0]) -> Select[Tuple[_T0]]: +def select(__ent0: _TCCA[_T0], /) -> Select[Tuple[_T0]]: ... @overload -def select(__ent0: _TCCA[_T0], __ent1: _TCCA[_T1]) -> Select[Tuple[_T0, _T1]]: +def select( + __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / +) -> Select[Tuple[_T0, _T1]]: ... @overload def select( - __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> Select[Tuple[_T0, _T1, _T2]]: ... @@ -352,6 +355,7 @@ def select( __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -363,6 +367,7 @@ def select( __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -375,6 +380,7 @@ def select( __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -388,6 +394,7 @@ def select( __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -402,6 +409,7 @@ def select( __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... @@ -417,6 +425,7 @@ def select( __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], __ent8: _TCCA[_T8], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8]]: ... @@ -433,6 +442,7 @@ def select( __ent7: _TCCA[_T7], __ent8: _TCCA[_T8], __ent9: _TCCA[_T9], + /, ) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9]]: ... diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py index 4ca6ed338f..f798ab1e18 100644 --- a/lib/sqlalchemy/sql/dml.py +++ b/lib/sqlalchemy/sql/dml.py @@ -1294,7 +1294,11 @@ class Insert(ValuesBase): @overload def returning( - self, __ent0: _TCCA[_T0], *, sort_by_parameter_order: bool = False + self, + __ent0: _TCCA[_T0], + /, + *, + sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0]]: ... @@ -1303,6 +1307,7 @@ class Insert(ValuesBase): self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1]]: @@ -1314,6 +1319,7 @@ class Insert(ValuesBase): __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2]]: @@ -1326,6 +1332,7 @@ class Insert(ValuesBase): __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3]]: @@ -1339,6 +1346,7 @@ class Insert(ValuesBase): __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4]]: @@ -1353,6 +1361,7 @@ class Insert(ValuesBase): __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: @@ -1368,6 +1377,7 @@ class Insert(ValuesBase): __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: @@ -1384,6 +1394,7 @@ class Insert(ValuesBase): __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, *, sort_by_parameter_order: bool = False, ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: @@ -1596,18 +1607,20 @@ class Update(DMLWhereBase, ValuesBase): # statically generated** by tools/generate_tuple_map_overloads.py @overload - def returning(self, __ent0: _TCCA[_T0]) -> ReturningUpdate[Tuple[_T0]]: + def returning( + self, __ent0: _TCCA[_T0], / + ) -> ReturningUpdate[Tuple[_T0]]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / ) -> ReturningUpdate[Tuple[_T0, _T1]]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> ReturningUpdate[Tuple[_T0, _T1, _T2]]: ... @@ -1618,6 +1631,7 @@ class Update(DMLWhereBase, ValuesBase): __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -1629,6 +1643,7 @@ class Update(DMLWhereBase, ValuesBase): __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -1641,6 +1656,7 @@ class Update(DMLWhereBase, ValuesBase): __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -1654,6 +1670,7 @@ class Update(DMLWhereBase, ValuesBase): __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -1668,6 +1685,7 @@ class Update(DMLWhereBase, ValuesBase): __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... @@ -1734,18 +1752,20 @@ class Delete(DMLWhereBase, UpdateBase): # statically generated** by tools/generate_tuple_map_overloads.py @overload - def returning(self, __ent0: _TCCA[_T0]) -> ReturningDelete[Tuple[_T0]]: + def returning( + self, __ent0: _TCCA[_T0], / + ) -> ReturningDelete[Tuple[_T0]]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / ) -> ReturningDelete[Tuple[_T0, _T1]]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], / ) -> ReturningDelete[Tuple[_T0, _T1, _T2]]: ... @@ -1756,6 +1776,7 @@ class Delete(DMLWhereBase, UpdateBase): __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3]]: ... @@ -1767,6 +1788,7 @@ class Delete(DMLWhereBase, UpdateBase): __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4]]: ... @@ -1779,6 +1801,7 @@ class Delete(DMLWhereBase, UpdateBase): __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: ... @@ -1792,6 +1815,7 @@ class Delete(DMLWhereBase, UpdateBase): __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: ... @@ -1806,6 +1830,7 @@ class Delete(DMLWhereBase, UpdateBase): __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: ... diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index 48dfd25829..49505168c0 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -560,6 +560,7 @@ class ClauseElement( def unique_params( self, __optionaldict: Optional[Dict[str, Any]] = None, + /, **kwargs: Any, ) -> Self: """Return a copy with :func:`_expression.bindparam` elements @@ -576,6 +577,7 @@ class ClauseElement( def params( self, __optionaldict: Optional[Mapping[str, Any]] = None, + /, **kwargs: Any, ) -> Self: """Return a copy with :func:`_expression.bindparam` elements diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index d4e3f4cff5..507bb92e30 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -1515,6 +1515,7 @@ class Column(DialectKWArgs, SchemaItem, ColumnClause[_T]): __type_pos: Optional[ Union[_TypeEngineArgument[_T], SchemaEventTarget] ] = None, + /, *args: SchemaEventTarget, name: Optional[str] = None, type_: Optional[_TypeEngineArgument[_T]] = None, diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 91b939e0af..bbc7b0b549 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -4150,6 +4150,7 @@ class GenerativeSelect(SelectBase, Generative): Literal[None, _NoArg.NO_ARG], _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, + /, *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> Self: r"""Return a new selectable with the given list of ORDER BY @@ -4197,6 +4198,7 @@ class GenerativeSelect(SelectBase, Generative): Literal[None, _NoArg.NO_ARG], _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, + /, *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> Self: r"""Return a new selectable with the given list of GROUP BY @@ -6633,6 +6635,7 @@ class Exists(UnaryExpression[bool]): __argument: Optional[ Union[_ColumnsClauseArgument[Any], SelectBase, ScalarSelect[Any]] ] = None, + /, ): s: ScalarSelect[Any] diff --git a/lib/sqlalchemy/util/_collections.py b/lib/sqlalchemy/util/_collections.py index a0b1977ee5..e4677f73e1 100644 --- a/lib/sqlalchemy/util/_collections.py +++ b/lib/sqlalchemy/util/_collections.py @@ -289,7 +289,7 @@ sort_dictionary = _ordered_dictionary_sort class WeakSequence(Sequence[_T]): - def __init__(self, __elements: Sequence[_T] = ()): + def __init__(self, __elements: Sequence[_T] = (), /): # adapted from weakref.WeakKeyDictionary, prevent reference # cycles in the collection itself def _remove(item, selfref=weakref.ref(self)): diff --git a/lib/sqlalchemy/util/_py_collections.py b/lib/sqlalchemy/util/_py_collections.py index 7dba5092bc..9dc0b8e57d 100644 --- a/lib/sqlalchemy/util/_py_collections.py +++ b/lib/sqlalchemy/util/_py_collections.py @@ -142,18 +142,18 @@ class immutabledict(ImmutableDictBase[_KT, _VT]): return "immutabledict(%s)" % dict.__repr__(self) # PEP 584 - def __ior__(self, __value: Any) -> NoReturn: # type: ignore + def __ior__(self, __value: Any, /) -> NoReturn: # type: ignore self._readonly() def __or__( # type: ignore[override] - self, __value: Mapping[_KT, _VT] + self, __value: Mapping[_KT, _VT], / ) -> immutabledict[_KT, _VT]: return immutabledict( super().__or__(__value), # type: ignore[call-overload] ) def __ror__( # type: ignore[override] - self, __value: Mapping[_KT, _VT] + self, __value: Mapping[_KT, _VT], / ) -> immutabledict[_KT, _VT]: return immutabledict( super().__ror__(__value), # type: ignore[call-overload] diff --git a/tools/generate_tuple_map_overloads.py b/tools/generate_tuple_map_overloads.py index 476636b1d0..e886b7fddc 100644 --- a/tools/generate_tuple_map_overloads.py +++ b/tools/generate_tuple_map_overloads.py @@ -83,25 +83,22 @@ def process_module(modname: str, filename: str, cmd: code_writer_cmd) -> str: for num_args in range(start_index, end_index + 1): combinations = [ - [ - f"__ent{arg}: _TCCA[_T{arg}]" - for arg in range(num_args) - ] + f"__ent{arg}: _TCCA[_T{arg}]" + for arg in range(num_args) ] - for combination in combinations: - buf.write( - textwrap.indent( - f""" + buf.write( + textwrap.indent( + f""" @overload def {current_fnname}( - {'self, ' if use_self else ''}{", ".join(combination)}{extra_args} + {'self, ' if use_self else ''}{", ".join(combinations)},/{extra_args} ) -> {return_type}[Tuple[{', '.join(f'_T{i}' for i in range(num_args))}]]: ... """, # noqa: E501 - indent, - ) + indent, ) + ) if in_block and line.startswith( f"{indent}# END OVERLOADED FUNCTIONS {given_fnname}"