reydb 1.1.50__py3-none-any.whl → 1.1.51__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.
reydb/rbuild.py CHANGED
@@ -57,7 +57,7 @@ class DatabaseBuild(DatabaseBase):
57
57
 
58
58
  Parameters
59
59
  ----------
60
- db: Database instance.
60
+ db: `Database` instance.
61
61
  """
62
62
 
63
63
  # Set attribute.
reydb/rconfig.py CHANGED
@@ -54,7 +54,7 @@ class DatabaseConfig(object):
54
54
 
55
55
  Parameters
56
56
  ----------
57
- db: Database instance.
57
+ db: `Database` instance.
58
58
  """
59
59
 
60
60
  # Build.
reydb/rconn.py CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
 
12
12
  from typing import Self
13
+ from sqlalchemy import Transaction
13
14
 
14
15
  from .rbase import DatabaseBase
15
16
  from .rdb import Database
@@ -36,38 +37,19 @@ class DatabaseConnection(DatabaseBase):
36
37
 
37
38
  Parameters
38
39
  ----------
39
- db : Database instance.
40
+ db : `Database` instance.
40
41
  autocommit: Whether automatic commit connection.
41
42
  """
42
43
 
43
- # Build.
44
- self.db = db
45
- self.autocommit = autocommit
46
- self.conn = db.engine.connect()
47
- self.begin = None
48
-
49
-
50
- @property
51
- def execute(self):
52
- """
53
- Build `database execute` instance.
54
-
55
- Returns
56
- -------
57
- Instance.
58
- """
59
-
60
44
  # Import.
61
45
  from .rexec import DatabaseExecute
62
46
 
63
- # Create transaction.
64
- if self.begin is None:
65
- self.begin = self.conn.begin()
66
-
67
47
  # Build.
68
- exec = DatabaseExecute(self)
69
-
70
- return exec
48
+ self.db = db
49
+ self.autocommit = autocommit
50
+ self.conn = db.engine.connect()
51
+ self.exec = DatabaseExecute(self)
52
+ self.begin: Transaction | None = None
71
53
 
72
54
 
73
55
  def commit(self) -> None:
@@ -138,6 +120,23 @@ class DatabaseConnection(DatabaseBase):
138
120
  __del__ = close
139
121
 
140
122
 
123
+ @property
124
+ def execute(self):
125
+ """
126
+ Build `database execute` instance.
127
+
128
+ Returns
129
+ -------
130
+ Instance.
131
+ """
132
+
133
+ # Create transaction.
134
+ if self.begin is None:
135
+ self.begin = self.conn.begin()
136
+
137
+ return self.exec
138
+
139
+
141
140
  @property
142
141
  def insert_id(self) -> int:
143
142
  """
reydb/rerror.py CHANGED
@@ -37,7 +37,7 @@ class DatabaseError(DatabaseBase):
37
37
 
38
38
  Parameters
39
39
  ----------
40
- db: Database instance.
40
+ db: `Database` instance.
41
41
  """
42
42
 
43
43
  # Build.
reydb/rexec.py CHANGED
@@ -50,7 +50,7 @@ class DatabaseExecute(DatabaseBase):
50
50
 
51
51
  Parameters
52
52
  ----------
53
- dbconn : DatabaseConnection instance.
53
+ dbconn : `DatabaseConnection` instance.
54
54
  """
55
55
 
56
56
  # Build.
reydb/rfile.py CHANGED
@@ -38,7 +38,7 @@ class DatabaseFile(DatabaseBase):
38
38
 
39
39
  Parameters
40
40
  ----------
41
- db: Database instance.
41
+ db: `Database` instance.
42
42
  """
43
43
 
44
44
  # Build.
reydb/rinfo.py CHANGED
@@ -198,7 +198,7 @@ class DatabaseInformationSchema(DatabaseInformation):
198
198
 
199
199
  Parameters
200
200
  ----------
201
- db: Database instance.
201
+ db: `Database` instance.
202
202
  """
203
203
 
204
204
  # Set parameter.
@@ -262,7 +262,7 @@ class DatabaseInformationDatabase(DatabaseInformation):
262
262
 
263
263
  Parameters
264
264
  ----------
