ormlambda 3.7.0__tar.gz → 3.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. {ormlambda-3.7.0 → ormlambda-3.7.1}/PKG-INFO +1 -1
  2. {ormlambda-3.7.0 → ormlambda-3.7.1}/pyproject.toml +2 -1
  3. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/repository/repository.py +10 -1
  4. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/statements.py +23 -5
  5. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/statements/interfaces/IStatements.py +27 -5
  6. {ormlambda-3.7.0 → ormlambda-3.7.1}/LICENSE +0 -0
  7. {ormlambda-3.7.0 → ormlambda-3.7.1}/README.md +0 -0
  8. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/__init__.py +0 -0
  9. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/caster/__init__.py +0 -0
  10. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/caster/base_caster.py +0 -0
  11. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/caster/caster.py +0 -0
  12. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/caster/interfaces/ICaster.py +0 -0
  13. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/caster/interfaces/__init__.py +0 -0
  14. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/__init__.py +0 -0
  15. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/abstract_classes/__init__.py +0 -0
  16. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/abstract_classes/decomposition_query.py +0 -0
  17. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/abstract_classes/non_query_base.py +0 -0
  18. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/abstract_classes/query_base.py +0 -0
  19. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/enums/__init__.py +0 -0
  20. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/enums/condition_types.py +0 -0
  21. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/enums/join_type.py +0 -0
  22. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/errors/__init__.py +0 -0
  23. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/global_checker.py +0 -0
  24. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/ICustomAlias.py +0 -0
  25. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/IDecompositionQuery.py +0 -0
  26. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/IJoinSelector.py +0 -0
  27. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/INonQueryCommand.py +0 -0
  28. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/IQueryCommand.py +0 -0
  29. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/common/interfaces/__init__.py +0 -0
  30. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/__init__.py +0 -0
  31. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/delete/IDelete.py +0 -0
  32. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/delete/__init__.py +0 -0
  33. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/delete/abstract_delete.py +0 -0
  34. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/insert/IInsert.py +0 -0
  35. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/insert/__init__.py +0 -0
  36. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/insert/abstract_insert.py +0 -0
  37. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/select/ISelect.py +0 -0
  38. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/select/__init__.py +0 -0
  39. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/update/IUpdate.py +0 -0
  40. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/update/__init__.py +0 -0
  41. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/update/abstract_update.py +0 -0
  42. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/upsert/IUpsert.py +0 -0
  43. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/upsert/__init__.py +0 -0
  44. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/components/upsert/abstract_upsert.py +0 -0
  45. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/__init__.py +0 -0
  46. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/__init__.py +0 -0
  47. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/__init__.py +0 -0
  48. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/caster.py +0 -0
  49. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/read.py +0 -0
  50. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/__init__.py +0 -0
  51. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/bytes.py +0 -0
  52. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/datetime.py +0 -0
  53. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/float.py +0 -0
  54. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/int.py +0 -0
  55. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/iterable.py +0 -0
  56. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/none.py +0 -0
  57. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/point.py +0 -0
  58. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/types/string.py +0 -0
  59. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/caster/write.py +0 -0
  60. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/ST_AsText.py +0 -0
  61. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/ST_Contains.py +0 -0
  62. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/__init__.py +0 -0
  63. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/alias.py +0 -0
  64. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/count.py +0 -0
  65. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/create_database.py +0 -0
  66. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/delete.py +0 -0
  67. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/drop_database.py +0 -0
  68. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/drop_table.py +0 -0
  69. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/group_by.py +0 -0
  70. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/insert.py +0 -0
  71. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/joins.py +0 -0
  72. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/limit.py +0 -0
  73. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/offset.py +0 -0
  74. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/order.py +0 -0
  75. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/select.py +0 -0
  76. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/update.py +0 -0
  77. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/upsert.py +0 -0
  78. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/clauses/where.py +0 -0
  79. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/functions/__init__.py +0 -0
  80. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/functions/concat.py +0 -0
  81. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/functions/max.py +0 -0
  82. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/functions/min.py +0 -0
  83. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/functions/sum.py +0 -0
  84. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/join_context.py +0 -0
  85. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/databases/my_sql/repository/__init__.py +0 -0
  86. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/engine/__init__.py +0 -0
  87. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/engine/template.py +0 -0
  88. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/model/__init__.py +0 -0
  89. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/model/base_model.py +0 -0
  90. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/repository/__init__.py +0 -0
  91. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/repository/base_repository.py +0 -0
  92. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/repository/interfaces/IDatabaseConnection.py +0 -0
  93. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/repository/interfaces/IRepositoryBase.py +0 -0
  94. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/repository/interfaces/__init__.py +0 -0
  95. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/__init__.py +0 -0
  96. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/clause_info/__init__.py +0 -0
  97. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/clause_info/clause_info.py +0 -0
  98. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/clause_info/clause_info_context.py +0 -0
  99. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/clause_info/interface/IAggregate.py +0 -0
  100. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/clause_info/interface/__init__.py +0 -0
  101. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/column.py +0 -0
  102. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/comparer.py +0 -0
  103. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/dtypes.py +0 -0
  104. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/foreign_key.py +0 -0
  105. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/interfaces/__init__.py +0 -0
  106. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/table/__init__.py +0 -0
  107. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/table/fields.py +0 -0
  108. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/table/table_constructor.py +0 -0
  109. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/sql/types.py +0 -0
  110. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/statements/__init__.py +0 -0
  111. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/statements/base_statement.py +0 -0
  112. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/statements/interfaces/__init__.py +0 -0
  113. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/statements/types.py +0 -0
  114. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/utils/__init__.py +0 -0
  115. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/utils/module_tree/__init__.py +0 -0
  116. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/utils/module_tree/dfs_traversal.py +0 -0
  117. {ormlambda-3.7.0 → ormlambda-3.7.1}/src/ormlambda/utils/module_tree/dynamic_module.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ormlambda
