ormlambda 3.12.2__py3-none-any.whl → 3.34.1__py3-none-any.whl

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 (145) hide show
  1. ormlambda/__init__.py +2 -0
  2. ormlambda/caster/__init__.py +1 -1
  3. ormlambda/caster/caster.py +29 -12
  4. ormlambda/common/abstract_classes/clause_info_converter.py +4 -12
  5. ormlambda/common/abstract_classes/decomposition_query.py +17 -2
  6. ormlambda/common/abstract_classes/non_query_base.py +9 -7
  7. ormlambda/common/abstract_classes/query_base.py +3 -1
  8. ormlambda/common/errors/__init__.py +29 -0
  9. ormlambda/common/interfaces/IQueryCommand.py +6 -2
  10. ormlambda/databases/__init__.py +0 -1
  11. ormlambda/databases/my_sql/__init__.py +0 -1
  12. ormlambda/databases/my_sql/caster/caster.py +23 -19
  13. ormlambda/databases/my_sql/caster/types/__init__.py +3 -0
  14. ormlambda/databases/my_sql/caster/types/boolean.py +35 -0
  15. ormlambda/databases/my_sql/caster/types/bytes.py +7 -7
  16. ormlambda/databases/my_sql/caster/types/date.py +34 -0
  17. ormlambda/databases/my_sql/caster/types/datetime.py +7 -7
  18. ormlambda/databases/my_sql/caster/types/decimal.py +32 -0
  19. ormlambda/databases/my_sql/caster/types/float.py +7 -7
  20. ormlambda/databases/my_sql/caster/types/int.py +7 -7
  21. ormlambda/databases/my_sql/caster/types/iterable.py +7 -7
  22. ormlambda/databases/my_sql/caster/types/none.py +8 -7
  23. ormlambda/databases/my_sql/caster/types/point.py +4 -4
  24. ormlambda/databases/my_sql/caster/types/string.py +7 -7
  25. ormlambda/databases/my_sql/clauses/ST_AsText.py +8 -7
  26. ormlambda/databases/my_sql/clauses/ST_Contains.py +10 -5
  27. ormlambda/databases/my_sql/clauses/__init__.py +4 -10
  28. ormlambda/databases/my_sql/clauses/count.py +5 -15
  29. ormlambda/databases/my_sql/clauses/delete.py +3 -50
  30. ormlambda/databases/my_sql/clauses/group_by.py +3 -16
  31. ormlambda/databases/my_sql/clauses/having.py +2 -6
  32. ormlambda/databases/my_sql/clauses/insert.py +4 -92
  33. ormlambda/databases/my_sql/clauses/joins.py +5 -140
  34. ormlambda/databases/my_sql/clauses/limit.py +4 -15
  35. ormlambda/databases/my_sql/clauses/offset.py +4 -15
  36. ormlambda/databases/my_sql/clauses/order.py +4 -61
  37. ormlambda/databases/my_sql/clauses/update.py +4 -67
  38. ormlambda/databases/my_sql/clauses/upsert.py +3 -66
  39. ormlambda/databases/my_sql/clauses/where.py +4 -42
  40. ormlambda/databases/my_sql/repository.py +217 -0
  41. ormlambda/dialects/__init__.py +39 -0
  42. ormlambda/dialects/default/__init__.py +1 -0
  43. ormlambda/dialects/default/base.py +39 -0
  44. ormlambda/dialects/interface/__init__.py +1 -0
  45. ormlambda/dialects/interface/dialect.py +78 -0
  46. ormlambda/dialects/mysql/__init__.py +8 -0
  47. ormlambda/dialects/mysql/base.py +387 -0
  48. ormlambda/dialects/mysql/mysqlconnector.py +46 -0
  49. ormlambda/dialects/mysql/types.py +732 -0
  50. ormlambda/dialects/sqlite/__init__.py +5 -0
  51. ormlambda/dialects/sqlite/base.py +47 -0
  52. ormlambda/dialects/sqlite/pysqlite.py +32 -0
  53. ormlambda/engine/__init__.py +1 -0
  54. ormlambda/engine/base.py +58 -0
  55. ormlambda/engine/create.py +9 -23
  56. ormlambda/engine/url.py +31 -19
  57. ormlambda/env.py +30 -0
  58. ormlambda/errors.py +17 -0
  59. ormlambda/model/base_model.py +7 -9
  60. ormlambda/repository/base_repository.py +36 -5
  61. ormlambda/repository/interfaces/IRepositoryBase.py +121 -7
  62. ormlambda/repository/response.py +134 -0
  63. ormlambda/sql/clause_info/aggregate_function_base.py +19 -9
  64. ormlambda/sql/clause_info/clause_info.py +34 -17
  65. ormlambda/sql/clauses/__init__.py +14 -0
  66. ormlambda/{databases/my_sql → sql}/clauses/alias.py +23 -6
  67. ormlambda/sql/clauses/count.py +57 -0
  68. ormlambda/sql/clauses/delete.py +71 -0
  69. ormlambda/sql/clauses/group_by.py +30 -0
  70. ormlambda/sql/clauses/having.py +21 -0
  71. ormlambda/sql/clauses/insert.py +104 -0
  72. ormlambda/sql/clauses/interfaces/__init__.py +5 -0
  73. ormlambda/{components → sql/clauses}/join/join_context.py +15 -7
  74. ormlambda/sql/clauses/joins.py +159 -0
  75. ormlambda/sql/clauses/limit.py +15 -0
  76. ormlambda/sql/clauses/offset.py +15 -0
  77. ormlambda/sql/clauses/order.py +55 -0
  78. ormlambda/{databases/my_sql → sql}/clauses/select.py +12 -13
  79. ormlambda/sql/clauses/update.py +84 -0
  80. ormlambda/sql/clauses/upsert.py +77 -0
  81. ormlambda/sql/clauses/where.py +65 -0
  82. ormlambda/sql/column/__init__.py +1 -0
  83. ormlambda/sql/{column.py → column/column.py} +82 -22
  84. ormlambda/sql/comparer.py +51 -37
  85. ormlambda/sql/compiler.py +427 -0
  86. ormlambda/sql/ddl.py +68 -0
  87. ormlambda/sql/elements.py +36 -0
  88. ormlambda/sql/foreign_key.py +43 -39
  89. ormlambda/{databases/my_sql → sql}/functions/concat.py +13 -5
  90. ormlambda/{databases/my_sql → sql}/functions/max.py +9 -4
  91. ormlambda/{databases/my_sql → sql}/functions/min.py +9 -13
  92. ormlambda/{databases/my_sql → sql}/functions/sum.py +8 -10
  93. ormlambda/sql/sqltypes.py +647 -0
  94. ormlambda/sql/table/__init__.py +1 -1
  95. ormlambda/sql/table/table.py +179 -0
  96. ormlambda/sql/table/table_constructor.py +1 -208
  97. ormlambda/sql/type_api.py +35 -0
  98. ormlambda/sql/types.py +3 -1
  99. ormlambda/sql/visitors.py +74 -0
  100. ormlambda/statements/__init__.py +1 -0
  101. ormlambda/statements/base_statement.py +28 -38
  102. ormlambda/statements/interfaces/IStatements.py +5 -4
  103. ormlambda/{databases/my_sql → statements}/query_builder.py +35 -30
  104. ormlambda/{databases/my_sql → statements}/statements.py +50 -60
  105. ormlambda/statements/types.py +2 -2
  106. ormlambda/types/__init__.py +24 -0
  107. ormlambda/types/metadata.py +42 -0
  108. ormlambda/util/__init__.py +88 -0
  109. ormlambda/util/load_module.py +21 -0
  110. ormlambda/util/plugin_loader.py +32 -0
  111. ormlambda/util/typing.py +6 -0
  112. ormlambda-3.34.1.dist-info/AUTHORS +32 -0
  113. {ormlambda-3.12.2.dist-info → ormlambda-3.34.1.dist-info}/METADATA +2 -3
  114. ormlambda-3.34.1.dist-info/RECORD +157 -0
  115. {ormlambda-3.12.2.dist-info → ormlambda-3.34.1.dist-info}/WHEEL +1 -1
  116. ormlambda/components/__init__.py +0 -4
  117. ormlambda/components/delete/__init__.py +0 -2
  118. ormlambda/components/delete/abstract_delete.py +0 -17
  119. ormlambda/components/insert/__init__.py +0 -2
  120. ormlambda/components/insert/abstract_insert.py +0 -25
  121. ormlambda/components/select/__init__.py +0 -1
  122. ormlambda/components/update/__init__.py +0 -2
  123. ormlambda/components/update/abstract_update.py +0 -29
  124. ormlambda/components/upsert/__init__.py +0 -2
  125. ormlambda/components/upsert/abstract_upsert.py +0 -25
  126. ormlambda/databases/my_sql/clauses/create_database.py +0 -35
  127. ormlambda/databases/my_sql/clauses/drop_database.py +0 -17
  128. ormlambda/databases/my_sql/repository/__init__.py +0 -1
  129. ormlambda/databases/my_sql/repository/repository.py +0 -351
  130. ormlambda/engine/template.py +0 -47
  131. ormlambda/sql/dtypes.py +0 -94
  132. ormlambda/utils/__init__.py +0 -1
  133. ormlambda-3.12.2.dist-info/RECORD +0 -125
  134. /ormlambda/databases/my_sql/{types.py → pool_types.py} +0 -0
  135. /ormlambda/{components/delete → sql/clauses/interfaces}/IDelete.py +0 -0
  136. /ormlambda/{components/insert → sql/clauses/interfaces}/IInsert.py +0 -0
  137. /ormlambda/{components/select → sql/clauses/interfaces}/ISelect.py +0 -0
  138. /ormlambda/{components/update → sql/clauses/interfaces}/IUpdate.py +0 -0
  139. /ormlambda/{components/upsert → sql/clauses/interfaces}/IUpsert.py +0 -0
  140. /ormlambda/{components → sql/clauses}/join/__init__.py +0 -0
  141. /ormlambda/{databases/my_sql → sql}/functions/__init__.py +0 -0
  142. /ormlambda/{utils → util}/module_tree/__init__.py +0 -0
  143. /ormlambda/{utils → util}/module_tree/dfs_traversal.py +0 -0
  144. /ormlambda/{utils → util}/module_tree/dynamic_module.py +0 -0
  145. {ormlambda-3.12.2.dist-info → ormlambda-3.34.1.dist-info}/LICENSE +0 -0
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import typing as tp
2
3
 
