ormlambda 2.9.0__py3-none-any.whl → 2.10.0__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.
- ormlambda/common/abstract_classes/abstract_model.py +25 -11
- ormlambda/common/abstract_classes/decomposition_query.py +106 -91
- ormlambda/common/errors/__init__.py +3 -0
- ormlambda/common/interfaces/ICustomAlias.py +4 -0
- ormlambda/common/interfaces/IDecompositionQuery.py +5 -1
- ormlambda/common/interfaces/IRepositoryBase.py +1 -1
- ormlambda/common/interfaces/IStatements.py +104 -42
- ormlambda/databases/my_sql/clauses/alias.py +31 -0
- ormlambda/databases/my_sql/clauses/group_by.py +2 -2
- ormlambda/databases/my_sql/clauses/joins.py +39 -1
- ormlambda/databases/my_sql/clauses/select.py +12 -9
- ormlambda/databases/my_sql/repository.py +36 -25
- ormlambda/databases/my_sql/statements.py +63 -37
- ormlambda/model_base.py +3 -3
- {ormlambda-2.9.0.dist-info → ormlambda-2.10.0.dist-info}/METADATA +1 -1
- {ormlambda-2.9.0.dist-info → ormlambda-2.10.0.dist-info}/RECORD +18 -15
- {ormlambda-2.9.0.dist-info → ormlambda-2.10.0.dist-info}/LICENSE +0 -0
- {ormlambda-2.9.0.dist-info → ormlambda-2.10.0.dist-info}/WHEEL +0 -0
@@ -4,6 +4,7 @@ import inspect
|
|
4
4
|
from mysql.connector import MySQLConnection, errors, errorcode
|
5
5
|
import functools
|
6
6
|
|
7
|
+
|
7
8
|
if TYPE_CHECKING:
|
8
9
|
from ormlambda import Table
|
9
10
|
from ormlambda.components.where.abstract_where import AbstractWhere
|
@@ -13,6 +14,8 @@ if TYPE_CHECKING:
|
|
13
14
|
from ormlambda.common.interfaces import IAggregate
|
14
15
|
from ormlambda.common.interfaces.IStatements import WhereTypes
|
15
16
|
|
17
|
+
from ormlambda.utils.foreign_key import ForeignKey
|
18
|
+
|
16
19
|
from ormlambda import AbstractSQLStatements
|
17
20
|
from .clauses import DeleteQuery
|
18
21
|
from .clauses import InsertQuery
|
@@ -29,7 +32,7 @@ from .clauses import Count
|
|
29
32
|
from .clauses import GroupBy
|
30
33
|
|
31
34
|
|
32
|
-
from ormlambda.utils import
|
35
|
+
from ormlambda.utils import Table
|
33
36
|
from ormlambda.common.enums import JoinType
|
34
37
|
from . import functions as func
|
35
38
|
|
@@ -46,8 +49,8 @@ def clear_list(f: Callable[..., Any]):
|
|
46
49
|
return wrapper
|
47
50
|
|
48
51
|
|
49
|
-
class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
50
|
-
def __init__(self, model: T, repository: IRepositoryBase[MySQLConnection]) -> None:
|
52
|
+
class MySQLStatements[T: Table, *Ts](AbstractSQLStatements[T, *Ts, MySQLConnection]):
|
53
|
+
def __init__(self, model: tuple[T, *Ts], repository: IRepositoryBase[MySQLConnection]) -> None:
|
51
54
|
super().__init__(model, repository=repository)
|
52
55
|
|
53
56
|
@property
|
@@ -141,24 +144,17 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
141
144
|
self,
|
142
145
|
selection: Callable[[T], tuple] = lambda x: "*",
|
143
146
|
alias=True,
|
144
|
-
alias_name=
|
147
|
+
alias_name="count",
|
145
148
|
) -> IQuery:
|
146
149
|
return Count[T](self._model, selection, alias=alias, alias_name=alias_name)
|
147
150
|
|
148
|
-
@override
|
149
|
-
def join(self, table_left: Table, table_right: Table, *, by: str) -> IStatements_two_generic[T, MySQLConnection]:
|
150
|
-
where = ForeignKey.MAPPED[table_left.__table_name__][table_right.__table_name__]
|
151
|
-
join_query = JoinSelector[table_left, Table](table_left, table_right, JoinType(by), where=where)
|
152
|
-
self._query_list["join"].append(join_query)
|
153
|
-
return self
|
154
|
-
|
155
151
|
@override
|
156
152
|
def where(self, conditions: WhereTypes = lambda: None, **kwargs) -> IStatements_two_generic[T, MySQLConnection]:
|
157
153
|
# FIXME [x]: I've wrapped self._model into tuple to pass it instance attr. Idk if it's correct
|
158
154
|
|
159
155
|
if isinstance(conditions, Iterable):
|
160
156
|
for x in conditions:
|
161
|
-
self._query_list["where"].append(WhereCondition[T](function=x, instances=
|
157
|
+
self._query_list["where"].append(WhereCondition[T](function=x, instances=self._models, **kwargs))
|
162
158
|
return self
|
163
159
|
|
164
160
|
where_query = WhereCondition[T](function=conditions, instances=(self._model,), **kwargs)
|
@@ -188,7 +184,30 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
188
184
|
return func.Sum[T](self._model, column=column, alias=alias, alias_name=alias_name)
|
189
185
|
|
190
186
|
@override
|
191
|
-
def
|
187
|
+
def join[*FKTables](
|
188
|
+
self,
|
189
|
+
table: Optional[T] = None,
|
190
|
+
relation: Optional[WhereCondition[T, *FKTables]] = None,
|
191
|
+
join_type: Optional[JoinType] = None,
|
192
|
+
) -> IStatements_two_generic[T, *FKTables, MySQLConnection]:
|
193
|
+
if isinstance(table, type) and issubclass(table, Table):
|
194
|
+
joins = ((table, relation, join_type),)
|
195
|
+
else:
|
196
|
+
if any(len(x) != 3 for x in table):
|
197
|
+
raise ValueError("Each tuple inside of 'join' method must contain the referenced table, relation between columns and join type")
|
198
|
+
joins = table
|
199
|
+
|
200
|
+
new_tables: list[Type[Table]] = [self._model]
|
201
|
+
|
202
|
+
for table, where, by in joins:
|
203
|
+
new_tables.append(table)
|
204
|
+
join_query = JoinSelector[T, type(table)](self._model, table, by=by, where=where)
|
205
|
+
self._query_list["join"].append(join_query)
|
206
|
+
self._models = new_tables
|
207
|
+
return self
|
208
|
+
|
209
|
+
@override
|
210
|
+
def select[TValue, TFlavour, *Ts](self, selector: Optional[Callable[[T, *Ts], tuple[TValue, *Ts]]] = lambda: None, *, flavour: Optional[Type[TFlavour]] = None, by: JoinType = JoinType.INNER_JOIN, **kwargs):
|
192
211
|
if len(inspect.signature(selector).parameters) == 0:
|
193
212
|
# COMMENT: if we do not specify any lambda function we assumed the user want to retreive only elements of the Model itself avoiding other models
|
194
213
|
result = self.select(selector=lambda x: (x,), flavour=flavour, by=by)
|
@@ -197,19 +216,28 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
197
216
|
if flavour:
|
198
217
|
return result
|
199
218
|
return () if not result else result[0]
|
200
|
-
|
219
|
+
|
220
|
+
joins = self._query_list.pop("join", None)
|
221
|
+
select = Select[T, *Ts](
|
222
|
+
self._models,
|
223
|
+
lambda_query=selector,
|
224
|
+
by=by,
|
225
|
+
alias=False,
|
226
|
+
joins=joins,
|
227
|
+
)
|
201
228
|
self._query_list["select"].append(select)
|
202
229
|
|
203
|
-
|
230
|
+
self._query: str = self._build()
|
231
|
+
|
204
232
|
if flavour:
|
205
|
-
result = self._return_flavour(query, flavour, select)
|
206
|
-
if issubclass(flavour, tuple) and isinstance(selector(self.
|
233
|
+
result = self._return_flavour(self.query, flavour, select, **kwargs)
|
234
|
+
if issubclass(flavour, tuple) and isinstance(selector(*self._models), property):
|
207
235
|
return tuple([x[0] for x in result])
|
208
236
|
return result
|
209
|
-
return self._return_model(select, query)
|
237
|
+
return self._return_model(select, self.query)
|
210
238
|
|
211
239
|
@override
|
212
|
-
def select_one[TValue, TFlavour, *Ts](self, selector: Optional[Callable[[T], tuple[TValue, *Ts]]] = lambda: None, *, flavour: Optional[Type[TFlavour]] = None, by: JoinType = JoinType.INNER_JOIN):
|
240
|
+
def select_one[TValue, TFlavour, *Ts](self, selector: Optional[Callable[[T, *Ts], tuple[TValue, *Ts]]] = lambda: None, *, flavour: Optional[Type[TFlavour]] = None, by: JoinType = JoinType.INNER_JOIN):
|
213
241
|
self.limit(1)
|
214
242
|
if len(inspect.signature(selector).parameters) == 0:
|
215
243
|
response = self.select(selector=lambda x: (x,), flavour=flavour, by=by)
|
@@ -226,11 +254,11 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
226
254
|
return tuple([res[0] for res in response])
|
227
255
|
|
228
256
|
@override
|
229
|
-
def group_by
|
257
|
+
def group_by(self, column: str | Callable[[T, *Ts], Any]):
|
230
258
|
if isinstance(column, str):
|
231
|
-
groupby = GroupBy[T, tuple[*Ts]](self.
|
259
|
+
groupby = GroupBy[T, tuple[*Ts]](self._models, lambda x: column)
|
232
260
|
else:
|
233
|
-
groupby = GroupBy[T, tuple[*Ts]](self.
|
261
|
+
groupby = GroupBy[T, tuple[*Ts]](self._models, column)
|
234
262
|
# Only can be one LIMIT SQL parameter. We only use the last LimitQuery
|
235
263
|
self._query_list["group by"].append(groupby)
|
236
264
|
return self
|
@@ -240,26 +268,21 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
240
268
|
def _build(self) -> str:
|
241
269
|
query_list: list[str] = []
|
242
270
|
for x in self.__order__:
|
243
|
-
|
271
|
+
if len(self._query_list) == 0:
|
272
|
+
break
|
273
|
+
|
274
|
+
sub_query: Optional[list[IQuery]] = self._query_list.pop(x, None)
|
244
275
|
if sub_query is None:
|
245
276
|
continue
|
246
277
|
|
247
278
|
if isinstance(sub_query[0], WhereCondition):
|
248
279
|
query_ = self.__build_where_clause(sub_query)
|
249
280
|
|
250
|
-
# we must check if any join already exists on query string
|
251
|
-
elif isinstance(sub_query[0], JoinSelector):
|
252
|
-
select_query: str = self._query_list["select"][0].query
|
253
|
-
query_ = ""
|
254
|
-
for join in sub_query:
|
255
|
-
if join.query not in select_query:
|
256
|
-
query_ += f"\n{join.query}"
|
257
|
-
|
258
281
|
elif isinstance((select := sub_query[0]), Select):
|
259
282
|
query_: str = ""
|
260
283
|
where_joins = self.__create_necessary_inner_join()
|
261
284
|
if where_joins:
|
262
|
-
select.
|
285
|
+
select._joins.update(where_joins)
|
263
286
|
query_ = select.query
|
264
287
|
|
265
288
|
else:
|
@@ -277,18 +300,21 @@ class MySQLStatements[T: Table](AbstractSQLStatements[T, MySQLConnection]):
|
|
277
300
|
query += f" {and_} ({clause})"
|
278
301
|
return query
|
279
302
|
|
280
|
-
def __create_necessary_inner_join(self) -> Optional[set[
|
303
|
+
def __create_necessary_inner_join(self) -> Optional[set[JoinSelector]]:
|
281
304
|
# When we applied filters in any table that we wont select any column, we need to add manually all neccessary joins to achieve positive result.
|
282
305
|
if "where" not in self._query_list:
|
283
306
|
return None
|
284
307
|
|
285
|
-
res = []
|
286
308
|
for where in self._query_list["where"]:
|
287
309
|
where: AbstractWhere
|
288
310
|
|
289
311
|
tables = where.get_involved_tables()
|
290
312
|
|
291
313
|
if tables:
|
292
|
-
[
|
293
|
-
|
294
|
-
|
314
|
+
# FIXME [ ]: Refactor to avoid copy and paste the same code of the '_add_fk_relationship' method
|
315
|
+
joins = []
|
316
|
+
for ltable, rtable in tables:
|
317
|
+
lambda_relationship = ForeignKey.MAPPED[ltable.__table_name__].referenced_tables[rtable.__table_name__].relationship
|
318
|
+
joins.append(JoinSelector(ltable, rtable, JoinType.INNER_JOIN, where=lambda_relationship))
|
319
|
+
return set(joins)
|
320
|
+
return None
|
ormlambda/model_base.py
CHANGED
@@ -10,20 +10,20 @@ from .databases.my_sql import MySQLStatements, MySQLRepository
|
|
10
10
|
# endregion
|
11
11
|
|
12
12
|
|
13
|
-
class BaseModel[T: Type[Table]]:
|
13
|
+
class BaseModel[T: Type[Table], *Ts]:
|
14
14
|
"""
|
15
15
|
Class to select the correct AbstractSQLStatements class depends on the repository.
|
16
16
|
|
17
17
|
Contiene los metodos necesarios para hacer consultas a una tabla
|
18
18
|
"""
|
19
19
|
|
20
|
-
statements_dicc: dict[Type[IRepositoryBase], Type[AbstractSQLStatements[T, IRepositoryBase]]] = {
|
20
|
+
statements_dicc: dict[Type[IRepositoryBase], Type[AbstractSQLStatements[T, *Ts, IRepositoryBase]]] = {
|
21
21
|
MySQLRepository: MySQLStatements,
|
22
22
|
}
|
23
23
|
|
24
24
|
# region Constructor
|
25
25
|
|
26
|
-
def __new__[TRepo](cls, model: T, repository: IRepositoryBase[TRepo]) -> IStatements_two_generic[T, TRepo]:
|
26
|
+
def __new__[TRepo](cls, model: tuple[T, *Ts], repository: IRepositoryBase[TRepo]) -> IStatements_two_generic[T, *Ts, TRepo]:
|
27
27
|
if repository is None:
|
28
28
|
raise ValueError("`None` cannot be passed to the `repository` attribute when calling the `BaseModel` class")
|
29
29
|
cls: AbstractSQLStatements[T, TRepo] = cls.statements_dicc.get(type(repository), None)
|
@@ -1,19 +1,21 @@
|
|
1
1
|
ormlambda/__init__.py,sha256=lWQxjf2cQ2bXenNaDpoy2Bar6imiPlzc4nK0hkIYhC0,723
|
2
2
|
ormlambda/common/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
3
3
|
ormlambda/common/abstract_classes/__init__.py,sha256=tk2J4Mn_nD-1ZjtMVBE5FH7KR_8ppN_1Kx1s6c38GjM,167
|
4
|
-
ormlambda/common/abstract_classes/abstract_model.py,sha256=
|
5
|
-
ormlambda/common/abstract_classes/decomposition_query.py,sha256=
|
4
|
+
ormlambda/common/abstract_classes/abstract_model.py,sha256=xmpr7_Hn5r1bRG2UtOKdhlZgXUqgFGuTTXsmm4LqmEI,5100
|
5
|
+
ormlambda/common/abstract_classes/decomposition_query.py,sha256=vX4H-QLGo7mEuDgyXuKSd_1RySywN3fSislrmU4M-No,13791
|
6
6
|
ormlambda/common/abstract_classes/non_query_base.py,sha256=5jhvyT7OZaJxlGp9XMP3vQ4ei5QQZBn-fFtJnD640mE,980
|
7
7
|
ormlambda/common/abstract_classes/query_base.py,sha256=6qUFPwsVx45kUW3b66pHiSyjhcH4mzbdkddlGeUnG7c,266
|
8
8
|
ormlambda/common/enums/__init__.py,sha256=4lVKCHi1JalwgNzjsAXqX-C54NJEH83y2v5baMO8fN4,103
|
9
9
|
ormlambda/common/enums/condition_types.py,sha256=mDPMrtzZu4IYv3-q5Zw4NNgwUoNAx4lih5SIDFRn1Qo,309
|
10
10
|
ormlambda/common/enums/join_type.py,sha256=7LEhE34bzYOwJxe8yxPJo_EjQpGylgClAPX1Wt3z4n4,292
|
11
|
+
ormlambda/common/errors/__init__.py,sha256=cWFOYuAauXxzYyGKVP97Uy0EIim5D8ewoTyK-hXkonY,184
|
11
12
|
ormlambda/common/interfaces/IAggregate.py,sha256=i9zZIYrstP2oolUYqR-udeQQl7M0NwSzrr-VUL0b5HI,271
|
12
|
-
ormlambda/common/interfaces/
|
13
|
+
ormlambda/common/interfaces/ICustomAlias.py,sha256=_4r8ew9trUY_DJWdYUZXhJCe_I62HUr7ZdsmW6Ln98M,121
|
14
|
+
ormlambda/common/interfaces/IDecompositionQuery.py,sha256=7B4cnbJbyESk8GltS1A8wCXr56T_6kZJNIij66CcvPA,1447
|
13
15
|
ormlambda/common/interfaces/INonQueryCommand.py,sha256=7CjLW4sKqkR5zUIGvhRXOtzTs6vypJW1a9EJHlgCw2c,260
|
14
16
|
ormlambda/common/interfaces/IQueryCommand.py,sha256=hfzCosK4-n8RJIb2PYs8b0qU3TNmfYluZXBf47KxxKs,331
|
15
|
-
ormlambda/common/interfaces/IRepositoryBase.py,sha256=
|
16
|
-
ormlambda/common/interfaces/IStatements.py,sha256=
|
17
|
+
ormlambda/common/interfaces/IRepositoryBase.py,sha256=M4pD4t6tXo5WaRhwu2vsza1FoAj2S-rEJKjPfKeSRn0,1134
|
18
|
+
ormlambda/common/interfaces/IStatements.py,sha256=bew7bXGQ2YdT2BKko-RS35_w5qBLgo8FKyaSbr7ijqc,13130
|
17
19
|
ormlambda/common/interfaces/__init__.py,sha256=00ca9a-u_A8DzyEyxPfBMxfqLKFzzUgJaeNmoRitAbA,360
|
18
20
|
ormlambda/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
21
|
ormlambda/components/delete/IDelete.py,sha256=06ZEdbKBxsHSwsGMBu0E1om4WJjojZAm-L3b95eQrcc,139
|
@@ -33,18 +35,19 @@ ormlambda/components/where/abstract_where.py,sha256=93tIJBC81OUUVV6il7mISibBwqJe
|
|
33
35
|
ormlambda/databases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
36
|
ormlambda/databases/my_sql/__init__.py,sha256=3PbOp4WqxJzFOSRwBozqyNtQi25cLLdiJFPDzEnSI70,115
|
35
37
|
ormlambda/databases/my_sql/clauses/__init__.py,sha256=F7p---sNQBefi_dgydV6Wp1YuOwDzvSQOdbcjWtBi2k,767
|
38
|
+
ormlambda/databases/my_sql/clauses/alias.py,sha256=yRBEJ1IlL7j8ZozjR-4jtQNkJZDweu-1VNLJEOyA4o8,887
|
36
39
|
ormlambda/databases/my_sql/clauses/count.py,sha256=UFJD-ELp-xvOyPbvYX37GvRZsP8M_axambnI7_h91yA,1177
|
37
40
|
ormlambda/databases/my_sql/clauses/create_database.py,sha256=WnWaAuhxeE71NZKXW37WZ-msRqjum7TFCSRK1IGdSTE,1279
|
38
41
|
ormlambda/databases/my_sql/clauses/delete.py,sha256=nUKNQgwF5YUfzk2icWpecYjrGk5DeXpp7eiwtWCf_3c,1924
|
39
42
|
ormlambda/databases/my_sql/clauses/drop_database.py,sha256=nMM0YUbcH0D9X3bU70Uc6S_dsIrAZy-IrYuIKrQZNrg,505
|
40
43
|
ormlambda/databases/my_sql/clauses/drop_table.py,sha256=meX4e-pVPQ7UwlPSHV5e9HHRblI1BlkLSc7ssl8WUiI,592
|
41
|
-
ormlambda/databases/my_sql/clauses/group_by.py,sha256=
|
44
|
+
ormlambda/databases/my_sql/clauses/group_by.py,sha256=k2idhaHOfLFwc6XNwhai6LMoAySp6efBTsWCOBVzsc8,1052
|
42
45
|
ormlambda/databases/my_sql/clauses/insert.py,sha256=mnOy62U4go0Ub6tmmgn8DRRWvPN12WRE5lqpCNbyR70,3136
|
43
|
-
ormlambda/databases/my_sql/clauses/joins.py,sha256=
|
46
|
+
ormlambda/databases/my_sql/clauses/joins.py,sha256=2SHRAah4FDzYwCDfpqz9SLU0cFH20mL-epP_FCPgBxM,4402
|
44
47
|
ormlambda/databases/my_sql/clauses/limit.py,sha256=a4lI8FVRKpfXwBQTXdkbVtlQkmzcjE20ymiCy1IaSc4,391
|
45
48
|
ormlambda/databases/my_sql/clauses/offset.py,sha256=81170JhsQndjKlDfQj1ll-tiYHQbW8SuU4IE3mhQF7Y,395
|
46
49
|
ormlambda/databases/my_sql/clauses/order.py,sha256=XTMtR5ObAJxq8eTHp392rykQD991ecJ95dyXXLUpgeU,1680
|
47
|
-
ormlambda/databases/my_sql/clauses/select.py,sha256=
|
50
|
+
ormlambda/databases/my_sql/clauses/select.py,sha256=q-rJWbYtfgKEGf-OOH3ToGY90KXGzH3FnKHTc0xsAbM,1962
|
48
51
|
ormlambda/databases/my_sql/clauses/update.py,sha256=d2nSLiGe8OUk0ASgGxchit_1DL-Yg8U-DUtBbgpfkto,1571
|
49
52
|
ormlambda/databases/my_sql/clauses/upsert.py,sha256=eW2pQ4ax-GKuXiaWKoSRSS1GrHuILJBsmj83ADbBQ34,1951
|
50
53
|
ormlambda/databases/my_sql/clauses/where_condition.py,sha256=UgU5vnTqFAx91wKwnECpww5tETDZ9F7IdC_SiZOgZhI,8336
|
@@ -53,9 +56,9 @@ ormlambda/databases/my_sql/functions/concat.py,sha256=cZztl5eSATpYMKVKfyPbul6Ooc
|
|
53
56
|
ormlambda/databases/my_sql/functions/max.py,sha256=zrO_RBKsHhyokEmSpPI6Yg5OY6Jf4GGp2RveBJdOuuA,1190
|
54
57
|
ormlambda/databases/my_sql/functions/min.py,sha256=SEVuUdIJNz9zM5za1kLTWalFkhErjsjyBb8SU8n0F94,1190
|
55
58
|
ormlambda/databases/my_sql/functions/sum.py,sha256=akKYr2dI8TZS5MDvybfHn_idhPOvEH0cj6mDRQIHe-M,1188
|
56
|
-
ormlambda/databases/my_sql/repository.py,sha256=
|
57
|
-
ormlambda/databases/my_sql/statements.py,sha256=
|
58
|
-
ormlambda/model_base.py,sha256=
|
59
|
+
ormlambda/databases/my_sql/repository.py,sha256=6qrP-JC4tvUxin3ixGKBeuqvU9cl9mkjNCdwjWZQA9Y,9059
|
60
|
+
ormlambda/databases/my_sql/statements.py,sha256=d__3pLfNObTmlUK8yL-N7fMm4C6hNZhrnCYM0CUEhgQ,12867
|
61
|
+
ormlambda/model_base.py,sha256=_UGTnin-yUi9ecT-28YY6TniIPdrje-jMFD3QXyZD6c,1243
|
59
62
|
ormlambda/utils/__init__.py,sha256=ywMdWqmA2jHj19-W-S04yfaYF5hv4IZ1lZDq0B8Jnjs,142
|
60
63
|
ormlambda/utils/column.py,sha256=SqbX8N63_RwXNrMXuVMOpatDw--aLc47o3kG1sEXhNs,3413
|
61
64
|
ormlambda/utils/dtypes.py,sha256=Ji4QOyKD0n9bKe7yXIIduy9uEX5BaXolQSIsx0NXYJY,7843
|
@@ -72,7 +75,7 @@ ormlambda/utils/module_tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
72
75
|
ormlambda/utils/module_tree/dfs_traversal.py,sha256=lSF03G63XtJFLp03ueAmsHMBvhUkjptDbK3IugXm8iU,1425
|
73
76
|
ormlambda/utils/module_tree/dynamic_module.py,sha256=zwvjU3U2cz6H2CDp9Gncs5D5bSAyfITNa2SDqFDl8rw,8551
|
74
77
|
ormlambda/utils/table_constructor.py,sha256=ch1geCSJIQnnv_D_uzfYk6do533kjtZyeCIh2t0_dkU,10863
|
75
|
-
ormlambda-2.
|
76
|
-
ormlambda-2.
|
77
|
-
ormlambda-2.
|
78
|
-
ormlambda-2.
|
78
|
+
ormlambda-2.10.0.dist-info/LICENSE,sha256=xBprFw8GJLdHMOoUqDk0427EvjIcbEREvXXVFULuuXU,1080
|
79
|
+
ormlambda-2.10.0.dist-info/METADATA,sha256=gPWslhcBiUlKHa2OCKwBwbWJUmZ4ObU12Kugr2Onv5M,8462
|
80
|
+
ormlambda-2.10.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
81
|
+
ormlambda-2.10.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|