3
- Version: 3.7.0
3
+ Version: 3.7.1
4
4
  Summary: ORM designed to interact with the database (currently with MySQL) using lambda functions and nested functions
5
5
  Author: p-hzamora
6
6
  Author-email: p.hzamora@icloud.com
@@ -3,7 +3,7 @@ line-length = 320
3
3
 
4
4
  [tool.poetry]
5
5
  name = "ormlambda"
6
- version = "3.7.0"
6
+ version = "3.7.1"
7
7
  description = "ORM designed to interact with the database (currently with MySQL) using lambda functions and nested functions"
8
8
  authors = ["p-hzamora <p.hzamora@icloud.com>"]
9
9
  readme = "README.md"
@@ -19,6 +19,7 @@ python-dotenv = "^1.0.1"
19
19
  pandas = "^2.2.2"
20
20
  ruff = "^0.4.5"
21
21
  parameterized = "^0.9.0"
22
+ pydantic = "^2.11.1"
22
23
 
23
24
 
24
25
  [build-system]
@@ -86,7 +86,16 @@ class Response[TFlavour, *Ts]:
86
86
  return [list(x) for x in data]
87
87
 
88
88
  def _default(**kwargs) -> list[TFlavour]:
89
- return self._flavour(data, **kwargs)
89
+ replacer_dicc: dict[str, str] = {x.alias_clause: x.column for x in self._select.all_clauses}
90
+
91
+ cleaned_column_names = [replacer_dicc[col] for col in self._columns]
92
+
93
+ result = []
94
+ for attr in data:
95
+ dicc_attr = dict(zip(cleaned_column_names, attr))
96
+ result.append(self._flavour(**dicc_attr, **kwargs))
97
+
98
+ return result
90
99
 