3
4
  from ormlambda.sql.clause_info import AggregateFunctionBase
@@ -9,7 +10,11 @@ from ormlambda.sql.clause_info import ClauseInfo
9
10
  type ConcatResponse[TProp] = tuple[str | ColumnType[TProp]]
10
11
 
11
12
 
12
- class Concat[T](AggregateFunctionBase):
13
+ if tp.TYPE_CHECKING:
14
+ from ormlambda.dialects import Dialect
15
+
16
+
17
+ class Concat[T](AggregateFunctionBase[T]):
13
18
  @staticmethod
14
19
  def FUNCTION_NAME() -> str:
15
20
  return "CONCAT"
@@ -19,22 +24,25 @@ class Concat[T](AggregateFunctionBase):
19
24
  values: ConcatResponse[TProp],
20
25
  alias_clause: AliasType[ColumnType[TProp]] = "concat",
21
26
  context: ClauseContextType = None,
27
+ *,
28
+ dialect: Dialect,
22
29
  ) -> None:
23
30
  super().__init__(
24
31
  table=None,
25
32
  column=values,
26
33
  alias_clause=alias_clause,
27
34
  context=context,
35
+ dtype=str,
36
+ dialect=dialect,
28
37
  )
29
38
 
30
39
  @tp.override
31
- @property
32
- def query(self) -> str:
40
+ def query(self, dialect: Dialect, **kwargs) -> str:
33
41
  columns: list[str] = []
