reydb 1.2.3__py3-none-any.whl → 1.2.5__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
@@ -983,7 +983,7 @@ class DatabaseBuildSuper(DatabaseBase, Generic[DatabaseT]):
983
983
  """
984
984
 
985
985
  # Get.
986
- table = model._table()
986
+ table = model._get_table()
987
987
  text = f'TABLE `{self.db.database}`.`{table}`'
988
988
  if 'mysql_charset' in table.kwargs:
989
989
  text += f" | CHARSET '{table.kwargs['mysql_charset']}'"
@@ -1146,7 +1146,7 @@ class DatabaseBuild(DatabaseBuildSuper['rdb.Database']):
1146
1146
  or issubclass(params, DatabaseORMModel)
1147
1147
  ):
1148
1148
  database = self.db.database
1149
- table = params._table().name
1149
+ table = params._get_table().name
1150
1150
 
1151
1151
  ## Exist.
1152
1152
  if (
@@ -1367,7 +1367,7 @@ class DatabaseBuildAsync(DatabaseBuildSuper['rdb.DatabaseAsync']):
1367
1367
  or issubclass(params, DatabaseORMModel)
1368
1368
  ):
1369
1369
  database = self.db.database
1370
- table = params._table().name
1370
+ table = params._get_table().name
1371
1371
 
1372
1372
  ## Exist.
1373
1373
  if (
@@ -2463,7 +2463,7 @@ class DatabaseBuildSuper(DatabaseBase, Generic[DatabaseT]):
2463
2463
  """
2464
2464
 
2465
2465
  # Get.
2466
- table = model._table()
2466
+ table = model._get_table()
2467
2467
  text = f'TABLE `{self.db.database}`.`{table}`'
2468
2468
  if 'mysql_charset' in table.kwargs:
2469
2469
  text += f" | CHARSET '{table.kwargs['mysql_charset']}'"
@@ -2619,32 +2619,8 @@ class DatabaseBuild(DatabaseBuildSuper['rdb.Database']):
2619
2619
  # Table.
2620
2620
  for params in tables:
2621
2621
 
2622
- ## ORM.
2623
- if (
2624
- is_instance(params)
2625
- and isinstance(params, DatabaseORMModel)
2626
- or issubclass(params, DatabaseORMModel)
2627
- ):
2628
- database = self.db.database
2629
- table = params._table().name
2630
-
2631
- ## Exist.
2632
- if (
2633
- skip
2634
- and self.db.schema.exist(self.db.database, table)
2635
- ):
2636
- continue
2637
-
2638
- ## Confirm.
2639
- if ask:
2640
- text = self.get_orm_table_text(params)
2641
- self.input_confirm_build(text)
2642
-
2643
- ## Execute.
2644
- self.create_orm_table(params)
2645
-
2646
2622
  ## Parameter.
2647
- else:
2623
+ if type(params) == dict:
2648
2624
  path: str | tuple[str, str] = params['path']
2649
2625
  if type(path) == str:
2650
2626
  database, table = self.db.database, path
@@ -2668,6 +2644,26 @@ class DatabaseBuild(DatabaseBuildSuper['rdb.Database']):
2668
2644
  ### Execute.
2669
2645
  self.db.execute(sql)
2670
2646
 
2647
+ ## ORM.
2648
+ else:
2649
+ database = self.db.database
2650
+ table = params._get_table().name
2651
+
2652
+ ## Exist.
2653
+ if (
2654
+ skip
2655
+ and self.db.schema.exist(self.db.database, table)
2656
+ ):
2657
+ continue
2658
+
2659
+ ## Confirm.
2660
+ if ask:
2661
+ text = self.get_orm_table_text(params)
2662
+ self.input_confirm_build(text)
2663
+
2664
+ ## Execute.
2665
+ self.create_orm_table(params)
2666
+
2671
2667
  ## Report.
2672
2668
  text = f"Table '{table}' of database '{database}' build completed."
2673
2669
  print(text)
@@ -2847,7 +2843,7 @@ class DatabaseBuildAsync(DatabaseBuildSuper['rdb.DatabaseAsync']):
2847
2843
  or issubclass(params, DatabaseORMModel)
