ormlambda 3.35.3__py3-none-any.whl → 4.0.4__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 (130) hide show
  1. ormlambda/__init__.py +79 -51
  2. ormlambda/caster/caster.py +6 -1
  3. ormlambda/common/abstract_classes/__init__.py +0 -2
  4. ormlambda/common/enums/__init__.py +1 -0
  5. ormlambda/common/enums/order_type.py +9 -0
  6. ormlambda/common/errors/__init__.py +13 -3
  7. ormlambda/common/global_checker.py +86 -8
  8. ormlambda/common/interfaces/IQueryCommand.py +2 -2
  9. ormlambda/common/interfaces/__init__.py +0 -2
  10. ormlambda/dialects/__init__.py +75 -3
  11. ormlambda/dialects/default/base.py +1 -1
  12. ormlambda/dialects/mysql/__init__.py +35 -78
  13. ormlambda/dialects/mysql/base.py +226 -40
  14. ormlambda/dialects/mysql/clauses/ST_AsText.py +26 -0
  15. ormlambda/dialects/mysql/clauses/ST_Contains.py +30 -0
  16. ormlambda/dialects/mysql/clauses/__init__.py +1 -0
  17. ormlambda/dialects/mysql/repository/__init__.py +1 -0
  18. ormlambda/{databases/my_sql → dialects/mysql/repository}/repository.py +0 -5
  19. ormlambda/dialects/mysql/types.py +6 -0
  20. ormlambda/engine/base.py +26 -4
  21. ormlambda/errors.py +9 -0
  22. ormlambda/model/base_model.py +3 -10
  23. ormlambda/repository/base_repository.py +1 -1
  24. ormlambda/repository/interfaces/IRepositoryBase.py +0 -7
  25. ormlambda/repository/response.py +21 -8
  26. ormlambda/sql/__init__.py +12 -3
  27. ormlambda/sql/clause_info/__init__.py +0 -2
  28. ormlambda/sql/clause_info/clause_info.py +94 -76
  29. ormlambda/sql/clause_info/interface/IAggregate.py +14 -4
  30. ormlambda/sql/clause_info/interface/IClauseInfo.py +6 -11
  31. ormlambda/sql/clauses/alias.py +6 -37
  32. ormlambda/sql/clauses/count.py +21 -36
  33. ormlambda/sql/clauses/group_by.py +13 -19
  34. ormlambda/sql/clauses/having.py +2 -6
  35. ormlambda/sql/clauses/insert.py +3 -3
  36. ormlambda/sql/clauses/interfaces/__init__.py +0 -1
  37. ormlambda/sql/clauses/join/join_context.py +5 -12
  38. ormlambda/sql/clauses/joins.py +34 -52
  39. ormlambda/sql/clauses/limit.py +1 -2
  40. ormlambda/sql/clauses/offset.py +1 -2
  41. ormlambda/sql/clauses/order.py +17 -21
  42. ormlambda/sql/clauses/select.py +56 -28
  43. ormlambda/sql/clauses/update.py +13 -10
  44. ormlambda/sql/clauses/where.py +20 -39
  45. ormlambda/sql/column/__init__.py +1 -0
  46. ormlambda/sql/column/column.py +19 -12
  47. ormlambda/sql/column/column_proxy.py +117 -0
  48. ormlambda/sql/column_table_proxy.py +23 -0
  49. ormlambda/sql/comparer.py +31 -65
  50. ormlambda/sql/compiler.py +248 -58
  51. ormlambda/sql/context/__init__.py +304 -0
  52. ormlambda/sql/ddl.py +19 -5
  53. ormlambda/sql/elements.py +3 -0
  54. ormlambda/sql/foreign_key.py +42 -64
  55. ormlambda/sql/functions/__init__.py +0 -1
  56. ormlambda/sql/functions/concat.py +35 -38
  57. ormlambda/sql/functions/max.py +12 -36
  58. ormlambda/sql/functions/min.py +13 -28
  59. ormlambda/sql/functions/sum.py +17 -33
  60. ormlambda/sql/sqltypes.py +2 -0
  61. ormlambda/sql/table/__init__.py +1 -0
  62. ormlambda/sql/table/table.py +31 -45
  63. ormlambda/sql/table/table_proxy.py +88 -0
  64. ormlambda/sql/type_api.py +4 -1
  65. ormlambda/sql/types.py +15 -12
  66. ormlambda/statements/__init__.py +0 -2
  67. ormlambda/statements/base_statement.py +53 -91
  68. ormlambda/statements/interfaces/IStatements.py +77 -123
  69. ormlambda/statements/interfaces/__init__.py +1 -1
  70. ormlambda/statements/query_builder.py +296 -128
  71. ormlambda/statements/statements.py +122 -115
  72. ormlambda/statements/types.py +5 -25
  73. ormlambda/util/__init__.py +7 -100
  74. ormlambda/util/langhelpers.py +102 -0
  75. ormlambda/util/module_tree/dynamic_module.py +1 -1
  76. ormlambda/util/preloaded.py +80 -0
  77. ormlambda/util/typing.py +12 -3
  78. {ormlambda-3.35.3.dist-info → ormlambda-4.0.4.dist-info}/METADATA +56 -79
  79. ormlambda-4.0.4.dist-info/RECORD +139 -0
  80. ormlambda/common/abstract_classes/clause_info_converter.py +0 -65
  81. ormlambda/common/abstract_classes/decomposition_query.py +0 -141
  82. ormlambda/common/abstract_classes/query_base.py +0 -15
  83. ormlambda/common/interfaces/ICustomAlias.py +0 -7
  84. ormlambda/common/interfaces/IDecompositionQuery.py +0 -33
  85. ormlambda/databases/__init__.py +0 -4
  86. ormlambda/databases/my_sql/__init__.py +0 -3
  87. ormlambda/databases/my_sql/clauses/ST_AsText.py +0 -37
  88. ormlambda/databases/my_sql/clauses/ST_Contains.py +0 -36
  89. ormlambda/databases/my_sql/clauses/__init__.py +0 -14
  90. ormlambda/databases/my_sql/clauses/count.py +0 -33
  91. ormlambda/databases/my_sql/clauses/delete.py +0 -9
  92. ormlambda/databases/my_sql/clauses/drop_table.py +0 -26
  93. ormlambda/databases/my_sql/clauses/group_by.py +0 -17
  94. ormlambda/databases/my_sql/clauses/having.py +0 -12
  95. ormlambda/databases/my_sql/clauses/insert.py +0 -9
  96. ormlambda/databases/my_sql/clauses/joins.py +0 -14
  97. ormlambda/databases/my_sql/clauses/limit.py +0 -6
  98. ormlambda/databases/my_sql/clauses/offset.py +0 -6
  99. ormlambda/databases/my_sql/clauses/order.py +0 -8
  100. ormlambda/databases/my_sql/clauses/update.py +0 -8
  101. ormlambda/databases/my_sql/clauses/upsert.py +0 -9
  102. ormlambda/databases/my_sql/clauses/where.py +0 -7
  103. ormlambda/dialects/interface/__init__.py +0 -1
  104. ormlambda/dialects/interface/dialect.py +0 -78
  105. ormlambda/sql/clause_info/aggregate_function_base.py +0 -96
  106. ormlambda/sql/clause_info/clause_info_context.py +0 -87
  107. ormlambda/sql/clauses/interfaces/ISelect.py +0 -17
  108. ormlambda/sql/clauses/new_join.py +0 -119
  109. ormlambda/util/load_module.py +0 -21
  110. ormlambda/util/plugin_loader.py +0 -32
  111. ormlambda-3.35.3.dist-info/RECORD +0 -159
  112. /ormlambda/{databases/my_sql → dialects/mysql}/caster/__init__.py +0 -0
  113. /ormlambda/{databases/my_sql → dialects/mysql}/caster/caster.py +0 -0
  114. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/__init__.py +0 -0
  115. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/boolean.py +0 -0
  116. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/bytes.py +0 -0
  117. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/date.py +0 -0
  118. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/datetime.py +0 -0
  119. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/decimal.py +0 -0
  120. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/float.py +0 -0
  121. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/int.py +0 -0
  122. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/iterable.py +0 -0
  123. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/json.py +0 -0
  124. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/none.py +0 -0
  125. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/point.py +0 -0
  126. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/string.py +0 -0
  127. /ormlambda/{databases/my_sql → dialects/mysql/repository}/pool_types.py +0 -0
  128. {ormlambda-3.35.3.dist-info → ormlambda-4.0.4.dist-info}/AUTHORS +0 -0
  129. {ormlambda-3.35.3.dist-info → ormlambda-4.0.4.dist-info}/LICENSE +0 -0
  130. {ormlambda-3.35.3.dist-info → ormlambda-4.0.4.dist-info}/WHEEL +0 -0