34
42
 
35
43
  context = ClauseInfoContext(table_context=self._context._table_context, clause_context=None) if self._context else None
36
44
 
37
- for clause in self._convert_into_clauseInfo(self.unresolved_column, context=context):
45
+ for clause in self._convert_into_clauseInfo(self.unresolved_column, context=context, dialect=self._dialect):
38
46
  clause.alias_clause = self.alias_clause
39
47
  columns.append(clause)
40
- return self._concat_alias_and_column(f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns)})", self._alias_aggregate)
48
+ return self._concat_alias_and_column(f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns,dialect=self._dialect)})", self._alias_aggregate)
@@ -6,6 +6,9 @@ from ormlambda.sql.clause_info import ClauseInfo
6
6
  from ormlambda.sql.types import ColumnType, AliasType
7
7
  from ormlambda.sql.clause_info import AggregateFunctionBase
8
8
 
9
+ if tp.TYPE_CHECKING:
10
+ from ormlambda.dialects import Dialect
11
+
9
12
 
10
13
  class Max(AggregateFunctionBase[None]):
11
14
  @staticmethod
@@ -17,6 +20,8 @@ class Max(AggregateFunctionBase[None]):
17
20
  elements: ColumnType[TProp],
18
21
  alias_clause: AliasType[ColumnType[TProp]] = "max",
19
22
  context: ClauseContextType = None,
23
+ *,
24
+ dialect: Dialect,
20
25
  ):
21
26
  super().__init__(
22
27
  table=None,
@@ -26,18 +31,18 @@ class Max(AggregateFunctionBase[None]):
26
31
  context=context,
27
32
  keep_asterisk=False,
28
33
  preserve_context=False,
34
+ dialect=dialect,
29
35
  )
30
36
 
31
37
  @tp.override
32
- @property
33
- def query(self) -> str:
38
+ def query(self, dialect: Dialect, **kwargs) -> str:
34
39
  columns: list[str] = []
35
40
 
36
41
  context = ClauseInfoContext(table_context=self._context._table_context, clause_context=None) if self._context else None