91
100
  selector: dict[Type[object], Any] = {
92
101
  dict: _dict,
@@ -354,7 +354,6 @@ class MySQLStatements[T: Table, *Ts](BaseStatement[T, MySQLConnection]):
354
354
  self._query_builder.by = by
355
355
  self._query: str = self._query_builder.query
356
356
 
357
- self._query_builder.clear()
358
357
  if flavour:
359
358
  result = self._return_flavour(self.query, flavour, select, **kwargs)
360
359
  if issubclass(flavour, tuple) and isinstance(select_clause, Column | ClauseInfo):
@@ -363,10 +362,17 @@ class MySQLStatements[T: Table, *Ts](BaseStatement[T, MySQLConnection]):
363
362
  return self._return_model(select, self.query)
364
363
 
365
364
  @override
366
- def select_one[TValue, TFlavour, *Ts](self, selector: Optional[tuple[TValue, *Ts]] = None, *, flavour: Optional[Type[TFlavour]] = None, by: JoinType = JoinType.INNER_JOIN):
365
+ def select_one[TValue, TFlavour, *Ts](
366
+ self,
367
+ selector: Optional[tuple[TValue, *Ts]] = None,
368
+ *,
369
+ flavour: Optional[Type[TFlavour]] = None,
370
+ by: JoinType = JoinType.INNER_JOIN,
371
+ **kwargs,
372
+ ):
367
373
  self.limit(1)
368
374
 
369
- response = self.select(selector=selector, flavour=flavour, by=by)
375
+ response = self.select(selector=selector, flavour=flavour, by=by,**kwargs)
370
376
 
371
377
  if not isinstance(response, Iterable):
372
378
  return response
@@ -384,8 +390,20 @@ class MySQLStatements[T: Table, *Ts](BaseStatement[T, MySQLConnection]):
384
390
  return tuple([res[0] for res in response])
385
391
 
386
392
  @override
387
- def first[TValue, *Ts](self, selector: Optional[tuple[TValue, *Ts]] = None):
388
- return self.select_one(selector)
393
+ def first[TValue, TFlavour, *Ts](
394
+ self,
395
+ selector: Optional[tuple[TValue, *Ts]] = None,
396
+ *,
397
+ flavour: Optional[Type[TFlavour]] = None,
398
+ by: JoinType = JoinType.INNER_JOIN,
399
+ **kwargs,
400
+ ):
401
+ return self.select_one(
402
+ selector=selector,
403
+ flavour=flavour,
404
+ by=by,
405
+ **kwargs,
406
+ )
389
407
 
390
408
  @override
391
409
  def group_by(self, column: str | Callable[[T, *Ts], Any]):
@@ -253,19 +253,19 @@ class IStatements[T: Table](ABC):
253
253
  @overload
254
254
  def select_one(self) -> T: ...
255
255
  @overload
256
- def select_one[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour]) -> TFlavour: ...
256
+ def select_one[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
257
257
  @overload
258
258
  def select_one[T1](self, selector: Callable[[T], T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
259
259
  @overload
260
260
  def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: Optional[Enum] = ...) -> tuple[*TRes]: ...
261
261
  @overload
262
- def select_one[T1](self, selector: Callable[[T], tuple[T1]], *, by: Optional[Enum] = ..., flavour: Type) -> T1: ...
262
+ def select_one[T1](self, selector: Callable[[T], tuple[T1]], *, by: Optional[Enum] = ..., flavour: Type, **kwargs) -> T1: ...
263
263
  @overload
264
- def select_one[T1, TFlavour](self, selector: Callable[[T], T1], *, by: Optional[Enum] = ..., flavour: Type[TFlavour]) -> T1: ...
264
+ def select_one[T1, TFlavour](self, selector: Callable[[T], T1], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
265
265
  @overload
266
- def select_one[*TRest](self, selector: Callable[[T], tuple[*TRest]], *, by: Optional[Enum] = ..., flavour: Type[tuple]) -> tuple[*TRest]: ...
266
+ def select_one[*TRest](self, selector: Callable[[T], tuple[*TRest]], *, by: Optional[Enum] = ..., flavour: Type[tuple], **kwargs) -> tuple[*TRest]: ...
267
267
  @overload
268
- def select_one[TFlavour](self, selector: Callable[[T], tuple], *, by: Optional[Enum] = ..., flavour: Type[TFlavour]) -> TFlavour: ...
268
+ def select_one[TFlavour](self, selector: Callable[[T], tuple], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
269
269
  @abstractmethod
270
270
  def select_one[TValue, TFlavour, *TRest](
271
271
  self,
@@ -280,6 +280,28 @@ class IStatements[T: Table](ABC):
280
280
  # region first
281
281
  @overload
282
282
  def first(self) -> T: ...
283
+ @overload
284
+ def first[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
285
+ @overload
286
+ def first[T1](self, selector: Callable[[T], T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
287
+ @overload
288
+ def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: Optional[Enum] = ...) -> tuple[*TRes]: ...
289
+ @overload
290
+ def first[T1](self, selector: Callable[[T], tuple[T1]], *, by: Optional[Enum] = ..., flavour: Type, **kwargs) -> T1: ...
291
+ @overload
292
+ def first[T1, TFlavour](self, selector: Callable[[T], T1], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
293
+ @overload
294
+ def first[*TRest](self, selector: Callable[[T], tuple[*TRest]], *, by: Optional[Enum] = ..., flavour: Type[tuple], **kwargs) -> tuple[*TRest]: ...
295
+ @overload
296
+ def first[TFlavour](self, selector: Callable[[T], tuple], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], **kwargs) -> TFlavour: ...
297
+ @abstractmethod
298
+ def first[TValue, TFlavour, *TRest](
299
+ self,
300
+ selector: Optional[Callable[[T], tuple[TValue, *TRest]]] = lambda: None,
301
+ *,
302
+ flavour: Type[TFlavour] = ...,
303
+ by: Optional[Enum] = ...,
304
+ ): ...
283
305
 
284
306
  # endregion
285
307
 
File without changes
File without changes