From: Yurii Karabas <1998uriyyo@gmail.com> Date: Wed, 15 Nov 2023 13:14:22 +0000 (+0200) Subject: Merge remote-tracking branch 'upstream/main' into feature/typevartuple X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49d556de08c37f9535bdbd224e642eef01ae6db6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Merge remote-tracking branch 'upstream/main' into feature/typevartuple # Conflicts: # lib/sqlalchemy/orm/query.py # lib/sqlalchemy/orm/scoping.py # lib/sqlalchemy/orm/session.py # lib/sqlalchemy/sql/_selectable_constructors.py # lib/sqlalchemy/sql/dml.py # tools/generate_tuple_map_overloads.py --- 49d556de08c37f9535bdbd224e642eef01ae6db6 diff --cc lib/sqlalchemy/orm/query.py index ae96f37b93,28f193bc6c..62966c7870 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@@ -1496,14 -1492,14 +1496,14 @@@ class Query @overload def with_entities( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / - ) -> RowReturningQuery[Tuple[_T0, _T1]]: + ) -> RowReturningQuery[_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]]: + ) -> RowReturningQuery[_T0, _T1, _T2]: ... @overload @@@ -1513,7 -1509,8 +1513,8 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3]: ... @overload @@@ -1524,7 -1521,8 +1525,8 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -1536,7 -1534,8 +1538,8 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -1549,7 -1548,8 +1552,8 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -1563,7 -1563,8 +1567,8 @@@ __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.with_entities diff --cc lib/sqlalchemy/orm/scoping.py index 95e47fd878,15ece71dcd..eef50af27f --- a/lib/sqlalchemy/orm/scoping.py +++ b/lib/sqlalchemy/orm/scoping.py @@@ -1594,14 -1590,14 +1594,14 @@@ 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]]: + ) -> RowReturningQuery[_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]]: + ) -> RowReturningQuery[_T0, _T1, _T2]: ... @overload @@@ -1611,7 -1607,8 +1611,8 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3]: ... @overload @@@ -1622,7 -1619,8 +1623,8 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -1634,7 -1632,8 +1636,8 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -1647,7 -1646,8 +1650,8 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -1661,7 -1661,8 +1665,8 @@@ __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.query diff --cc lib/sqlalchemy/orm/session.py index 0f3d441ee5,4c3ab5ab62..4828201453 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@@ -2819,14 -2811,14 +2819,14 @@@ class Session(_SessionClassMethods, Eve @overload def query( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / - ) -> RowReturningQuery[Tuple[_T0, _T1]]: + ) -> RowReturningQuery[_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]]: + ) -> RowReturningQuery[_T0, _T1, _T2]: ... @overload @@@ -2836,7 -2828,8 +2836,8 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3]: ... @overload @@@ -2847,7 -2840,8 +2848,8 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -2859,7 -2853,8 +2861,8 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -2872,7 -2867,8 +2875,8 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -2886,7 -2882,8 +2890,8 @@@ __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, - ) -> RowReturningQuery[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: + ) -> RowReturningQuery[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.query diff --cc lib/sqlalchemy/sql/_selectable_constructors.py index 59f851f1d3,27641c372c..9ded8c62dc --- a/lib/sqlalchemy/sql/_selectable_constructors.py +++ b/lib/sqlalchemy/sql/_selectable_constructors.py @@@ -331,19 -331,21 +332,21 @@@ def outerjoin @overload - def select(__ent0: _TCCA[_T0]) -> Select[_T0]: -def select(__ent0: _TCCA[_T0], /) -> Select[Tuple[_T0]]: ++def select(__ent0: _TCCA[_T0], /) -> Select[_T0]: ... @overload - def select(__ent0: _TCCA[_T0], __ent1: _TCCA[_T1]) -> Select[_T0, _T1]: + def select( + __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / -) -> Select[Tuple[_T0, _T1]]: ++) -> Select[_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]]: +) -> Select[_T0, _T1, _T2]: ... @@@ -353,7 -355,8 +356,8 @@@ def select __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3]]: +) -> Select[_T0, _T1, _T2, _T3]: ... @@@ -364,7 -367,8 +368,8 @@@ def select __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4]]: +) -> Select[_T0, _T1, _T2, _T3, _T4]: ... @@@ -376,7 -380,8 +381,8 @@@ def select __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: +) -> Select[_T0, _T1, _T2, _T3, _T4, _T5]: ... @@@ -389,7 -394,8 +395,8 @@@ def select __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: +) -> Select[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @@@ -403,7 -409,8 +410,8 @@@ def select __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: +) -> Select[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... @@@ -418,7 -425,8 +426,8 @@@ def select __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], __ent8: _TCCA[_T8], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8]]: +) -> Select[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8]: ... @@@ -434,7 -442,8 +443,8 @@@ def select __ent7: _TCCA[_T7], __ent8: _TCCA[_T8], __ent9: _TCCA[_T9], + /, -) -> Select[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9]]: +) -> Select[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9]: ... diff --cc lib/sqlalchemy/sql/dml.py index 9a63a4123f,f798ab1e18..2739bb94f1 --- a/lib/sqlalchemy/sql/dml.py +++ b/lib/sqlalchemy/sql/dml.py @@@ -1297,8 -1294,12 +1297,12 @@@ 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]]: + ) -> ReturningInsert[_T0]: ... @overload @@@ -1306,9 -1307,10 +1310,10 @@@ self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1]]: + ) -> ReturningInsert[_T0, _T1]: ... @overload @@@ -1317,9 -1319,10 +1322,10 @@@ __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1, _T2]]: + ) -> ReturningInsert[_T0, _T1, _T2]: ... @overload @@@ -1329,9 -1332,10 +1335,10 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3]]: + ) -> ReturningInsert[_T0, _T1, _T2, _T3]: ... @overload @@@ -1342,9 -1346,10 +1349,10 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> ReturningInsert[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -1356,9 -1361,10 +1364,10 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> ReturningInsert[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -1371,9 -1377,10 +1380,10 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, *, sort_by_parameter_order: bool = False, - ) -> ReturningInsert[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> ReturningInsert[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -1387,9 -1394,10 +1397,10 @@@ __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]]: + ) -> ReturningInsert[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.returning @@@ -1599,19 -1607,21 +1610,21 @@@ class Update(DMLWhereBase, ValuesBase) # statically generated** by tools/generate_tuple_map_overloads.py @overload - def returning(self, __ent0: _TCCA[_T0]) -> ReturningUpdate[_T0]: + def returning( + self, __ent0: _TCCA[_T0], / - ) -> ReturningUpdate[Tuple[_T0]]: ++ ) -> ReturningUpdate[_T0]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / - ) -> ReturningUpdate[Tuple[_T0, _T1]]: + ) -> ReturningUpdate[_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]]: + ) -> ReturningUpdate[_T0, _T1, _T2]: ... @overload @@@ -1621,7 -1631,8 +1634,8 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, - ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3]]: + ) -> ReturningUpdate[_T0, _T1, _T2, _T3]: ... @overload @@@ -1632,7 -1643,8 +1646,8 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, - ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> ReturningUpdate[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -1644,7 -1656,8 +1659,8 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, - ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> ReturningUpdate[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -1657,7 -1670,8 +1673,8 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, - ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> ReturningUpdate[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -1671,7 -1685,8 +1688,8 @@@ __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, - ) -> ReturningUpdate[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: + ) -> ReturningUpdate[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.returning @@@ -1737,19 -1752,21 +1755,21 @@@ class Delete(DMLWhereBase, UpdateBase) # statically generated** by tools/generate_tuple_map_overloads.py @overload - def returning(self, __ent0: _TCCA[_T0]) -> ReturningDelete[_T0]: + def returning( + self, __ent0: _TCCA[_T0], / - ) -> ReturningDelete[Tuple[_T0]]: ++ ) -> ReturningDelete[_T0]: ... @overload def returning( - self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1] + self, __ent0: _TCCA[_T0], __ent1: _TCCA[_T1], / - ) -> ReturningDelete[Tuple[_T0, _T1]]: + ) -> ReturningDelete[_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]]: + ) -> ReturningDelete[_T0, _T1, _T2]: ... @overload @@@ -1759,7 -1776,8 +1779,8 @@@ __ent1: _TCCA[_T1], __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], + /, - ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3]]: + ) -> ReturningDelete[_T0, _T1, _T2, _T3]: ... @overload @@@ -1770,7 -1788,8 +1791,8 @@@ __ent2: _TCCA[_T2], __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], + /, - ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4]]: + ) -> ReturningDelete[_T0, _T1, _T2, _T3, _T4]: ... @overload @@@ -1782,7 -1801,8 +1804,8 @@@ __ent3: _TCCA[_T3], __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], + /, - ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5]]: + ) -> ReturningDelete[_T0, _T1, _T2, _T3, _T4, _T5]: ... @overload @@@ -1795,7 -1815,8 +1818,8 @@@ __ent4: _TCCA[_T4], __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], + /, - ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6]]: + ) -> ReturningDelete[_T0, _T1, _T2, _T3, _T4, _T5, _T6]: ... @overload @@@ -1809,7 -1830,8 +1833,8 @@@ __ent5: _TCCA[_T5], __ent6: _TCCA[_T6], __ent7: _TCCA[_T7], + /, - ) -> ReturningDelete[Tuple[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]]: + ) -> ReturningDelete[_T0, _T1, _T2, _T3, _T4, _T5, _T6, _T7]: ... # END OVERLOADED FUNCTIONS self.returning diff --cc tools/generate_tuple_map_overloads.py index c0754c67e4,e886b7fddc..0a300c20ee --- a/tools/generate_tuple_map_overloads.py +++ b/tools/generate_tuple_map_overloads.py @@@ -83,19 -83,16 +83,16 @@@ def process_module(modname: str, filena 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))}]]: +) -> {return_type}[{', '.join(f'_T{i}' for i in range(num_args))}]: ... """, # noqa: E501