37
- for clause in self._convert_into_clauseInfo(self.unresolved_column, context):
42
+ for clause in self._convert_into_clauseInfo(self.unresolved_column, context, dialect=self._dialect):
38
43
  new_clause = clause
39
44
  new_clause.alias_clause = None
40
45
  columns.append(new_clause)
41
46
 
42
- method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns)})"
47
+ method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns,dialect=self._dialect)})"
43
48
  return self._concat_alias_and_column(method_string, self._alias_aggregate)
@@ -6,6 +6,9 @@ from ormlambda.sql.clause_info import ClauseInfo
6
6
  from ormlambda.sql.types import ColumnType, AliasType
7
7
  from ormlambda.sql.clause_info import AggregateFunctionBase
8
8
 
9
+ if tp.TYPE_CHECKING:
10
+ from ormlambda.dialects import Dialect
11
+
9
12
 
10
13
  class Min(AggregateFunctionBase):
11
14
  @staticmethod
@@ -17,27 +20,20 @@ class Min(AggregateFunctionBase):
17
20
  elements: tuple[ColumnType[TProp], ...] | ColumnType[TProp],
18
21
  alias_clause: AliasType[ColumnType[TProp]] = "min",
19
22
  context: ClauseContextType = None,
23
+ *,
24
+ dialect: Dialect,
20
25
  ):
21
- super().__init__(
22
- table=None,
23
- column=elements,
24
- alias_table=None,
25
- alias_clause=alias_clause,
26
- context=context,
27
- keep_asterisk=False,
28
- preserve_context=False,
29
- )
26
+ super().__init__(table=None, column=elements, alias_table=None, alias_clause=alias_clause, context=context, keep_asterisk=False, preserve_context=False, dialect=dialect)
30
27
 
31
28
  @tp.override
32
- @property
33
- def query(self) -> str:
29
+ def query(self, dialect: Dialect, **kwargs) -> str:
34
30
  columns: list[str] = []
35
31
 
36
32
  context = ClauseInfoContext(table_context=self._context._table_context, clause_context=None) if self._context else None
37
- for clause in self._convert_into_clauseInfo(self.unresolved_column, context):
33
+ for clause in self._convert_into_clauseInfo(self.unresolved_column, context, dialect=self._dialect):
38
34
  new_clause = clause
39
35
  new_clause.alias_clause = None
40
36
  columns.append(new_clause)
41
37
 
42
- method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns)})"
38
+ method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns,dialect=self._dialect)})"
43
39
  return self._concat_alias_and_column(method_string, self._alias_aggregate)
@@ -6,18 +6,16 @@ from ormlambda.sql.clause_info import ClauseInfo
6
6
  from ormlambda.sql.types import ColumnType, AliasType
7
7
  from ormlambda.sql.clause_info import AggregateFunctionBase
8
8
 
9
+ if tp.TYPE_CHECKING:
10
+ from ormlambda.dialects import Dialect
11
+
9
12
 
10
13
  class Sum(AggregateFunctionBase):
11
14
  @staticmethod
12
15
  def FUNCTION_NAME() -> str:
13
16
  return "SUM"
14
17
 
15
- def __init__[TProp](
16
- self,
17
- elements: tuple[ColumnType[TProp], ...] | ColumnType[TProp],
18
- alias_clause: AliasType[ColumnType[TProp]] = "sum",
19
- context: ClauseContextType = None,
20
- ):
18
+ def __init__[TProp](self, elements: tuple[ColumnType[TProp], ...] | ColumnType[TProp], alias_clause: AliasType[ColumnType[TProp]] = "sum", context: ClauseContextType = None, *, dialect: Dialect):
21
19
  super().__init__(
22
20
  table=None,
23
21
  column=elements,
@@ -26,18 +24,18 @@ class Sum(AggregateFunctionBase):
26
24
  context=context,
27
25
  keep_asterisk=False,
28
26
  preserve_context=False,
27
+ dialect=dialect,
29
28
  )
30
29
 
31
30
  @tp.override
32
- @property
33
- def query(self) -> str:
31
+ def query(self, dialect: Dialect, **kwargs) -> str:
34
32
  columns: list[str] = []
35
33
 
36
34
  context = ClauseInfoContext(table_context=self._context._table_context, clause_context=None) if self._context else None
37
- for clause in self._convert_into_clauseInfo(self.unresolved_column, context):
35
+ for clause in self._convert_into_clauseInfo(self.unresolved_column, context, self._dialect):
38
36
  new_clause = clause
39
37
  new_clause.alias_clause = None
40
38
  columns.append(new_clause)
41
39
 
42
- method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns)})"
40
+ method_string = f"{self.FUNCTION_NAME()}({ClauseInfo.join_clauses(columns,dialect=self._dialect)})"
43
41
  return self._concat_alias_and_column(method_string, self._alias_aggregate)