2848
2844
  ):
2849
2845
  database = self.db.database
2850
- table = params._table().name
2846
+ table = params._get_table().name
2851
2847
 
2852
2848
  ## Exist.
2853
2849
  if (
reydb/rconfig.py CHANGED
@@ -24,6 +24,7 @@ from .rbase import DatabaseBase
24
24
 
25
25
 
26
26
  __all__ = (
27
+ 'DatabaseTableConfig',
27
28
  'DatabaseConfigSuper',
28
29
  'DatabaseConfig',
29
30
  'DatabaseConfigAsync'
@@ -37,6 +38,20 @@ ConfigValueT = TypeVar('T', bound=ConfigValue) # Any.
37
38
  DatabaseT = TypeVar('DatabaseT', 'rdb.Database', 'rdb.DatabaseAsync')
38
39
 
39
40
 
41
+ class DatabaseTableConfig(rorm.Model, table=True):
42
+ """
43
+ Database `config` table model.
44
+ """
45
+
46
+ __comment__ = 'Config data table.'
47
+ create_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', not_null=True, index_n=True, comment='Config create time.')
48
+ update_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', index_n=True, comment='Config update time.')
49
+ key: str = rorm.Field(field_type=rorm.types.VARCHAR(50), key=True, comment='Config key.')
50
+ value: str = rorm.Field(field_type=rorm.types.TEXT, not_null=True, comment='Config value.')
51
+ type: str = rorm.Field(field_type=rorm.types.VARCHAR(50), not_null=True, comment='Config value type.')
52
+ note: str = rorm.Field(field_type=rorm.types.VARCHAR(500), comment='Config note.')
53
+
54
+
40
55
  class DatabaseConfigSuper(DatabaseBase, Generic[DatabaseT]):
41
56
  """
42
57
  Database config super type.
@@ -45,7 +60,6 @@ class DatabaseConfigSuper(DatabaseBase, Generic[DatabaseT]):
45
60
  Attributes
46
61
  ----------
47
62
  db_names : Database table name mapping dictionary.
48
- Config : Database `config` table model.
49
63
  """
50
64
 
51
65
  db_names = {
@@ -54,16 +68,6 @@ class DatabaseConfigSuper(DatabaseBase, Generic[DatabaseT]):
54
68
  }
55
69
 
56
70
 
57
- class Config(rorm.Model, table=True):
58
- __comment__ = 'Config data table.'
59
- create_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', not_null=True, index_n=True, comment='Config create time.')
60
- update_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', index_n=True, comment='Config update time.')
61
- key: str = rorm.Field(field_type=rorm.types.VARCHAR(50), key=True, comment='Config key.')
62
- value: str = rorm.Field(field_type=rorm.types.TEXT, not_null=True, comment='Config value.')
63
- type: str = rorm.Field(field_type=rorm.types.VARCHAR(50), not_null=True, comment='Config value type.')
64
- note: str = rorm.Field(field_type=rorm.types.VARCHAR(500), comment='Config note.')
65
-
66
-
67
71
  def __init__(self, db: DatabaseT) -> None:
68
72
  """
69
73
  Build instance attributes.
@@ -77,7 +81,7 @@ class DatabaseConfigSuper(DatabaseBase, Generic[DatabaseT]):
77
81
  self.db = db
78
82
 
79
83
 
80
- def handle_build_db(self) -> tuple[list[type[Config]], list[dict[str, Any]]] :
84
+ def handle_build_db(self) -> tuple[list[type[DatabaseTableConfig]], list[dict[str, Any]]] :
81
85
  """
82
86
  Handle method of check and build database tables, by `self.db_names`.
83
87
 
@@ -87,10 +91,10 @@ class DatabaseConfigSuper(DatabaseBase, Generic[DatabaseT]):
87
91
  """
88
92
 
89
93
  # Set parameter.
90
- self.Config._name(self.db_names['config'])
91
94
 
92
95
  ## Table.
93
- tables = [self.Config]
96
+ DatabaseTableConfig._set_name(self.db_names['config'])
97
+ tables = [DatabaseTableConfig]
94
98
 
95
99
  ## View stats.
96
100
  views_stats = [
reydb/rerror.py CHANGED
@@ -22,6 +22,7 @@ from .rbase import DatabaseBase
22
22
 
23
23
 
24
24
  __all__ = (
25
+ 'DatabaseTableError',
25
26
  'DatabaseErrorSuper',
26
27
  'DatabaseError',
27
28
  'DatabaseErrorAsync'
@@ -31,6 +32,20 @@ __all__ = (
31
32
  DatabaseT = TypeVar('DatabaseT', 'rdb.Database', 'rdb.DatabaseAsync')
32
33
 
33
34
 
35
+ class DatabaseTableError(rorm.Model, table=True):
36
+ """
37
+ Database `error` table model.
38
+ """
39
+
40
+ __comment__ = 'Error log table.'
41
+ create_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', not_null=True, index_n=True, comment='Record create time.')
42
+ id: int = rorm.Field(field_type=rorm.types_mysql.INTEGER(unsigned=True), key_auto=True, comment='ID.')
43
+ type: str = rorm.Field(field_type=rorm.types.VARCHAR(50), not_null=True, index_n=True, comment='Error type.')
44
+ data: str = rorm.Field(field_type=rorm.types.JSON, comment='Error data.')
45
+ stack: str = rorm.Field(field_type=rorm.types.JSON, comment='Error code traceback stack.')
46
+ note: str = rorm.Field(field_type=rorm.types.VARCHAR(500), comment='Error note.')
47
+
48
+
34
49
  class DatabaseErrorSuper(DatabaseBase, Generic[DatabaseT]):
35
50
  """
36
51
  Database error super type.
@@ -39,7 +54,6 @@ class DatabaseErrorSuper(DatabaseBase, Generic[DatabaseT]):
39
54
  Attributes
40
55
  ----------
41
56
  db_names : Database table name mapping dictionary.
42
- Error : Database `error` table model.
43
57
  """
44
58
 
45
59
  db_names = {
@@ -48,16 +62,6 @@ class DatabaseErrorSuper(DatabaseBase, Generic[DatabaseT]):
48
62
  }
49
63
 
50
64
 
51
- class Error(rorm.Model, table=True):
52
- __comment__ = 'Error log table.'
53
- create_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', not_null=True, index_n=True, comment='Record create time.')
54
- id: int = rorm.Field(field_type=rorm.types_mysql.INTEGER(unsigned=True), key_auto=True, comment='ID.')
55
- type: str = rorm.Field(field_type=rorm.types.VARCHAR(50), not_null=True, index_n=True, comment='Error type.')
56
- data: str = rorm.Field(field_type=rorm.types.JSON, comment='Error data.')
57
- stack: str = rorm.Field(field_type=rorm.types.JSON, comment='Error code traceback stack.')
58
- note: str = rorm.Field(field_type=rorm.types.VARCHAR(500), comment='Error note.')
59
-
60
-
61
65
  def __init__(self, db: DatabaseT) -> None:
62
66
  """
63
67
  Build instance attributes.
@@ -71,7 +75,7 @@ class DatabaseErrorSuper(DatabaseBase, Generic[DatabaseT]):
71
75
  self.db = db
72
76
 
73
77
 
74
- def handle_build_db(self) -> tuple[list[type[Error]], list[dict[str, Any]]]:
78
+ def handle_build_db(self) -> tuple[list[type[DatabaseTableError]], list[dict[str, Any]]]:
75
79
  """
76
80
  Handle method of check and build database tables, by `self.db_names`.
77
81
 
@@ -81,10 +85,10 @@ class DatabaseErrorSuper(DatabaseBase, Generic[DatabaseT]):
81
85
  """
82
86
 
83
87
  # Set parameter.
84
- self.Error._name(self.db_names['error'])
85
88
 
86
89
  ## Table.
87
- tables = [self.Error]
90
+ DatabaseTableError._set_name(self.db_names['error'])
91
+ tables = [DatabaseTableError]
88
92
 
89
93
  ## View stats.
90
94
  views_stats = [
reydb/rorm.py CHANGED
@@ -103,10 +103,11 @@ class DatabaseORMModelMeta(DatabaseORMBase, SQLModelMetaclass):
103
103
  kwargs : Type other key arguments.
104
104
  """
105
105
 
106
- # Handle parameter.
106
+ # Set parameter.
107
107
  if '__annotations__' in attrs:
108
108
  table_args = attrs.setdefault('__table_args__', {})
109
109
  table_args['quote'] = True
110
+ table_name = name.lower()
110
111
 
111
112
  ## Charset.
112
113
  attrs.setdefault('__charset__', 'utf8mb4')
@@ -114,7 +115,7 @@ class DatabaseORMModelMeta(DatabaseORMBase, SQLModelMetaclass):
114
115
 
115
116
  ## Name.
116
117
  if '__name__' in attrs:
117
- attrs['__tablename__'] = attrs.pop('__name__')
118
+ attrs['__tablename__'] = table_name = attrs.pop('__name__')
118
119
 
119
120
  ## Comment.
120
121
  if '__comment__' in attrs:
@@ -128,12 +129,43 @@ class DatabaseORMModelMeta(DatabaseORMBase, SQLModelMetaclass):
128
129
  sa_column_kwargs: dict = field.sa_column_kwargs
129
130
  sa_column_kwargs.setdefault('name', __name__)
130
131
 
132
+ ## Unique.
133
+ table = default_registry.metadata.tables.get(table_name)
134
+ if table is not None:
135
+ default_registry.metadata.remove(table)
136
+
131
137
  # Super.
132
138
  new_cls = super().__new__(cls, name, bases, attrs, **kwargs)
133
139
 
134
140
  return new_cls
135
141
 
136
142
 
143
+ def __init__(
144
+ cls,
145
+ name: str,
146
+ bases: tuple[Type],
147
+ attrs: dict[str, Any],
148
+ **kwargs: Any
149
+ ) -> None:
150
+ """
151
+ Build type attributes.
152
+ """
153
+
154
+ # Super.
155
+ super().__init__(name, bases, attrs, **kwargs)
156
+
157
+ # Set parameter.
158
+ if '__annotations__' in attrs:
159
+ table: Table = cls.__table__
160
+ for index in table.indexes:
161
+ index_name_prefix = ['u_', 'n_'][index.unique]
162
+ index_name = index_name_prefix + '_'.join(
163
+ column.key
164
+ for column in index.expressions
165
+ )
166
+ index.name = index_name
167
+
168
+
137
169
  class DatabaseORMModelField(DatabaseORMBase, FieldInfo):
138
170
  """
139
171
  Database ORM model filed type.
@@ -214,7 +246,7 @@ class DatabaseORMModelField(DatabaseORMBase, FieldInfo):
214
246
  **kwargs : Other key arguments.
215
247
  """
216
248
 
217
- # Handle parameter.
249
+ # Set parameter.
218
250
  kwargs = {
219
251
  key: value
220
252
  for key, value in kwargs.items()
@@ -312,7 +344,7 @@ class DatabaseORMModel(DatabaseORMBase, SQLModel, metaclass=model_metaclass):
312
344
 
313
345
 
314
346
  @classmethod
315
- def _table(cls_or_self) -> Table:
347
+ def _get_table(cls_or_self) -> Table:
316
348
  """
317
349
  Return mapping database table instance.
318
350
 
@@ -328,24 +360,24 @@ class DatabaseORMModel(DatabaseORMBase, SQLModel, metaclass=model_metaclass):
328
360
 
329
361
 
330
362
  @classmethod
331
- def _name(cls_or_self, name: str) -> None:
363
+ def _set_name(cls_or_self, name: str) -> None:
332
364
  """
333
365
  Set database table name.
334
366
  """
335
367
 
336
368
  # Get.
337
- table = cls_or_self._table()
369
+ table = cls_or_self._get_table()
338
370
  table.name = name
339
371
 
340
372
 
341
373
  @classmethod
342
- def _comment(cls_or_self, comment: str) -> None:
374
+ def _set_comment(cls_or_self, comment: str) -> None:
343
375
  """
344
376
  Set database table comment.
345
377
  """
346
378
 
347
379
  # Get.
348
- table = cls_or_self._table()
380
+ table = cls_or_self._get_table()
349
381
  table.comment = comment
350
382
 
351
383
 
@@ -578,7 +610,7 @@ class DatabaseORMSessionSuper(
578
610
  Instance.
579
611
  """
580
612
 
581
- # Handle parameter.
613
+ # Set parameter.
582
614
  if is_instance(model):
583
615
  model = type(model)
584
616
 
@@ -605,7 +637,7 @@ class DatabaseORMSessionSuper(
605
637
  Instance.
606
638
  """
607
639
  print(model)
608
- # Handle parameter.
640
+ # Set parameter.
609
641
  if is_instance(model):
610
642
  model = type(model)
611
643
 
@@ -632,7 +664,7 @@ class DatabaseORMSessionSuper(
632
664
  Instance.
633
665
  """
634
666
 
635
- # Handle parameter.
667
+ # Set parameter.
636
668
  if is_instance(model):
637
669
  model = type(model)
638
670
 
@@ -659,7 +691,7 @@ class DatabaseORMSessionSuper(
659
691
  Instance.
660
692
  """
661
693
 
662
- # Handle parameter.
694
+ # Set parameter.
663
695
  if is_instance(model):
664
696
  model = type(model)
665
697
 
@@ -846,9 +878,9 @@ class DatabaseORMSession(
846
878
  skip : Whether skip existing table.
847
879
  """
848
880
 
849
- # Handle parameter.
881
+ # Set parameter.
850
882
  tables = [
851
- model._table()
883
+ model._get_table()
852
884
  for model in models
853
885
  ]
854
886
 
@@ -875,9 +907,9 @@ class DatabaseORMSession(
875
907
  skip : Skip not exist table.
876
908
  """
877
909
 
878
- # Handle parameter.
910
+ # Set parameter.
879
911
  tables = [
880
- model._table()
912
+ model._get_table()
881
913
  for model in models
882
914
  ]
883
915
 
@@ -906,7 +938,7 @@ class DatabaseORMSession(
906
938
  With records ORM model instance or null.
907
939
  """
908
940
 
909
- # Handle parameter.
941
+ # Set parameter.
910
942
  if is_instance(model):
911
943
  model = type(model)
912
944
 
@@ -940,7 +972,7 @@ class DatabaseORMSession(
940
972
  With records ORM model instance list.
941
973
  """
942
974
 
943
- # Handle parameter.
975
+ # Set parameter.
944
976
  if is_instance(model):
945
977
  model = type(model)
946
978
 
@@ -968,7 +1000,7 @@ class DatabaseORMSession(
968
1000
  With records ORM model instance list.
969
1001
  """
970
1002
 
971
- # Handle parameter.
1003
+ # Set parameter.
972
1004
  if is_instance(model):
973
1005
  model = type(model)
974
1006
 
@@ -1212,9 +1244,9 @@ class DatabaseORMSessionAsync(
1212
1244
  skip : Whether skip existing table.
1213
1245
  """
1214
1246
 
1215
- # Handle parameter.
1247
+ # Set parameter.
1216
1248
  tables = [
1217
- model._table()
1249
+ model._get_table()
1218
1250
  for model in models
1219
1251
  ]
1220
1252
 
@@ -1242,9 +1274,9 @@ class DatabaseORMSessionAsync(
1242
1274
  skip : Skip not exist table.
1243
1275
  """
1244
1276
 
1245
- # Handle parameter.
1277
+ # Set parameter.
1246
1278
  tables = [
1247
- model._table()
1279
+ model._get_table()
1248
1280
  for model in models
1249
1281
  ]
1250
1282
 
@@ -1274,7 +1306,7 @@ class DatabaseORMSessionAsync(
1274
1306
  With records ORM model instance or null.
1275
1307
  """
1276
1308
 
1277
- # Handle parameter.
1309
+ # Set parameter.
1278
1310
  if is_instance(model):
1279
1311
  model = type(model)
1280
1312
 
@@ -1308,7 +1340,7 @@ class DatabaseORMSessionAsync(
1308
1340
  With records ORM model instance list.
1309
1341
  """
1310
1342
 
1311
- # Handle parameter.
1343
+ # Set parameter.
1312
1344
  if is_instance(model):
1313
1345
  model = type(model)
1314
1346
 
@@ -1336,7 +1368,7 @@ class DatabaseORMSessionAsync(
1336
1368
  With records ORM model instance list.
1337
1369
  """
1338
1370
 
1339
- # Handle parameter.
1371
+ # Set parameter.
1340
1372
  if is_instance(model):
1341
1373
  model = type(model)
1342
1374
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reydb
3
- Version: 1.2.3
3
+ Version: 1.2.5
4
4
  Summary: Database method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reydb/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -1,15 +1,15 @@
1
1
  reydb/__init__.py,sha256=4mnlkfJfkBfxBpCotVUJ86f4AnT8plqlFbGiH3vZ4PM,550
2
2
  reydb/rall.py,sha256=IxSPGh77xz7ndDC7J8kZ_66Gq_xTAztGtnELUku1Ouw,364
3
3
  reydb/rbase.py,sha256=vx37yV6LlWP89nWAfYyOf0Xm3N_e9eB8z5Mxe-aTEo4,8248
4
- reydb/rbuild.py,sha256=8frMtmY8gKc-uYYaJPso9sm8IS3_CyTHrL_F0Wv5RI0,80554
5
- reydb/rconfig.py,sha256=g428a0npVNgB3PMJiEpVRPwyvWm63G9KLcEru4-vPTU,19144
4
+ reydb/rbuild.py,sha256=imakdlqQXzQlbAukti3_REVU_h7IRRE3fwUk91LaIIM,80430
5
+ reydb/rconfig.py,sha256=D5YxVtFqVQmlTZ8ChqcNCz8qQJn4uievB-99Vk1QLko,19197
6
6
  reydb/rconn.py,sha256=guRaR8N6RuzZzujwaeq7HhKWTizF9SrUBqEAFjfjpoo,6909
7
7
  reydb/rdb.py,sha256=syyqZbEu92NbCj9O6_T6iAv7E46CyfQOC4T8qtPfHNs,14364
8
- reydb/rerror.py,sha256=LcXyinipQw-saQxGwbkXU4BTOjb29RMX9hnAFidJN3Q,14871
8
+ reydb/rerror.py,sha256=Cmbcz5CgpI2ro7CbFHUYWP6zuiFJoxy_ENzSUNuuwe8,14924
9
9
  reydb/rexec.py,sha256=djHx311c6mr1IjzNLqnGe-4yr3qNmYGUy4pHQA3WElQ,53042
10
10
  reydb/rinfo.py,sha256=LjrqTA7JJbWJsjXwV-zKpbE1htv-whg6239hoQj4yIU,18151
11
- reydb/rorm.py,sha256=AVV50cC5Vm8pT6gIeBUAelXd3OpdQSldPsZltL8ceOg,41375
12
- reydb-1.2.3.dist-info/METADATA,sha256=IULuCfrYhhcnoLjLulnsgEy4R_Dzc9s5P9IrhRCVsAM,1621
13
- reydb-1.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
14
- reydb-1.2.3.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
15
- reydb-1.2.3.dist-info/RECORD,,
11
+ reydb/rorm.py,sha256=baHqpNqnBaE1qQpsc5TaegJBbOhWnl748rPPzO7Ab6Q,42314
12
+ reydb-1.2.5.dist-info/METADATA,sha256=GZ1M-fFt8RAr7iuFWoczq2sonIH774TfFzxLfnoPyIM,1621
13
+ reydb-1.2.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
14
+ reydb-1.2.5.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
15
+ reydb-1.2.5.dist-info/RECORD,,
File without changes