@@ -1,87 +0,0 @@
1
- from __future__ import annotations
2
- import abc
3
- from typing import Literal, Optional, TYPE_CHECKING, overload
4
-
5
- from ormlambda import Table
6
- from ormlambda.sql.types import (
7
- TableType,
8
- )
9
-
10
- from ormlambda import Column
11
-
12
- if TYPE_CHECKING:
13
- from .clause_info import ClauseInfo
14
-
15
-
16
- class IClauseInfo(abc.ABC): ...
17
-
18
-
19
- AliasChoiceType = Literal["TABLE", "CLAUSE"]
20
-
21
- type ClauseAliasKey[T: Table, TProp] = tuple[TableType[T], Column[TProp]]
22
- type TableAliasKey[T: Table] = T
23
-
24
- type AliasKey[T: Table, TProp] = ClauseAliasKey[T, TProp] | TableAliasKey[T]
25
-
26
- type ClauseContextType = Optional[ClauseInfoContext]
27
-
28
-
29
- class ClauseInfoContext(IClauseInfo):
30
- @overload
31
- def __init__(self) -> None: ...
32
- @overload
33
- def __init__[T: Table, TProp](self, clause_context: dict[ClauseAliasKey[T, TProp], str]) -> None: ...
34
- @overload
35
- def __init__[T: Table](self, table_context: dict[TableAliasKey[T], str]) -> None: ...
36
-
37
- def __init__[T: Table, TProp](
38
- self,
39
- clause_context: Optional[dict[ClauseAliasKey[T, TProp], str]] = None,
40
- table_context: Optional[dict[TableAliasKey[T], str]] = None,
41
- ) -> None:
42
- self._clause_context: dict[AliasKey[T, TProp], str] = clause_context if clause_context else {}
43
- self._table_context: dict[AliasKey[T, TProp], str] = table_context if table_context else {}
44
-
45
- def add_clause_to_context[T: Table](self, clause: ClauseInfo[T]) -> None:
46
- if not clause:
47
- return None
48
-
49
- if t := clause.table:
50
- self._add_table_alias(t, clause._alias_table)
51
- if c := clause.column:
52
- self._add_clause_alias((t, c, type(clause)), clause._alias_clause)
53
-
54
- return None
55
-
56
- def _add_clause_alias[T: Table, TProp](self, key: AliasKey[T, TProp], alias: str) -> None:
57
- if not all([key, alias]):
58
- return None
59
-
60
- self._clause_context[key] = alias
61
-
62
- return None
63
-
64
- def _add_table_alias[T: Table, TProp](self, key: AliasKey[T, TProp], alias: str) -> None:
65
- if not all([key, alias]):
66
- return None
67
-
68
- self._table_context[key] = alias
69
-
70
- return None
71
-
72
- def get_clause_alias[T: Table, TProp](self, clause: ClauseInfo[T]) -> Optional[str]:
73
- table_col: ClauseAliasKey[T, TProp] = (clause.table, clause.column, type(clause))
74
- return self._clause_context.get(table_col, None)
75
-
76
- def get_table_alias[T: Table](self, table: T) -> Optional[str]:
77
- return self._table_context.get(table, None)
78
-
79
- def update(self, context: ClauseInfoContext) -> None:
80
- if not context:
81
- return None
82
- if not isinstance(context, ClauseInfoContext):
83
- raise ValueError(f"A '{ClauseInfoContext.__name__}' type was expected")
84
-
85
- self._table_context.update(context._table_context)
86
- self._clause_context.update(context._clause_context)
87
- return None
@@ -1,17 +0,0 @@
1
- from __future__ import annotations
2
- import abc
3
- from ormlambda.common.interfaces import IQuery
4
- from typing import TYPE_CHECKING
5
-
6
- if TYPE_CHECKING:
7
- from ormlambda.sql.clause_info import ClauseInfo
8
-
9
-
10
- class ISelect(IQuery):
11
- @property
12
- @abc.abstractmethod
13
- def FROM(self) -> ClauseInfo: ...
14
-
15
- @property
16
- @abc.abstractmethod
17
- def COLUMNS(self) -> str: ...
@@ -1,119 +0,0 @@
1
- from __future__ import annotations
2
- from collections import defaultdict
3
- from typing import override, Optional, TYPE_CHECKING, Type
4
-
5
-
6
- from ormlambda.util.module_tree.dfs_traversal import DFSTraversal
7
- from ormlambda.common.interfaces.IQueryCommand import IQuery
8
- from ormlambda import JoinType
9
- from ormlambda.sql.clause_info import ClauseInfo
10
- from ormlambda.sql.comparer import Comparer
11
- from ormlambda.sql.elements import ClauseElement
12
-
13
-
14
- # TODOL [x]: Try to import Table module without circular import Error
15
- if TYPE_CHECKING:
16
- from ormlambda.dialects import Dialect
17
-
18
-
19
- class Join(ClauseElement):
20
- __visit_name__ = "join"
21
- __slots__: tuple = (
22
- "comparer",
23
- "alias",
24
- "from_clause",
25
- "left_clause",
26
- "right_clause",
27
- "by",
28
- "_dialect",
29
- )
30
-
31
- DEFAULT_TABLE: str = "{table}"
32
-
33
- @override
34
- def __repr__(self) -> str:
35
- return f"{IQuery.__name__}: {self.query(self._dialect)}"
36
-
37
- def __init__(
38
- self,
39
- comparer: Comparer,
40
- right_alias: Optional[str] = DEFAULT_TABLE,
41
- left_alias: Optional[str] = DEFAULT_TABLE,
42
- by: JoinType = JoinType.LEFT_EXCLUSIVE,
43
- *,
44
- dialect: Dialect,
45
- **kw,
46
- ) -> None:
47
- self.comparer = comparer
48
- self._dialect = dialect
49
- self.by = by
50
-
51
- # COMMENT: When multiple columns reference the same table, we need to create an alias to maintain clear references.
52
- self.alias: Optional[str] = right_alias
53
- self.left_clause: ClauseInfo = comparer.left_condition(dialect)
54
- self.left_clause.alias_table = left_alias if left_alias is not None else self.DEFAULT_TABLE
55
-
56
- self.right_clause: ClauseInfo = comparer.right_condition(dialect)
57
- self.right_clause.alias_table = right_alias if right_alias is not None else self.DEFAULT_TABLE
58
- self.from_clause = ClauseInfo(self.right_clause.table, None, alias_table=self.alias, dialect=dialect)
59
-
60
- def __eq__(self, __value: Join) -> bool:
61
- return isinstance(__value, Join) and self.__hash__() == __value.__hash__()
62
-
63
- def __hash__(self) -> int:
64
- return hash(
65
- (
66
- self.by,
67
- self.left_clause.query(self._dialect),
68
- self.right_clause.query(self._dialect),
69
- self.from_clause.query(self._dialect),
70
- )
71
- )
72
-
73
- @classmethod
74
- def join_selectors(cls, dialect: Dialect, *args: Join) -> str:
75
- return "\n".join([x.query(dialect) for x in args])
76
-
77
- def query(self, dialect: Dialect) -> str:
78
- list_ = [
79
- self.by.value, # inner join
80
- self.from_clause.query(dialect),
81
- "ON",
82
- self.left_clause.query(dialect),
83
- "=",
84
- self.right_clause.query(dialect),
85
- ]
86
- return " ".join([x for x in list_ if x is not None])
87
-
88
- @classmethod
89
- def sort_join_selectors(cls, joins: set[Join]) -> tuple[Join]:
90
- # FIXME [x]: How to sort when needed because it's not necessary at this point. It is for testing purpouse
91
- if len(joins) == 1:
92
- return tuple(joins)
93
-
94
- # create graph and sort it using 'Depth First Search' algorithm
95
- graph: dict[str, list[str]] = defaultdict(list)
96
- for join in joins:
97
- graph[join.left_clause.alias_table].append(join.right_clause.alias_table)
98
-
99
- sorted_graph = DFSTraversal.sort(graph)[::-1]
100
-
101
- if not sorted_graph:
102
- return tuple(joins)
103
-
104
- # Mapped Join class using his unique alias
105
- join_object_map: dict[str, Join] = {}
106
- for obj in joins:
107
- join_object_map[obj.alias] = obj
108
-
109
- res = []
110
- for table in sorted_graph:
111
- tables = join_object_map.get(table, None)
112
-
113
- if not tables:
114
- continue
115
- res.append(tables)
116
- return res
117
-
118
-
119
- __all__ = ["Join"]
@@ -1,21 +0,0 @@
1
- import logging
2
- import importlib
3
- from typing import Any, Optional
4
-
5
- log = logging.getLogger(__name__)
6
-
7
-
8
- def __load_module__(module_path: str, dialect_name: Optional[str] = None) -> Optional[Any]:
9
- """
10
- Load a module by its path and return the module object.
11
- Returns None if the module cannot be imported
12
- Args:
13
- module_path: The dot-separated path to the module
14
-
15
- Returns:
16
- The loaded module or None if import fails
17
- """
18
- try:
19
- return importlib.import_module(module_path)
20
- except ImportError:
21
- log.error(f"{module_path.split('.')[-1] if not dialect_name else dialect_name} dialect not available")
@@ -1,32 +0,0 @@
1
- from typing import Callable, Optional
2
- from types import ModuleType
3
- from ormlambda import errors
4
-
5
-
6
- class PluginLoader:
7
- def __init__(self, group: str, auto_fn: Optional[Callable[..., ModuleType]] = None):
8
- self.group = group
9
- self.impls: dict[str, ModuleType] = {}
10
- self.auto_fn = auto_fn
11
-
12
- def clear(self):
13
- self.impls.clear()
14
-
15
- def load(self, name: str) -> Optional[ModuleType]:
16
- if name in self.impls:
17
- return self.impls[name]()
18
- if self.auto_fn:
19
- loader = self.auto_fn(name)
20
- if loader:
21
- self.impls[name] = loader
22
- return loader()
23
- raise errors.NoSuchModuleError(f"Can't load plugin: {self.group}:{name}")
24
-
25
- def register(self, name: str, modulepath: str, objname: str) -> None:
26
- def load():
27
- mod = __import__(modulepath)
28
- for token in modulepath.split(".")[1:]:
29
- mod = getattr(mod, token)
30
- return getattr(mod, objname)
31
-
32
- self.impls[name] = load
@@ -1,159 +0,0 @@
1
- ormlambda/__init__.py,sha256=uH9p7xjLHjQ8Dii3h6HWzWpB6pyKKpBvzAQgJ5klp0M,1505
2
- ormlambda/caster/__init__.py,sha256=lXzW6TJwgtyFTaBhKBETyGIxEje005S3SPg7PXnYEVQ,137
3
- ormlambda/caster/base_caster.py,sha256=c3vCGoKDyJ39kfUiS7sNKhKdjBRYSK1Ie88lwDIXqgE,1774
4
- ormlambda/caster/caster.py,sha256=2iilDARnNGGh-NVJKXr7nhxjoaQOLJGk3RnGoSzHpOY,2453
5
- ormlambda/caster/interfaces/ICaster.py,sha256=MCBBVBho9KH67vCcUk8nclY0a7QoqxgdyVJJR0-QDT0,759
6
- ormlambda/caster/interfaces/__init__.py,sha256=TRoIxxgxuhUhCJq2ldLS3UEa1THrMXEIyTH5K46vyGw,43
7
- ormlambda/common/__init__.py,sha256=g4yGxH4WEgvQ7Rix4lpp3FQ-3SeRhptNd5sabgZLQNk,59
8
- ormlambda/common/abstract_classes/__init__.py,sha256=l39_WaBH38wrDV2KXb83c73ct7oxSIIVj2Ep4UcvxrU,186
9
- ormlambda/common/abstract_classes/clause_info_converter.py,sha256=VdJKOfIJNjmMoeYFyqBb4tPSTswQJ-rIa5Ilj8vs5og,3086
10
- ormlambda/common/abstract_classes/decomposition_query.py,sha256=_mANVU876xmZ1_Jf2IRLaOD3iOuEE9kurFDP9NalpgE,5506
11
- ormlambda/common/abstract_classes/non_query_base.py,sha256=eLXAprXVjVk2sFF8X8EK0UKoOQpgxBlDRn8prLzjr30,1201
12
- ormlambda/common/abstract_classes/query_base.py,sha256=KX1xQCfZ3kK13E1ipAFo91oXmBh0PyKRq4Xf59vsnG0,372
13
- ormlambda/common/enums/__init__.py,sha256=4lVKCHi1JalwgNzjsAXqX-C54NJEH83y2v5baMO8fN4,103
14
- ormlambda/common/enums/condition_types.py,sha256=QZnhhlTwzLcZ9kkmG6a08fQjUUJsJ5XGAH7QCiJRL1A,330
15
- ormlambda/common/enums/join_type.py,sha256=EosZVnvAc72LlZHuICIgoKWwUJzhvWOIIAohcbDYPQo,354
16
- ormlambda/common/errors/__init__.py,sha256=KLtFsctG5-LRu-mQ124FHeEqvE3K9fmf5hUt5HrBmR8,1995
17
- ormlambda/common/global_checker.py,sha256=9FtdGl0SCSLEBBFBtburmP_Sh5h2tx88ZG08vjUordc,894
18
- ormlambda/common/interfaces/ICustomAlias.py,sha256=GS-Riw_8yCr7N9DXSf5nZxkrwMH6eomNd-BdEhCA7fY,161
19
- ormlambda/common/interfaces/IDecompositionQuery.py,sha256=2fwcXONBnYpxL1YHPHaLxqQJ4NANGuTky69QNa74xd4,853
20
- ormlambda/common/interfaces/IJoinSelector.py,sha256=-w-MJmwq65tpDLtigWSLgvAqeOl75DA-EyWIugNkfCs,490
21
- ormlambda/common/interfaces/INonQueryCommand.py,sha256=7CjLW4sKqkR5zUIGvhRXOtzTs6vypJW1a9EJHlgCw2c,260
22
- ormlambda/common/interfaces/IQueryCommand.py,sha256=13vm_adVZ51BumMnNPHrqhzdC1pQVfZEVb6pkZgK-EU,475
23
- ormlambda/common/interfaces/__init__.py,sha256=np5wuAnBVAHDyD01-X3M9qPmzbjOzP6KNAj9BFazGd4,300
24
- ormlambda/databases/__init__.py,sha256=uMUnB19I5qlpjLkepLpNhk9L3--fijXmHNMledQWj5w,96
25
- ormlambda/databases/my_sql/__init__.py,sha256=nDSgvRuifTJ8FXcgdOrEguYnv-VBFyCOKrQWr0RHCiY,158
26
- ormlambda/databases/my_sql/caster/__init__.py,sha256=Df2sdZaAJ1Mi5Ego0sILMk5pF1NbK-nlV0hbpzd0PWE,47
27
- ormlambda/databases/my_sql/caster/caster.py,sha256=G2CDqkrmsxFrHe_nDOmqqrTA_3O2o6gIIfukqPeHmJs,1021
28
- ormlambda/databases/my_sql/caster/types/__init__.py,sha256=BmtHuVvKGPIOCjVuqQZgtGBMnx15YnGBaBi4r3Hd-3U,587
29
- ormlambda/databases/my_sql/caster/types/boolean.py,sha256=EYOxnR7-XU30UYZbBbMH4pyynTw5CPU1G8V5xpCthg4,1100
30
- ormlambda/databases/my_sql/caster/types/bytes.py,sha256=Mzl5oI2q6hGL9TFrTS-Ae1olQlAVtvNoxTSLUSBb5v8,1026
31
- ormlambda/databases/my_sql/caster/types/date.py,sha256=8usP1Af7WUzEC8BHOBL16Zjg9j-ipMlb42p0UTFELmg,1176
32
- ormlambda/databases/my_sql/caster/types/datetime.py,sha256=ISzcsbwijTa2wC9ZD8zy5piRm9BdnT9GxkMNf4FQYug,1189
33
- ormlambda/databases/my_sql/caster/types/decimal.py,sha256=ycQnSqO-aFkrcsa8JKVPdnfjotNL_BUFeScYRcueOWM,1068
34
- ormlambda/databases/my_sql/caster/types/float.py,sha256=EbU6J3yoL5_naLowfibkfUC9Bk9WzDaWks7lJ2pNhyA,1026
35
- ormlambda/databases/my_sql/caster/types/int.py,sha256=a30xbe0LNj2BvbtLNZhUXFvT3WJ115MFsHC19Y3NLTk,1016
36
- ormlambda/databases/my_sql/caster/types/iterable.py,sha256=S7pEAJ_NaxZqYhJAXwaJBS_zrbSz9J2yiYPpmDHATso,1057
37
- ormlambda/databases/my_sql/caster/types/json.py,sha256=AR7D6CEgyK3zAEijyNO1AuWtLBgC7KTj-YNEWkyilkg,1042
38
- ormlambda/databases/my_sql/caster/types/none.py,sha256=Bl4jpVVyoLG7ehoCAYj9lFBZbRWbyDN8QsQeWmIb84I,948
39
- ormlambda/databases/my_sql/caster/types/point.py,sha256=GHAf51kE0AS7wOlCYM9YW-z2ZbmY8hXwcHs979ZCeaY,1442
40
- ormlambda/databases/my_sql/caster/types/string.py,sha256=WFjTC5phuJ_-ShuokndFbqGuFgGZZx9GbpozH4rlB2g,1017
41
- ormlambda/databases/my_sql/clauses/ST_AsText.py,sha256=YrBf-cbkyjI_335IaOZ1LC-vgh1y3PqVOcBTrKj95Hs,1278
42
- ormlambda/databases/my_sql/clauses/ST_Contains.py,sha256=xzIWxJftryVoQCKUmV7TtGDkFAzUFhINXxLcWhuwac4,1189
43
- ormlambda/databases/my_sql/clauses/__init__.py,sha256=GXl_sqgKLHaLQYqbsuKlaV7SwLZK8oF-MXd4zAIr2LU,555
44
- ormlambda/databases/my_sql/clauses/count.py,sha256=sY2c5KlLT724DODLnJOjZZe14RdfoZvf1z3MjVVwAT4,1032
45
- ormlambda/databases/my_sql/clauses/delete.py,sha256=v38-Mq32uE5LRXzD0gME5MFtw2QK5qwxacv_B69wLeE,336
46
- ormlambda/databases/my_sql/clauses/drop_table.py,sha256=vPEE7N7z-N0vfVp0t-Qee1TBdZ9Fkvp_rvPP8LAcvdc,673
47
- ormlambda/databases/my_sql/clauses/group_by.py,sha256=tYFIlcY5gTi1qcPrCtkbwSJeEZ7gF6DJ8puf6sdgyaE,402
48
- ormlambda/databases/my_sql/clauses/having.py,sha256=GTgjS_KJ4umxB2wgt533cfFn8T0Dx7GvMgJL3cHXIAs,342
49
- ormlambda/databases/my_sql/clauses/insert.py,sha256=RYQh8lgAl-Aua-xQneVmn310ouJSAU7F4EJJ5VxuyX4,294
50
- ormlambda/databases/my_sql/clauses/joins.py,sha256=0GUd1YMPaZdboqGOPSM1sCFBKPO7DQOG5K5mzeTSeBw,448
51
- ormlambda/databases/my_sql/clauses/limit.py,sha256=uIV54zFLlkthaxBFp-qKGfWkKooeWdrHvuRhVlj0qiw,127
52
- ormlambda/databases/my_sql/clauses/offset.py,sha256=Fffxmya1B70cjjOTqk9RjoVZHnyFfgjBb8KdLPPL0MM,130
53
- ormlambda/databases/my_sql/clauses/order.py,sha256=lD08cc9_jQSYKJppp_NQqMira9t1FXfmeGBYlPpCrUU,210
54
- ormlambda/databases/my_sql/clauses/update.py,sha256=up0zRl8hhVbQHzkgiHaO3V6DlbU0ystTue-xmE3WV7o,234
55
- ormlambda/databases/my_sql/clauses/upsert.py,sha256=xEvdGdQVUu6so_CQKdqLMwIo_B-gm3dGRD2bWsV8N6s,238
56
- ormlambda/databases/my_sql/clauses/where.py,sha256=JCqKfMCt_tiUXtLa-DW0y6_IyNqIxLC6-iju_94oeBA,242
57
- ormlambda/databases/my_sql/pool_types.py,sha256=6c7LMS1VGR8ko1LB1T8DQzn1l10Mzk8PfIeYEOb9w30,1839
58
- ormlambda/databases/my_sql/repository.py,sha256=rmJXu49Absd_ULACxxM-B79TAqwRLdpV4VC0zF_Hw2Q,7203
59
- ormlambda/dialects/__init__.py,sha256=srorTnQfbyn7meJej4rJPR5xwnxwlbhPXl6jJ8ocUIA,865
60
- ormlambda/dialects/default/__init__.py,sha256=N1B0LKEDu7r2-mTF9mBA4ReyhYeDuJDnbQCiH4hJvFQ,33
61
- ormlambda/dialects/default/base.py,sha256=rmK-nV5luN2lphSgisM8TBy3s4JXVgvZa79ATHeVOuU,1088
62
- ormlambda/dialects/interface/__init__.py,sha256=IbB5o6ae7XNVVfNt4uqZRZcVK9HHG6eLLK_E0J99kwY,43
63
- ormlambda/dialects/interface/dialect.py,sha256=z47GXCi-uJ6Oq7Zm64OHM0q61T3xWCss-uGdcuuXng0,2810
64
- ormlambda/dialects/mysql/__init__.py,sha256=1yAEM2MDcp56eSv1MrbtuDVQ5d_EzQ0S7ztSXKVS-eo,1511
65
- ormlambda/dialects/mysql/base.py,sha256=drHxKpFVVJPWy82rWSD2rFKvQ-GN8imoDmp3_ou4hcw,14535
66
- ormlambda/dialects/mysql/mysqlconnector.py,sha256=DOjK7U7LOhjuVQJULzAV8xaRGX0OlBU8APUeRiTcbDY,1378
67
- ormlambda/dialects/mysql/types.py,sha256=ZQ75KyUwmNAt48F48CeIiMHgQjO0JeDXrksrrss2ILg,23537
68
- ormlambda/dialects/sqlite/__init__.py,sha256=2EMmxD7ORtGoD18GJ_9aC_tPutAq9ormMZJmaJ5nkYA,103
69
- ormlambda/dialects/sqlite/base.py,sha256=24LSB461yQDEnXa-TsQt_srJmBCAR6M6419pa40CL_4,1503
70
- ormlambda/dialects/sqlite/pysqlite.py,sha256=dZY0NV2IvSTk3DNEDyncstmIABKj3M2xfmhf2dc2zQs,680
71
- ormlambda/engine/__init__.py,sha256=JpCLfuW1zcJi4ki97ajXh0aQxMSvWBKzDlBZx9ZVF9o,132
72
- ormlambda/engine/base.py,sha256=i_q9-na1oPPrkAcQHBp3RvmaplueZlkPPaUM9_kuDWM,1985
73
- ormlambda/engine/create.py,sha256=caDYXX4BP5uODSrdJXRZvWWjbliDgH1TiSvhtHP3RNY,533
74
- ormlambda/engine/url.py,sha256=ZzdgZU_Cnjhonbbr5OfBvq_ThUPnDj9v-3-7O54ENm0,26137
75
- ormlambda/engine/utils.py,sha256=fFoiKsiFuLcjcBVYNebVoYnMrEj3aZdoxEVSNfCY-GM,522
76
- ormlambda/env.py,sha256=rCZKT2rpvRF3hPtkLmtiaVAIxQ0xj8tF7ZKJpFp7BkA,736
77
- ormlambda/errors.py,sha256=ddv_848pl53seKJoXe3mElmatQiwEScwfGkCXU1XZkM,504
78
- ormlambda/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- ormlambda/model/base_model.py,sha256=kgobamJ4GHmDEU-g2YTVIPTXPJFnNK3rsQOm2rXq4kU,903
80
- ormlambda/repository/__init__.py,sha256=4KAhKn6vWV7bslewvGMNqbbbUnz1DLnH4yy-M5QNAQA,112
81
- ormlambda/repository/base_repository.py,sha256=CzHU-yUCycMqTp8RFI0mj2hS2RgC9INu3X20HsgyEKA,1270
82
- ormlambda/repository/interfaces/IDatabaseConnection.py,sha256=pxczjx0b53yjjg5hvVDloMgUTFDahVC3HlJLQjo9_1w,283
83
- ormlambda/repository/interfaces/IRepositoryBase.py,sha256=_a1p3wZxF1rDabCcr6a44bGjHyxLvyGgmUO1c6vdv-U,3689
84
- ormlambda/repository/interfaces/__init__.py,sha256=t8Mn0aRZm8uF4MGaqjEANTTADCdOwNF0THZ_qebyzwo,126
85
- ormlambda/repository/response.py,sha256=TBmWUGGoZChjXVhZXU3F84eUUA1rf7VPeNi92Ae8-2I,4506
86
- ormlambda/sql/__init__.py,sha256=0CWQzfxhTRWXozoRsg460o_ZwjW9w4uyL5jQUcD4eHg,121
87
- ormlambda/sql/clause_info/__init__.py,sha256=wOr8M0ZW7fJ-OGHok9eExh7fVP6kiwqGckEsKdE0U7A,255
88
- ormlambda/sql/clause_info/aggregate_function_base.py,sha256=FCTrXhDvO_XDVBXZK5AiUHonDENHT_MFxW6kn2_--6E,3541
89
- ormlambda/sql/clause_info/clause_info.py,sha256=OdqAwJgrB66Ypwh_PLFHnkZQk4gHPXXrsn-sEXpmHxo,13014
90
- ormlambda/sql/clause_info/clause_info_context.py,sha256=Y32p3x4mqcdNHbAowrKaN_ldnGn7zvaP1UdAkWWryhM,2852
91
- ormlambda/sql/clause_info/interface/IAggregate.py,sha256=P-QPaTMAMHVR5M9-ClmL8wsj0uNGG5xpxjuAwWnzKxA,216
92
- ormlambda/sql/clause_info/interface/IClauseInfo.py,sha256=Gnr6vArgimCt0oJqW-_q2_5jMi8EDBW1wZ8rEF2uzTk,921
93
- ormlambda/sql/clause_info/interface/__init__.py,sha256=bTNYVMPuJebEvQpPa5LBQaAesGnfljQ8BKsj1UxN09k,100
94
- ormlambda/sql/clauses/__init__.py,sha256=9bkgw3jbd2HdB-WGQtpyHLr0K-SbCZcBU7KmHur7k1c,572
95
- ormlambda/sql/clauses/alias.py,sha256=W58fwVYq7GS_xuPCQNIlAu_cDQZuD1AzHmr8-SdxTIg,1301
96
- ormlambda/sql/clauses/count.py,sha256=I2-VFseieTw6tZlBy8jTJGbnW33OtgRwW0rFOumXLfs,1665
97
- ormlambda/sql/clauses/delete.py,sha256=tTSCcSD_F-z9rl4HwfJOeb_M_XJlg-LkyU3f6vVQNTc,2289
98
- ormlambda/sql/clauses/group_by.py,sha256=VC-XZ1Kk7cgnJjuu9Cu0dH1pUPBe60z_9hSiBL65puI,829
99
- ormlambda/sql/clauses/having.py,sha256=14ojNXefgsc_T70ZraONsKTBQCge1TD-Q5nMigo8GWk,466
100
- ormlambda/sql/clauses/insert.py,sha256=0Fsv41g--fC3VX3GHehlu5MoSqQ0MHAkeGs2xCM8vzU,3805
101
- ormlambda/sql/clauses/interfaces/IDelete.py,sha256=06ZEdbKBxsHSwsGMBu0E1om4WJjojZAm-L3b95eQrcc,139
102
- ormlambda/sql/clauses/interfaces/IInsert.py,sha256=YIfMPlKu7UGgnVpZuhpr0Mtnefe-O85hqk8-GZrVK7w,139
103
- ormlambda/sql/clauses/interfaces/ISelect.py,sha256=saA0Iat4lXfd1vc7a7t6Stc_3BJHAysGWH1AcmrhQhw,372
104
- ormlambda/sql/clauses/interfaces/IUpdate.py,sha256=U-3Wx8lyCglhxf9gCXWO3MVgydG6gfRpzp00_MHC5cU,168
105
- ormlambda/sql/clauses/interfaces/IUpsert.py,sha256=2m6Bcwa0X80IDLnf0QErqr01uYEydOnRta9_T1nxjK4,139
106
- ormlambda/sql/clauses/interfaces/__init__.py,sha256=JMWEyVwPEvx3NUgMOstCKLV5HemboHdF4KLwFeUEWwM,215
107
- ormlambda/sql/clauses/join/__init__.py,sha256=7hwAB-nKaMirTT6uNZ1JtYNkkIx5zMSa6jaqr28d8Cg,67
108
- ormlambda/sql/clauses/join/join_context.py,sha256=69R_X_RoWO2kXPgJ94Wck6s-sJjTIqFXpOifmLsYC9c,3497
109
- ormlambda/sql/clauses/joins.py,sha256=w0c_uHNe3BNqL9-rAdQaAFeM6ExJXTNENG_sO7I2HWI,5505
110
- ormlambda/sql/clauses/limit.py,sha256=NX9qUp_8Zd-0myZ80PhD2tbF72N5jsx_SaYakf7lNbU,345
111
- ormlambda/sql/clauses/new_join.py,sha256=e-tLvSQJJpTEQURYgLLoKZ6TrVsY8xGphBnqlEGg76A,3859
112
- ormlambda/sql/clauses/offset.py,sha256=FibzDho7Bc1UQchrPHjOakW_0BfZVupbuI62lHoha94,350
113
- ormlambda/sql/clauses/order.py,sha256=qOcz2T0NQNY0H7vt-jbvBRjTy3X5Lw-kGSuISTGfAPA,1609
114
- ormlambda/sql/clauses/select.py,sha256=gJfTqTCi32Knyp-rox_qo-JeoVYr6YWTEPl9FF8FsFg,1670
115
- ormlambda/sql/clauses/update.py,sha256=s4Vl_CmZzUYvdP2ThrTDz2ps_nU3_uwROQNICD06qsw,3319
116
- ormlambda/sql/clauses/upsert.py,sha256=1MlHSzIVXSnCnXx_0HqX_-JT1FAxaIKHImrv-OKjnWU,2250
117
- ormlambda/sql/clauses/where.py,sha256=Db1IpXnbqAwzZpaThFDSxkrCNLsop__aJ43cDtcZ2Sk,2129
118
- ormlambda/sql/column/__init__.py,sha256=MwBJznOoeNE7tK9oppVtC3784XPkKo0yq9VLlh2lWUY,41
119
- ormlambda/sql/column/column.py,sha256=ad4TOqxYJ3UJJ_Dhz_AxDvF5H_M__dS8X5eyI4VGQTU,8034
120
- ormlambda/sql/comparer.py,sha256=_KQ6gYe0eUg5aOL1i70mV8a1Qa1jI5UQr-0VfAMgVzk,5482
121
- ormlambda/sql/compiler.py,sha256=dSmF8RYQECPweKZI_TB9stDkLXTJy9FYvAQMNSCY8AY,12967
122
- ormlambda/sql/ddl.py,sha256=WhVoG_zlTT9DVZlnokHB8B1SC4ZXQSrXTQJ6vlnlpEY,1644
123
- ormlambda/sql/elements.py,sha256=ABWQQZn-3CnRLhxxMJYezCRqzt86b5KgZO6Qo55ReWQ,925
124
- ormlambda/sql/foreign_key.py,sha256=a3lLwuIZDo6XIWgEAW7AsmHE2BrF9fa3vMpK_Cq0T_s,5587
125
- ormlambda/sql/functions/__init__.py,sha256=hA8t3mUpV2p-pO4TVp5rjC5Yp7aIkWPsS8NpLi3DUh0,171
126
- ormlambda/sql/functions/concat.py,sha256=B3uh6SsNjK57jEYvyUW4YVpWGlByeapddDozCF7TYX4,1598
127
- ormlambda/sql/functions/max.py,sha256=wXNhFmOlMyD1sKcaBO9asQeXcfY0OvMQPkrlARVXgdg,1651
128
- ormlambda/sql/functions/min.py,sha256=MTRGXgwzbLgKk9PJpn6JGK1TU91hZe_VsTszngLOh7Q,1570
129
- ormlambda/sql/functions/sum.py,sha256=_TN8SitDDBVD6VlsHZH3RpmiE5hkFrGGgC3tuEctKjk,1614
130
- ormlambda/sql/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- ormlambda/sql/sqltypes.py,sha256=mvFn_YM0RTpQWj_ggE4SfbD_LxQhjJX4Kz2M3XUsuBk,14442
132
- ormlambda/sql/table/__init__.py,sha256=LLZcMLjwFxgBCPhdm5UQYYZDIbtYWCKPO9CbcXsy5zI,50
133
- ormlambda/sql/table/fields.py,sha256=ovNR3bJ473aKW-2NhbKr0iJlVpgW06jurHLob2IyZU8,2116
134
- ormlambda/sql/table/table.py,sha256=3p7JPdYu3tGEw3jfNk2Qm36NrBFvyGQXcdBNI2p-pkk,6567
135
- ormlambda/sql/table/table_constructor.py,sha256=c3Z-1El0onSClYBmAatoUBYUOT70tITVqtsDJMxZ9QU,1092
136
- ormlambda/sql/type_api.py,sha256=vepqMw6hR4zVhhNIYbtX491iVsxAfwHiSiD3uYQUGTE,1067
137
- ormlambda/sql/types.py,sha256=lQxC5gbhDPRckGSRJZ4rYSZr-XUvIMMH8WfkN1wtM1g,844
138
- ormlambda/sql/visitors.py,sha256=AHXxCEOME8-b_-YhFEzBv-Jd15vSoX5F-jEGrPPNRLE,2052
139
- ormlambda/statements/__init__.py,sha256=kmd5K0dXiLQ2xTYlhd2yXeG2l955RtpDkrAIkZlfad8,148
140
- ormlambda/statements/base_statement.py,sha256=Dw89C2-eSwtuNc8UqzQMkoVuykf0gIWyA81YoXu6CQQ,4985
141
- ormlambda/statements/interfaces/IStatements.py,sha256=b2eQBeEoRivehhopmm-gca6qRSZ3ld06YMEHQEVP1d8,12824
142
- ormlambda/statements/interfaces/__init__.py,sha256=a3RyTNVA7DwWMqvVi7gFYP4MArdU-RUYixJcxfc79HY,76
143
- ormlambda/statements/query_builder.py,sha256=xb_idOh7sZJweBMPwG7Ow1Sl6toNkEBWPEzUcr1XdjU,5851
144
- ormlambda/statements/statements.py,sha256=ZgZdrwXwj4QBpY_ogTy4S-8i3uH42LHEuGOMcInBR1c,12555
145
- ormlambda/statements/types.py,sha256=wNxgXOlL8zBT9PtVgDSnEZFmZdNAJhSzxsR9QLMzO0A,1873
146
- ormlambda/types/__init__.py,sha256=xVFaIMcfJvbbXs8BAvmBh8FwSiLn2R6yjZs9o-h08XM,323
147
- ormlambda/types/metadata.py,sha256=93eJItdVDOItf7YRJUVmN_m79WLa3Ge6I414ewYnKeM,624
148
- ormlambda/util/__init__.py,sha256=k0lT-9VrU5jkYV2IANr-lcANP8JlSqO0z-9zJ-pjDpw,3386
149
- ormlambda/util/load_module.py,sha256=W9NeCuwditS0UuQU0TlVHA65E74NYggEEfdWy1ap9ZI,648
150
- ormlambda/util/module_tree/__init__.py,sha256=LNQtqkwO1ul49Th3aHAIiyt0Wt899GmXCc44Uz1eDyY,53
151
- ormlambda/util/module_tree/dfs_traversal.py,sha256=lSF03G63XtJFLp03ueAmsHMBvhUkjptDbK3IugXm8iU,1425
152
- ormlambda/util/module_tree/dynamic_module.py,sha256=vJOqvm5-WKksudXBK1IcTn4WsuLxt1qXNISq-_21sy4,8705
153
- ormlambda/util/plugin_loader.py,sha256=p6WLn-MF1bQd2i2GHy98WQjNKmbQdqIUyTFIcBIHC5M,1034
154
- ormlambda/util/typing.py,sha256=Z7irz53ui0hoFnJTe06NX4JPl60_thgdjJIxh5gjGGk,169
155
- ormlambda-3.35.3.dist-info/AUTHORS,sha256=uWpOHaCPTOLbVkk5x9McoLwbgzSeCg7yILeDRyMGWGM,606
156
- ormlambda-3.35.3.dist-info/LICENSE,sha256=xBprFw8GJLdHMOoUqDk0427EvjIcbEREvXXVFULuuXU,1080
157
- ormlambda-3.35.3.dist-info/METADATA,sha256=M6Hi8T3ZDQYc_jagfS5fpMa7HPtwOnerYUw5DPOCXTU,13326
158
- ormlambda-3.35.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
159
- ormlambda-3.35.3.dist-info/RECORD,,