265
- db: Database instance.
265
+ db: `Database` instance.
266
266
  database : Database name.
267
267
  """
268
268
 
@@ -358,7 +358,7 @@ class DatabaseInformationTable(DatabaseInformation):
358
358
 
359
359
  Parameters
360
360
  ----------
361
- db: Database instance.
361
+ db: `Database` instance.
362
362
  database : Database name.
363
363
  table : Table name.
364
364
  """
@@ -453,7 +453,7 @@ class DatabaseInformationColumn(DatabaseInformation):
453
453
 
454
454
  Parameters
455
455
  ----------
456
- db: Database instance.
456
+ db: `Database` instance.
457
457
  database : Database name.
458
458
  table : Table name.
459
459
  column : Column name.
reydb/rorm.py CHANGED
@@ -9,22 +9,75 @@
9
9
  """
10
10
 
11
11
 
12
- from sqlmodel import SQLModel, Session
12
+ from typing import Self, Any, Type, TypeVar, Generic, Final
13
+ from functools import wraps as functools_wraps
14
+ from sqlalchemy.orm import SessionTransaction
15
+ from sqlalchemy.sql.dml import Insert, Update, Delete
16
+ from sqlmodel import SQLModel, Session, Field as sqlmodel_Field
17
+ from sqlmodel.sql._expression_select_cls import SelectOfScalar as Select
18
+ from reykit.rbase import CallableT, is_instance
13
19
 
14
20
  from .rbase import DatabaseBase
15
21
  from .rdb import Database
16
22
 
17
23
 
18
24
  __all__ = (
25
+ 'DatabaseORMBase',
26
+ 'DatabaseORMModel',
19
27
  'DatabaseORM',
28
+ 'DatabaseORMSession',
29
+ 'DatabaseORMStatement',
30
+ 'DatabaseORMStatementSelect',
31
+ 'DatabaseORMStatementInsert',
32
+ 'DatabaseORMStatementUpdate',
33
+ 'DatabaseORMStatementDelete'
20
34
  )
21
35
 
22
36
 
23
- class DatabaseORM(DatabaseBase):
37
+ class DatabaseORMBase(DatabaseBase):
38
+ """
39
+ Database ORM base type.
40
+ """
41
+
42
+
43
+ class DatabaseORMModel(DatabaseORMBase, SQLModel):
44
+ """
45
+ Database ORM model type.
46
+ """
47
+
48
+
49
+ def copy(self) -> Self:
50
+ """
51
+ Copy self instance to new instance.
52
+
53
+ Returns
54
+ -------
55
+ New instance.
56
+ """
57
+
58
+ # Copy.
59
+ data = self.model_dump()
60
+ instance = self.__class__(**data)
61
+
62
+ return instance
63
+
64
+
65
+ ModelT = TypeVar('ModelT', bound=DatabaseORMModel)
66
+
67
+
68
+ class DatabaseORM(DatabaseORMBase):
24
69
  """
25
70
  Database ORM type.
71
+
72
+ Attributes
73
+ ----------
74
+ DatabaseModel : Database ORM model type.
75
+ Field : Factory function of database ORM model field.
26
76
  """
27
77
 
78
+ Model = DatabaseORMModel
79
+ Field = sqlmodel_Field
80
+
28
81
 
29
82
  def __init__(self, db: Database) -> None:
30
83
  """
@@ -32,8 +85,483 @@ class DatabaseORM(DatabaseBase):
32
85
 
33
86
  Parameters
34
87
  ----------
35
- db: Database instance.
88
+ db: `Database` instance.
36
89
  """
37
90
 
38
91
  # Build.
39
92
  self.db = db
93
+
94
+ ## Avoid descriptor error.
95
+ self.Field = sqlmodel_Field
96
+
97
+
98
+ def session(self):
99
+ """
100
+ Build `DataBaseORMSession` instance.
101
+
102
+ Returns
103
+ -------
104
+ Instance.
105
+ """
106
+
107
+ # Build.
108
+ sess = DataBaseORMSession(self)
109
+
110
+ return sess
111
+
112
+
113
+ __call__ = session
114
+
115
+
116
+ class DataBaseORMSession(DatabaseORMBase):
117
+ """
118
+ Database ORM session type, based ORM model.
119
+ """
120
+
121
+
122
+ def __init__(self, orm: DatabaseORM) -> None:
123
+ """
124
+ Build instance attributes.
125
+
126
+ Parameters
127
+ ----------
128
+ orm : `DatabaseORM` instance.
129
+ """
130
+
131
+ # Build.
132
+ self.orm = orm
133
+ self.session = Session(orm.db.engine)
134
+ self.begin: SessionTransaction | None = None
135
+
136
+
137
+ def commit(self) -> None:
138
+ """
139
+ Commit cumulative executions.
140
+ """
141
+
142
+ # Commit.
143
+ if self.begin is not None:
144
+ self.begin.commit()
145
+ self.begin = None
146
+
147
+
148
+ def rollback(self) -> None:
149
+ """
150
+ Rollback cumulative executions.
151
+ """
152
+
153
+ # Rollback.
154
+ if self.begin is not None:
155
+ self.begin.rollback()
156
+ self.begin = None
157
+
158
+
159
+ def close(self) -> None:
160
+ """
161
+ Close database connection.
162
+ """
163
+
164
+ # Close.
165
+ self.session.close()
166
+
167
+
168
+ def __enter__(self) -> Self:
169
+ """
170
+ Enter syntax `with`.
171
+
172
+ Returns
173
+ -------
174
+ Self.
175
+ """
176
+
177
+ return self
178
+
179
+
180
+ def __exit__(
181
+ self,
182
+ exc_type: type[BaseException] | None,
183
+ *_
184
+ ) -> None:
185
+ """
186
+ Exit syntax `with`.
187
+
188
+ Parameters
189
+ ----------
190
+ exc_type : Exception type.
191
+ """
192
+
193
+ # Commit.
194
+ if exc_type is None:
195
+ self.commit()
196
+
197
+ # Close.
198
+ else:
199
+ self.close()
200
+
201
+
202
+ __del__ = close
203
+
204
+
205
+ def wrap_begin(method: CallableT) -> CallableT:
206
+ """
207
+ Decorator, create and store `SessionTransaction` instance.
208
+
209
+ Parameters
210
+ ----------
211
+ method : Method.
212
+
213
+ Returns
214
+ -------
215
+ Decorated method.
216
+ """
217
+
218
+
219
+ # Define.
220
+ @functools_wraps(method)
221
+ def wrap(self, *args, **kwargs):
222
+
223
+ # Create.
224
+ if self.begin is None:
225
+ self.begin = self.session.begin()
226
+
227
+ # Execute.
228
+ result = method(self, *args, **kwargs)
229
+
230
+ return result
231
+
232
+
233
+ return wrap
234
+
235
+
236
+ @wrap_begin
237
+ def get(self, model: Type[ModelT] | ModelT, key: Any | tuple[Any]) -> ModelT | None:
238
+ """
239
+ select records by primary key.
240
+
241
+ Parameters
242
+ ----------
243
+ model : ORM model type or instance.
244
+ key : Primary key.
245
+ - `Any`: Single primary key.
246
+ - `tuple[Any]`: Composite primary key.
247
+
248
+ Returns
249
+ -------
250
+ With records ORM model instance or null.
251
+ """
252
+
253
+ # Handle parameter.
254
+ if is_instance(model):
255
+ model = type(model)
256
+
257
+ # Get.
258
+ result = self.session.get(model, key)
259
+
260
+ return result
261
+
262
+
263
+ @wrap_begin
264
+ def gets(self, model: Type[ModelT] | ModelT, *keys: Any | tuple[Any]) -> list[ModelT]:
265
+ """
266
+ Select records by primary key sequence.
267
+
268
+ Parameters
269
+ ----------
270
+ model : ORM model type or instance.
271
+ keys : Primary key sequence.
272
+ - `Any`: Single primary key.
273
+ - `tuple[Any]`: Composite primary key.
274
+
275
+ Returns
276
+ -------
277
+ With records ORM model instance list.
278
+ """
279
+
280
+ # Handle parameter.
281
+ if is_instance(model):
282
+ model = type(model)
283
+
284
+ # Get.
285
+ results = [
286
+ result
287
+ for key in keys
288
+ if (result := self.session.get(model, key)) is not None
289
+ ]
290
+
291
+ return results
292
+
293
+
294
+ @wrap_begin
295
+ def all(self, model: Type[ModelT] | ModelT) -> list[ModelT]:
296
+ """
297
+ Select all records.
298
+
299
+ Parameters
300
+ ----------
301
+ model : ORM model type or instance.
302
+
303
+ Returns
304
+ -------
305
+ With records ORM model instance list.
306
+ """
307
+
308
+ # Get.
309
+ models = self.select(model).execute()
310
+
311
+ return models
312
+
313
+
314
+ @wrap_begin
315
+ def add(self, *models: DatabaseORMModel) -> None:
316
+ """
317
+ Insert records.
318
+
319
+ Parameters
320
+ ----------
321
+ models : ORM model instances.
322
+ """
323
+
324
+ # Add.
325
+ self.session.add_all(models)
326
+
327
+
328
+ @wrap_begin
329
+ def rm(self, *models: DatabaseORMModel) -> None:
330
+ """
331
+ Delete records.
332
+
333
+ Parameters
334
+ ----------
335
+ models : ORM model instances.
336
+ """
337
+
338
+ # Delete.
339
+ for model in models:
340
+ self.session.delete(model)
341
+
342
+
343
+ @wrap_begin
344
+ def refresh(self, *models: DatabaseORMModel) -> None:
345
+ """
346
+ Refresh records.
347
+
348
+ Parameters
349
+ ----------
350
+ models : ORM model instances.
351
+ """
352
+
353
+ # Refresh.
354
+ for model in models:
355
+ self.session.refresh(model)
356
+
357
+
358
+ @wrap_begin
359
+ def expire(self, *models: DatabaseORMModel) -> None:
360
+ """
361
+ Mark records to expire, refresh on next call.
362
+
363
+ Parameters
364
+ ----------
365
+ models : ORM model instances.
366
+ """
367
+
368
+ # Refresh.
369
+ for model in models:
370
+ self.session.expire(model)
371
+
372
+
373
+ @wrap_begin
374
+ def select(self, model: Type[ModelT] | ModelT):
375
+ """
376
+ Build `DatabaseORMSelect` instance.
377
+
378
+ Parameters
379
+ ----------
380
+ model : ORM model instance.
381
+
382
+ Returns
383
+ -------
384
+ Instance.
385
+ """
386
+
387
+ # Handle parameter.
388
+ if is_instance(model):
389
+ model = type(model)
390
+
391
+ # Build.
392
+ select = DatabaseORMStatementSelect[ModelT](self, model)
393
+
394
+ return select
395
+
396
+
397
+ @wrap_begin
398
+ def insert(self, model: Type[ModelT] | ModelT):
399
+ """
400
+ Build `DatabaseORMInsert` instance.
401
+
402
+ Parameters
403
+ ----------
404
+ model : ORM model instance.
405
+
406
+ Returns
407
+ -------
408
+ Instance.
409
+ """
410
+
411
+ # Handle parameter.
412
+ if is_instance(model):
413
+ model = type(model)
414
+
415
+ # Build.
416
+ select = DatabaseORMStatementInsert[ModelT](self, model)
417
+
418
+ return select
419
+
420
+
421
+ @wrap_begin
422
+ def update(self, model: Type[ModelT] | ModelT):
423
+ """
424
+ Build `DatabaseORMUpdate` instance.
425
+
426
+ Parameters
427
+ ----------
428
+ model : ORM model instance.
429
+
430
+ Returns
431
+ -------
432
+ Instance.
433
+ """
434
+
435
+ # Handle parameter.
436
+ if is_instance(model):
437
+ model = type(model)
438
+
439
+ # Build.
440
+ select = DatabaseORMStatementUpdate[ModelT](self, model)
441
+
442
+ return select
443
+
444
+
445
+ @wrap_begin
446
+ def delete(self, model: Type[ModelT] | ModelT):
447
+ """
448
+ Build `DatabaseORMDelete` instance.
449
+
450
+ Parameters
451
+ ----------
452
+ model : ORM model instance.
453
+
454
+ Returns
455
+ -------
456
+ Instance.
457
+ """
458
+
459
+ # Handle parameter.
460
+ if is_instance(model):
461
+ model = type(model)
462
+
463
+ # Build.
464
+ select = DatabaseORMStatementDelete[ModelT](self, model)
465
+
466
+ return select
467
+
468
+
469
+ class DatabaseORMStatement(DatabaseORMBase):
470
+ """
471
+ Database ORM statement type.
472
+ """
473
+
474
+
475
+ def __init__(
476
+ self,
477
+ sess: DataBaseORMSession,
478
+ model: Type[ModelT]
479
+ ) -> None:
480
+ """
481
+ Build instance attributes.
482
+
483
+ Parameters
484
+ ----------
485
+ sess : `DataBaseORMSession` instance.
486
+ model : ORM model instance.
487
+ """
488
+
489
+ # Build.
490
+ self.sess = sess
491
+ self.model = model
492
+
493
+ # Init.
494
+ super().__init__(self.model)
495
+
496
+
497
+ def execute(self) -> None:
498
+ """
499
+ Execute statement.
500
+ """
501
+
502
+ # Execute.
503
+ self.sess.session.exec(self)
504
+
505
+
506
+ class DatabaseORMStatementSelect(DatabaseORMStatement, Select, Generic[ModelT]):
507
+ """
508
+ Database ORM `select` statement type.
509
+
510
+ Attributes
511
+ ----------
512
+ inherit_cache : Compatible `Select` type.
513
+ """
514
+
515
+ inherit_cache: Final = True
516
+
517
+
518
+ def execute(self) -> list[ModelT]:
519
+ """
520
+ Execute self statement.
521
+
522
+ Returns
523
+ -------
524
+ With records ORM model instance list.
525
+ """
526
+
527
+ # Execute.
528
+ result = self.sess.session.exec(self)
529
+ models = list(result)
530
+
531
+ return models
532
+
533
+
534
+ class DatabaseORMStatementInsert(Generic[ModelT], DatabaseORMStatement, Insert):
535
+ """
536
+ Database ORM `insert` statement type.
537
+
538
+ Attributes
539
+ ----------
540
+ inherit_cache : Compatible `Select` type.
541
+ """
542
+
543
+ inherit_cache: Final = True
544
+
545
+
546
+ class DatabaseORMStatementUpdate(Generic[ModelT], DatabaseORMStatement, Update):
547
+ """
548
+ Database ORM `update` statement type.
549
+
550
+ Attributes
551
+ ----------
552
+ inherit_cache : Compatible `Update` type.
553
+ """
554
+
555
+ inherit_cache: Final = True
556
+
557
+
558
+ class DatabaseORMStatementDelete(Generic[ModelT], DatabaseORMStatement, Delete):
559
+ """
560
+ Database ORM `delete` statement type.
561
+
562
+ Attributes
563
+ ----------
564
+ inherit_cache : Compatible `Delete` type.
565
+ """
566
+
567
+ inherit_cache: Final = True
reydb/rparam.py CHANGED
@@ -39,7 +39,7 @@ class DatabaseParameters(DatabaseBase):
39
39
 
40
40
  Parameters
41
41
  ----------
42
- db: Database instance.
42
+ db: `Database` instance.
43
43
  global\\_ : Whether base global.
44
44
  """
45
45
 
@@ -261,7 +261,7 @@ class DatabaseParametersPragma(DatabaseParameters):
261
261
 
262
262
  Parameters
263
263
  ----------
264
- db: Database instance.
264
+ db: `Database` instance.
265
265
  """
266
266
 
267
267
  # Set parameter.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reydb
3
- Version: 1.1.50
3
+ Version: 1.1.51
4
4
  Summary: Database method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reydb/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -0,0 +1,17 @@
1
+ reydb/__init__.py,sha256=vwShFPkCDpLTrVGCq1AZgKCGQ8tBBodCxrvrib9ptrs,574
2
+ reydb/rall.py,sha256=GsXHqvT1k--U53HpDY4SALjIHN8rwgSxeXpJjH5gq2E,409
3
+ reydb/rbase.py,sha256=A7or663TcrQyq56P813WsV4BlApZIzXOPdZLsT7KwWw,7040
4
+ reydb/rbuild.py,sha256=6N8aLqCeX8JnOwQstVA2AuM0Rl5kUHx5Enrm2GGcGvo,31852
5
+ reydb/rconfig.py,sha256=kkqJg68bGZTE3JqH9dF1n-c1shuPJ4O8Bqg7J9Pd2CM,12659
6
+ reydb/rconn.py,sha256=48c9bkfMsC993RCBsa4Dvca_ysCwNhYU2d1xiULQ6g8,2813
7
+ reydb/rdb.py,sha256=Ijxja3lb73YmJfzpJBT3bQrqz9rV3TC5w2shQfwj0gQ,12919
8
+ reydb/rerror.py,sha256=Lsl7UECYdIFYjd9t7RhvNcHdyGStI3gffm8zmkK1DEc,9943
9
+ reydb/rexec.py,sha256=xROuWRjIj_j5Y2Iq41DhyyeQ7YNYCyv4pTih-7MxIoE,29073
10
+ reydb/rfile.py,sha256=8HSrlpuslSCcWzjeh2y4Fs7R_qnm3jS_c13CDrKxpaw,15182
11
+ reydb/rinfo.py,sha256=cQe5AJmPT_OyaXcNHCmYip2NETAKRvvESateR2STcw4,12745
12
+ reydb/rorm.py,sha256=miv5K73rJ_ut2hrwdX1HjJke8R94U3ns75NxhAig3_M,11605
13
+ reydb/rparam.py,sha256=six7wwQRKycoscv-AGyQqsPjA4_TZgcGQ_jk7FZytQs,6803
14
+ reydb-1.1.51.dist-info/METADATA,sha256=kmP4hYYegLCJrFtjs5V6pl5nBxI4fXSSjvlbYMBxXGI,1550
15
+ reydb-1.1.51.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
+ reydb-1.1.51.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
17
+ reydb-1.1.51.dist-info/RECORD,,
@@ -1,17 +0,0 @@
1
- reydb/__init__.py,sha256=vwShFPkCDpLTrVGCq1AZgKCGQ8tBBodCxrvrib9ptrs,574
2
- reydb/rall.py,sha256=GsXHqvT1k--U53HpDY4SALjIHN8rwgSxeXpJjH5gq2E,409
3
- reydb/rbase.py,sha256=A7or663TcrQyq56P813WsV4BlApZIzXOPdZLsT7KwWw,7040
4
- reydb/rbuild.py,sha256=8sYuqYR3jKlPfIrCwXk9o-q8cx-VNU0XsIsA6XKIKPo,31850
5
- reydb/rconfig.py,sha256=4vT0kKVdb9hJjHPQGtmvenPPRbtR1EP2k7jCgfPR0s8,12657
6
- reydb/rconn.py,sha256=IGRiOkk0TzWj-NQ2o6A1FnMqYnDvg2G1Dd-7cA0dpP0,2765
7
- reydb/rdb.py,sha256=Ijxja3lb73YmJfzpJBT3bQrqz9rV3TC5w2shQfwj0gQ,12919
8
- reydb/rerror.py,sha256=TBAzMsf7BrmelhXr5hbqOYVmmRFQtFkyC2SZQx81oYA,9941
9
- reydb/rexec.py,sha256=xIUbTULfmMkLBYZTPX6lyN5yob-eg6M7Xir1j3jf6PM,29071
10
- reydb/rfile.py,sha256=k5y3U179NED3gWdyZQ_JRuHmzFTKsZ8aMhxg04ENuHg,15180
11
- reydb/rinfo.py,sha256=aM3mMFwgT9pemrusS_YjXAVUCJOJ3V709bEWuB-fkuc,12737
12
- reydb/rorm.py,sha256=ZdXPCeflshlg-ABFpEAI7UFJWdqdBYbbi5yrCAE8Fo8,625
13
- reydb/rparam.py,sha256=M_tT8nesAResxoDVhk8cmG2N5woYMxXinSGIC2i_8ak,6799
14
- reydb-1.1.50.dist-info/METADATA,sha256=JtY5fp1zwawCi2KPhLqytLCK_ze6ZxgJ91r5fjIKmmc,1550
15
- reydb-1.1.50.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- reydb-1.1.50.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
17
- reydb-1.1.50.dist-info/RECORD,,
File without changes