lamindb 1.1.0__py3-none-any.whl → 1.2a2__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 (72) hide show
  1. lamindb/__init__.py +31 -26
  2. lamindb/_finish.py +9 -1
  3. lamindb/_tracked.py +26 -3
  4. lamindb/_view.py +2 -3
  5. lamindb/base/__init__.py +1 -1
  6. lamindb/base/ids.py +1 -10
  7. lamindb/base/users.py +1 -4
  8. lamindb/core/__init__.py +7 -65
  9. lamindb/core/_context.py +41 -10
  10. lamindb/core/_mapped_collection.py +4 -2
  11. lamindb/core/_settings.py +6 -6
  12. lamindb/core/_sync_git.py +1 -1
  13. lamindb/core/_track_environment.py +2 -1
  14. lamindb/core/datasets/_small.py +3 -3
  15. lamindb/core/loaders.py +22 -9
  16. lamindb/core/storage/_anndata_accessor.py +8 -3
  17. lamindb/core/storage/_backed_access.py +14 -7
  18. lamindb/core/storage/_pyarrow_dataset.py +24 -9
  19. lamindb/core/storage/_tiledbsoma.py +6 -4
  20. lamindb/core/storage/_zarr.py +32 -11
  21. lamindb/core/storage/objects.py +59 -26
  22. lamindb/core/storage/paths.py +16 -13
  23. lamindb/curators/__init__.py +173 -145
  24. lamindb/errors.py +1 -1
  25. lamindb/integrations/_vitessce.py +4 -4
  26. lamindb/migrations/0089_subsequent_runs.py +159 -0
  27. lamindb/migrations/0090_runproject_project_runs.py +73 -0
  28. lamindb/migrations/{0088_squashed.py → 0090_squashed.py} +245 -177
  29. lamindb/models/__init__.py +79 -0
  30. lamindb/{core → models}/_describe.py +3 -3
  31. lamindb/{core → models}/_django.py +8 -5
  32. lamindb/{core → models}/_feature_manager.py +103 -87
  33. lamindb/{_from_values.py → models/_from_values.py} +5 -2
  34. lamindb/{core/versioning.py → models/_is_versioned.py} +94 -6
  35. lamindb/{core → models}/_label_manager.py +10 -17
  36. lamindb/{core/relations.py → models/_relations.py} +8 -1
  37. lamindb/models/artifact.py +2601 -0
  38. lamindb/{_can_curate.py → models/can_curate.py} +349 -180
  39. lamindb/models/collection.py +683 -0
  40. lamindb/models/core.py +135 -0
  41. lamindb/models/feature.py +643 -0
  42. lamindb/models/flextable.py +163 -0
  43. lamindb/{_parents.py → models/has_parents.py} +55 -49
  44. lamindb/models/project.py +384 -0
  45. lamindb/{_query_manager.py → models/query_manager.py} +10 -8
  46. lamindb/{_query_set.py → models/query_set.py} +52 -30
  47. lamindb/models/record.py +1757 -0
  48. lamindb/models/run.py +563 -0
  49. lamindb/{_save.py → models/save.py} +18 -8
  50. lamindb/models/schema.py +732 -0
  51. lamindb/models/transform.py +360 -0
  52. lamindb/models/ulabel.py +249 -0
  53. {lamindb-1.1.0.dist-info → lamindb-1.2a2.dist-info}/METADATA +5 -5
  54. lamindb-1.2a2.dist-info/RECORD +94 -0
  55. lamindb/_artifact.py +0 -1361
  56. lamindb/_collection.py +0 -440
  57. lamindb/_feature.py +0 -316
  58. lamindb/_is_versioned.py +0 -40
  59. lamindb/_record.py +0 -1065
  60. lamindb/_run.py +0 -60
  61. lamindb/_schema.py +0 -347
  62. lamindb/_storage.py +0 -15
  63. lamindb/_transform.py +0 -170
  64. lamindb/_ulabel.py +0 -56
  65. lamindb/_utils.py +0 -9
  66. lamindb/base/validation.py +0 -63
  67. lamindb/core/_data.py +0 -491
  68. lamindb/core/fields.py +0 -12
  69. lamindb/models.py +0 -4435
  70. lamindb-1.1.0.dist-info/RECORD +0 -95
  71. {lamindb-1.1.0.dist-info → lamindb-1.2a2.dist-info}/LICENSE +0 -0
  72. {lamindb-1.1.0.dist-info → lamindb-1.2a2.dist-info}/WHEEL +0 -0
@@ -1,4 +1,4 @@
1
- # Generated by Django 5.2 on 2025-02-14 09:25
1
+ # Generated by Django 5.2 on 2025-03-05 11:53
2
2
 
3
3
  import django.core.validators
4
4
  import django.db.models.deletion
@@ -8,7 +8,10 @@ from django.db import migrations, models
8
8
  import lamindb.base.fields
9
9
  import lamindb.base.ids
10
10
  import lamindb.base.users
11
- import lamindb.models
11
+ import lamindb.models.can_curate
12
+ import lamindb.models.has_parents
13
+ import lamindb.models.record
14
+ import lamindb.models.run
12
15
 
13
16
 
14
17
  class Migration(migrations.Migration):
@@ -106,6 +109,8 @@ class Migration(migrations.Migration):
106
109
  ("lamindb", "0086_various"),
107
110
  ("lamindb", "0087_rename__schemas_m2m_artifact_feature_sets_and_more"),
108
111
  ("lamindb", "0088_schema_components"),
112
+ ("lamindb", "0089_subsequent_runs"),
113
+ ("lamindb", "0090_runproject_project_runs"),
109
114
  ]
110
115
 
111
116
  dependencies = [] # type: ignore
@@ -145,6 +150,16 @@ class Migration(migrations.Migration):
145
150
  migrations.CreateModel(
146
151
  name="Person",
147
152
  fields=[
153
+ (
154
+ "_branch_code",
155
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
156
+ ),
157
+ (
158
+ "_aux",
159
+ lamindb.base.fields.JSONField(
160
+ blank=True, db_default=None, default=None, null=True
161
+ ),
162
+ ),
148
163
  (
149
164
  "created_at",
150
165
  lamindb.base.fields.DateTimeField(
@@ -163,16 +178,6 @@ class Migration(migrations.Migration):
163
178
  editable=False,
164
179
  ),
165
180
  ),
166
- (
167
- "_branch_code",
168
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
169
- ),
170
- (
171
- "_aux",
172
- lamindb.base.fields.JSONField(
173
- blank=True, db_default=None, default=None, null=True
174
- ),
175
- ),
176
181
  ("id", models.AutoField(primary_key=True, serialize=False)),
177
182
  (
178
183
  "uid",
@@ -208,9 +213,9 @@ class Migration(migrations.Migration):
208
213
  "abstract": False,
209
214
  },
210
215
  bases=(
211
- lamindb.models.CanCurate,
216
+ lamindb.models.can_curate.CanCurate,
212
217
  models.Model,
213
- lamindb.models.ValidateFields,
218
+ lamindb.models.record.ValidateFields,
214
219
  ),
215
220
  ),
216
221
  migrations.CreateModel(
@@ -307,7 +312,7 @@ class Migration(migrations.Migration):
307
312
  options={
308
313
  "abstract": False,
309
314
  },
310
- bases=(models.Model, lamindb.models.CanCurate),
315
+ bases=(models.Model, lamindb.models.can_curate.CanCurate),
311
316
  ),
312
317
  migrations.CreateModel(
313
318
  name="Artifact",
@@ -328,6 +333,16 @@ class Migration(migrations.Migration):
328
333
  blank=True, db_index=True, default=True
329
334
  ),
330
335
  ),
336
+ (
337
+ "_branch_code",
338
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
339
+ ),
340
+ (
341
+ "_aux",
342
+ lamindb.base.fields.JSONField(
343
+ blank=True, db_default=None, default=None, null=True
344
+ ),
345
+ ),
331
346
  (
332
347
  "created_at",
333
348
  lamindb.base.fields.DateTimeField(
@@ -346,16 +361,6 @@ class Migration(migrations.Migration):
346
361
  editable=False,
347
362
  ),
348
363
  ),
349
- (
350
- "_branch_code",
351
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
352
- ),
353
- (
354
- "_aux",
355
- lamindb.base.fields.JSONField(
356
- blank=True, db_default=None, default=None, null=True
357
- ),
358
- ),
359
364
  ("id", models.AutoField(primary_key=True, serialize=False)),
360
365
  (
361
366
  "uid",
@@ -510,6 +515,16 @@ class Migration(migrations.Migration):
510
515
  blank=True, db_index=True, default=True
511
516
  ),
512
517
  ),
518
+ (
519
+ "_branch_code",
520
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
521
+ ),
522
+ (
523
+ "_aux",
524
+ lamindb.base.fields.JSONField(
525
+ blank=True, db_default=None, default=None, null=True
526
+ ),
527
+ ),
513
528
  (
514
529
  "created_at",
515
530
  lamindb.base.fields.DateTimeField(
@@ -528,16 +543,6 @@ class Migration(migrations.Migration):
528
543
  editable=False,
529
544
  ),
530
545
  ),
531
- (
532
- "_branch_code",
533
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
534
- ),
535
- (
536
- "_aux",
537
- lamindb.base.fields.JSONField(
538
- blank=True, db_default=None, default=None, null=True
539
- ),
540
- ),
541
546
  ("id", models.AutoField(primary_key=True, serialize=False)),
542
547
  (
543
548
  "uid",
@@ -644,7 +649,7 @@ class Migration(migrations.Migration):
644
649
  ),
645
650
  ),
646
651
  ],
647
- bases=(lamindb.models.LinkORM, models.Model),
652
+ bases=(lamindb.models.record.LinkORM, models.Model),
648
653
  ),
649
654
  migrations.AddField(
650
655
  model_name="collection",
@@ -678,7 +683,7 @@ class Migration(migrations.Migration):
678
683
  ),
679
684
  ),
680
685
  ],
681
- bases=(lamindb.models.LinkORM, models.Model),
686
+ bases=(lamindb.models.record.LinkORM, models.Model),
682
687
  ),
683
688
  migrations.CreateModel(
684
689
  name="CollectionReference",
@@ -703,11 +708,21 @@ class Migration(migrations.Migration):
703
708
  ),
704
709
  ),
705
710
  ],
706
- bases=(lamindb.models.LinkORM, models.Model),
711
+ bases=(lamindb.models.record.LinkORM, models.Model),
707
712
  ),
708
713
  migrations.CreateModel(
709
714
  name="Feature",
710
715
  fields=[
716
+ (
717
+ "_branch_code",
718
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
719
+ ),
720
+ (
721
+ "_aux",
722
+ lamindb.base.fields.JSONField(
723
+ blank=True, db_default=None, default=None, null=True
724
+ ),
725
+ ),
711
726
  (
712
727
  "created_at",
713
728
  lamindb.base.fields.DateTimeField(
@@ -726,16 +741,6 @@ class Migration(migrations.Migration):
726
741
  editable=False,
727
742
  ),
728
743
  ),
729
- (
730
- "_branch_code",
731
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
732
- ),
733
- (
734
- "_aux",
735
- lamindb.base.fields.JSONField(
736
- blank=True, db_default=None, default=None, null=True
737
- ),
738
- ),
739
744
  ("id", models.AutoField(primary_key=True, serialize=False)),
740
745
  (
741
746
  "uid",
@@ -833,7 +838,7 @@ class Migration(migrations.Migration):
833
838
  options={
834
839
  "abstract": False,
835
840
  },
836
- bases=(lamindb.models.CanCurate, models.Model),
841
+ bases=(lamindb.models.can_curate.CanCurate, models.Model),
837
842
  ),
838
843
  migrations.CreateModel(
839
844
  name="ArtifactReference",
@@ -881,7 +886,7 @@ class Migration(migrations.Migration):
881
886
  ),
882
887
  ),
883
888
  ],
884
- bases=(lamindb.models.LinkORM, models.Model),
889
+ bases=(lamindb.models.record.LinkORM, models.Model),
885
890
  ),
886
891
  migrations.CreateModel(
887
892
  name="ArtifactProject",
@@ -929,7 +934,7 @@ class Migration(migrations.Migration):
929
934
  ),
930
935
  ),
931
936
  ],
932
- bases=(lamindb.models.LinkORM, models.Model),
937
+ bases=(lamindb.models.record.LinkORM, models.Model),
933
938
  ),
934
939
  migrations.CreateModel(
935
940
  name="FeatureProject",
@@ -954,7 +959,7 @@ class Migration(migrations.Migration):
954
959
  ),
955
960
  ),
956
961
  ],
957
- bases=(lamindb.models.LinkORM, models.Model),
962
+ bases=(lamindb.models.record.LinkORM, models.Model),
958
963
  ),
959
964
  migrations.CreateModel(
960
965
  name="FeatureValue",
@@ -968,15 +973,6 @@ class Migration(migrations.Migration):
968
973
  verbose_name="ID",
969
974
  ),
970
975
  ),
971
- (
972
- "created_at",
973
- lamindb.base.fields.DateTimeField(
974
- blank=True,
975
- db_default=django.db.models.functions.datetime.Now(),
976
- db_index=True,
977
- editable=False,
978
- ),
979
- ),
980
976
  (
981
977
  "_branch_code",
982
978
  models.SmallIntegerField(db_default=1, db_index=True, default=1),
@@ -987,6 +983,15 @@ class Migration(migrations.Migration):
987
983
  blank=True, db_default=None, default=None, null=True
988
984
  ),
989
985
  ),
986
+ (
987
+ "created_at",
988
+ lamindb.base.fields.DateTimeField(
989
+ blank=True,
990
+ db_default=django.db.models.functions.datetime.Now(),
991
+ db_index=True,
992
+ editable=False,
993
+ ),
994
+ ),
990
995
  ("value", models.JSONField()),
991
996
  (
992
997
  "hash",
@@ -1046,7 +1051,7 @@ class Migration(migrations.Migration):
1046
1051
  ),
1047
1052
  ),
1048
1053
  ],
1049
- bases=(lamindb.models.LinkORM, models.Model),
1054
+ bases=(lamindb.models.record.LinkORM, models.Model),
1050
1055
  ),
1051
1056
  migrations.AddField(
1052
1057
  model_name="artifact",
@@ -1069,6 +1074,16 @@ class Migration(migrations.Migration):
1069
1074
  verbose_name="ID",
1070
1075
  ),
1071
1076
  ),
1077
+ (
1078
+ "_branch_code",
1079
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
1080
+ ),
1081
+ (
1082
+ "_aux",
1083
+ lamindb.base.fields.JSONField(
1084
+ blank=True, db_default=None, default=None, null=True
1085
+ ),
1086
+ ),
1072
1087
  (
1073
1088
  "created_at",
1074
1089
  lamindb.base.fields.DateTimeField(
@@ -1087,16 +1102,6 @@ class Migration(migrations.Migration):
1087
1102
  editable=False,
1088
1103
  ),
1089
1104
  ),
1090
- (
1091
- "_branch_code",
1092
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
1093
- ),
1094
- (
1095
- "_aux",
1096
- lamindb.base.fields.JSONField(
1097
- blank=True, db_default=None, default=None, null=True
1098
- ),
1099
- ),
1100
1105
  (
1101
1106
  "name",
1102
1107
  lamindb.base.fields.CharField(
@@ -1134,7 +1139,7 @@ class Migration(migrations.Migration):
1134
1139
  options={
1135
1140
  "abstract": False,
1136
1141
  },
1137
- bases=(lamindb.models.CanCurate, models.Model),
1142
+ bases=(lamindb.models.can_curate.CanCurate, models.Model),
1138
1143
  ),
1139
1144
  migrations.CreateModel(
1140
1145
  name="ParamValue",
@@ -1241,7 +1246,7 @@ class Migration(migrations.Migration):
1241
1246
  ),
1242
1247
  ),
1243
1248
  ],
1244
- bases=(lamindb.models.LinkORM, models.Model),
1249
+ bases=(lamindb.models.record.LinkORM, models.Model),
1245
1250
  ),
1246
1251
  migrations.AddField(
1247
1252
  model_name="artifact",
@@ -1281,11 +1286,21 @@ class Migration(migrations.Migration):
1281
1286
  ),
1282
1287
  ),
1283
1288
  ],
1284
- bases=(lamindb.models.LinkORM, models.Model),
1289
+ bases=(lamindb.models.record.LinkORM, models.Model),
1285
1290
  ),
1286
1291
  migrations.CreateModel(
1287
1292
  name="Project",
1288
1293
  fields=[
1294
+ (
1295
+ "_branch_code",
1296
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
1297
+ ),
1298
+ (
1299
+ "_aux",
1300
+ lamindb.base.fields.JSONField(
1301
+ blank=True, db_default=None, default=None, null=True
1302
+ ),
1303
+ ),
1289
1304
  (
1290
1305
  "created_at",
1291
1306
  lamindb.base.fields.DateTimeField(
@@ -1304,16 +1319,6 @@ class Migration(migrations.Migration):
1304
1319
  editable=False,
1305
1320
  ),
1306
1321
  ),
1307
- (
1308
- "_branch_code",
1309
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
1310
- ),
1311
- (
1312
- "_aux",
1313
- lamindb.base.fields.JSONField(
1314
- blank=True, db_default=None, default=None, null=True
1315
- ),
1316
- ),
1317
1322
  ("id", models.AutoField(primary_key=True, serialize=False)),
1318
1323
  (
1319
1324
  "uid",
@@ -1422,9 +1427,9 @@ class Migration(migrations.Migration):
1422
1427
  "abstract": False,
1423
1428
  },
1424
1429
  bases=(
1425
- lamindb.models.CanCurate,
1430
+ lamindb.models.can_curate.CanCurate,
1426
1431
  models.Model,
1427
- lamindb.models.ValidateFields,
1432
+ lamindb.models.record.ValidateFields,
1428
1433
  ),
1429
1434
  ),
1430
1435
  migrations.AddField(
@@ -1470,6 +1475,16 @@ class Migration(migrations.Migration):
1470
1475
  migrations.CreateModel(
1471
1476
  name="Reference",
1472
1477
  fields=[
1478
+ (
1479
+ "_branch_code",
1480
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
1481
+ ),
1482
+ (
1483
+ "_aux",
1484
+ lamindb.base.fields.JSONField(
1485
+ blank=True, db_default=None, default=None, null=True
1486
+ ),
1487
+ ),
1473
1488
  (
1474
1489
  "created_at",
1475
1490
  lamindb.base.fields.DateTimeField(
@@ -1488,16 +1503,6 @@ class Migration(migrations.Migration):
1488
1503
  editable=False,
1489
1504
  ),
1490
1505
  ),
1491
- (
1492
- "_branch_code",
1493
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
1494
- ),
1495
- (
1496
- "_aux",
1497
- lamindb.base.fields.JSONField(
1498
- blank=True, db_default=None, default=None, null=True
1499
- ),
1500
- ),
1501
1506
  ("id", models.AutoField(primary_key=True, serialize=False)),
1502
1507
  (
1503
1508
  "uid",
@@ -1610,9 +1615,9 @@ class Migration(migrations.Migration):
1610
1615
  "abstract": False,
1611
1616
  },
1612
1617
  bases=(
1613
- lamindb.models.CanCurate,
1618
+ lamindb.models.can_curate.CanCurate,
1614
1619
  models.Model,
1615
- lamindb.models.ValidateFields,
1620
+ lamindb.models.record.ValidateFields,
1616
1621
  ),
1617
1622
  ),
1618
1623
  migrations.AddField(
@@ -1778,7 +1783,7 @@ class Migration(migrations.Migration):
1778
1783
  name="run",
1779
1784
  field=lamindb.base.fields.ForeignKey(
1780
1785
  blank=True,
1781
- default=lamindb.models.current_run,
1786
+ default=lamindb.models.run.current_run,
1782
1787
  null=True,
1783
1788
  on_delete=django.db.models.deletion.PROTECT,
1784
1789
  related_name="+",
@@ -1790,7 +1795,7 @@ class Migration(migrations.Migration):
1790
1795
  name="run",
1791
1796
  field=lamindb.base.fields.ForeignKey(
1792
1797
  blank=True,
1793
- default=lamindb.models.current_run,
1798
+ default=lamindb.models.run.current_run,
1794
1799
  null=True,
1795
1800
  on_delete=django.db.models.deletion.PROTECT,
1796
1801
  related_name="+",
@@ -1802,7 +1807,7 @@ class Migration(migrations.Migration):
1802
1807
  name="run",
1803
1808
  field=lamindb.base.fields.ForeignKey(
1804
1809
  blank=True,
1805
- default=lamindb.models.current_run,
1810
+ default=lamindb.models.run.current_run,
1806
1811
  null=True,
1807
1812
  on_delete=django.db.models.deletion.PROTECT,
1808
1813
  related_name="+",
@@ -1814,7 +1819,7 @@ class Migration(migrations.Migration):
1814
1819
  name="run",
1815
1820
  field=lamindb.base.fields.ForeignKey(
1816
1821
  blank=True,
1817
- default=lamindb.models.current_run,
1822
+ default=lamindb.models.run.current_run,
1818
1823
  null=True,
1819
1824
  on_delete=django.db.models.deletion.PROTECT,
1820
1825
  related_name="+",
@@ -1826,7 +1831,7 @@ class Migration(migrations.Migration):
1826
1831
  name="run",
1827
1832
  field=lamindb.base.fields.ForeignKey(
1828
1833
  blank=True,
1829
- default=lamindb.models.current_run,
1834
+ default=lamindb.models.run.current_run,
1830
1835
  null=True,
1831
1836
  on_delete=django.db.models.deletion.PROTECT,
1832
1837
  related_name="+",
@@ -1838,7 +1843,7 @@ class Migration(migrations.Migration):
1838
1843
  name="run",
1839
1844
  field=lamindb.base.fields.ForeignKey(
1840
1845
  blank=True,
1841
- default=lamindb.models.current_run,
1846
+ default=lamindb.models.run.current_run,
1842
1847
  null=True,
1843
1848
  on_delete=django.db.models.deletion.PROTECT,
1844
1849
  related_name="+",
@@ -1850,7 +1855,7 @@ class Migration(migrations.Migration):
1850
1855
  name="run",
1851
1856
  field=lamindb.base.fields.ForeignKey(
1852
1857
  blank=True,
1853
- default=lamindb.models.current_run,
1858
+ default=lamindb.models.run.current_run,
1854
1859
  null=True,
1855
1860
  on_delete=django.db.models.deletion.PROTECT,
1856
1861
  related_name="+",
@@ -1862,7 +1867,7 @@ class Migration(migrations.Migration):
1862
1867
  name="run",
1863
1868
  field=lamindb.base.fields.ForeignKey(
1864
1869
  blank=True,
1865
- default=lamindb.models.current_run,
1870
+ default=lamindb.models.run.current_run,
1866
1871
  null=True,
1867
1872
  on_delete=django.db.models.deletion.PROTECT,
1868
1873
  related_name="+",
@@ -1874,7 +1879,7 @@ class Migration(migrations.Migration):
1874
1879
  name="run",
1875
1880
  field=lamindb.base.fields.ForeignKey(
1876
1881
  blank=True,
1877
- default=lamindb.models.current_run,
1882
+ default=lamindb.models.run.current_run,
1878
1883
  null=True,
1879
1884
  on_delete=django.db.models.deletion.PROTECT,
1880
1885
  related_name="+",
@@ -1886,7 +1891,7 @@ class Migration(migrations.Migration):
1886
1891
  name="run",
1887
1892
  field=lamindb.base.fields.ForeignKey(
1888
1893
  blank=True,
1889
- default=lamindb.models.current_run,
1894
+ default=lamindb.models.run.current_run,
1890
1895
  null=True,
1891
1896
  on_delete=django.db.models.deletion.PROTECT,
1892
1897
  related_name="+",
@@ -1898,7 +1903,7 @@ class Migration(migrations.Migration):
1898
1903
  name="run",
1899
1904
  field=lamindb.base.fields.ForeignKey(
1900
1905
  blank=True,
1901
- default=lamindb.models.current_run,
1906
+ default=lamindb.models.run.current_run,
1902
1907
  null=True,
1903
1908
  on_delete=django.db.models.deletion.PROTECT,
1904
1909
  related_name="+",
@@ -1907,9 +1912,11 @@ class Migration(migrations.Migration):
1907
1912
  ),
1908
1913
  migrations.AddField(
1909
1914
  model_name="collection",
1910
- name="_previous_runs",
1915
+ name="_subsequent_runs",
1911
1916
  field=models.ManyToManyField(
1912
- related_name="_output_collections_with_later_updates", to="lamindb.run"
1917
+ db_table="lamindb_collection__previous_runs",
1918
+ related_name="_recreated_collections",
1919
+ to="lamindb.run",
1913
1920
  ),
1914
1921
  ),
1915
1922
  migrations.AddField(
@@ -1936,7 +1943,7 @@ class Migration(migrations.Migration):
1936
1943
  name="run",
1937
1944
  field=lamindb.base.fields.ForeignKey(
1938
1945
  blank=True,
1939
- default=lamindb.models.current_run,
1946
+ default=lamindb.models.run.current_run,
1940
1947
  null=True,
1941
1948
  on_delete=django.db.models.deletion.PROTECT,
1942
1949
  related_name="+",
@@ -1948,7 +1955,7 @@ class Migration(migrations.Migration):
1948
1955
  name="run",
1949
1956
  field=lamindb.base.fields.ForeignKey(
1950
1957
  blank=True,
1951
- default=lamindb.models.current_run,
1958
+ default=lamindb.models.run.current_run,
1952
1959
  null=True,
1953
1960
  on_delete=django.db.models.deletion.PROTECT,
1954
1961
  related_name="+",
@@ -1960,7 +1967,7 @@ class Migration(migrations.Migration):
1960
1967
  name="run",
1961
1968
  field=lamindb.base.fields.ForeignKey(
1962
1969
  blank=True,
1963
- default=lamindb.models.current_run,
1970
+ default=lamindb.models.run.current_run,
1964
1971
  null=True,
1965
1972
  on_delete=django.db.models.deletion.PROTECT,
1966
1973
  related_name="+",
@@ -1972,7 +1979,7 @@ class Migration(migrations.Migration):
1972
1979
  name="run",
1973
1980
  field=lamindb.base.fields.ForeignKey(
1974
1981
  blank=True,
1975
- default=lamindb.models.current_run,
1982
+ default=lamindb.models.run.current_run,
1976
1983
  null=True,
1977
1984
  on_delete=django.db.models.deletion.PROTECT,
1978
1985
  related_name="+",
@@ -1981,9 +1988,11 @@ class Migration(migrations.Migration):
1981
1988
  ),
1982
1989
  migrations.AddField(
1983
1990
  model_name="artifact",
1984
- name="_previous_runs",
1991
+ name="_subsequent_runs",
1985
1992
  field=models.ManyToManyField(
1986
- related_name="_output_artifacts_with_later_updates", to="lamindb.run"
1993
+ db_table="lamindb_artifact__previous_runs",
1994
+ related_name="_recreated_artifacts",
1995
+ to="lamindb.run",
1987
1996
  ),
1988
1997
  ),
1989
1998
  migrations.AddField(
@@ -2051,7 +2060,7 @@ class Migration(migrations.Migration):
2051
2060
  options={
2052
2061
  "unique_together": {("run", "paramvalue")},
2053
2062
  },
2054
- bases=(models.Model, lamindb.models.LinkORM),
2063
+ bases=(models.Model, lamindb.models.record.LinkORM),
2055
2064
  ),
2056
2065
  migrations.AddField(
2057
2066
  model_name="run",
@@ -2063,8 +2072,9 @@ class Migration(migrations.Migration):
2063
2072
  ),
2064
2073
  ),
2065
2074
  migrations.CreateModel(
2066
- name="Schema",
2075
+ name="RunProject",
2067
2076
  fields=[
2077
+ ("id", models.BigAutoField(primary_key=True, serialize=False)),
2068
2078
  (
2069
2079
  "created_at",
2070
2080
  lamindb.base.fields.DateTimeField(
@@ -2074,6 +2084,51 @@ class Migration(migrations.Migration):
2074
2084
  editable=False,
2075
2085
  ),
2076
2086
  ),
2087
+ (
2088
+ "project",
2089
+ lamindb.base.fields.ForeignKey(
2090
+ blank=True,
2091
+ on_delete=django.db.models.deletion.PROTECT,
2092
+ related_name="links_run",
2093
+ to="lamindb.project",
2094
+ ),
2095
+ ),
2096
+ (
2097
+ "run",
2098
+ lamindb.base.fields.ForeignKey(
2099
+ blank=True,
2100
+ on_delete=django.db.models.deletion.CASCADE,
2101
+ related_name="links_project",
2102
+ to="lamindb.run",
2103
+ ),
2104
+ ),
2105
+ (
2106
+ "created_by",
2107
+ lamindb.base.fields.ForeignKey(
2108
+ blank=True,
2109
+ default=lamindb.base.users.current_user_id,
2110
+ editable=False,
2111
+ on_delete=django.db.models.deletion.PROTECT,
2112
+ related_name="+",
2113
+ to="lamindb.user",
2114
+ ),
2115
+ ),
2116
+ ],
2117
+ options={
2118
+ "unique_together": {("run", "project")},
2119
+ },
2120
+ bases=(models.Model, lamindb.models.record.LinkORM),
2121
+ ),
2122
+ migrations.AddField(
2123
+ model_name="project",
2124
+ name="runs",
2125
+ field=models.ManyToManyField(
2126
+ related_name="projects", through="lamindb.RunProject", to="lamindb.run"
2127
+ ),
2128
+ ),
2129
+ migrations.CreateModel(
2130
+ name="Schema",
2131
+ fields=[
2077
2132
  (
2078
2133
  "_branch_code",
2079
2134
  models.SmallIntegerField(db_default=1, db_index=True, default=1),
@@ -2084,6 +2139,15 @@ class Migration(migrations.Migration):
2084
2139
  blank=True, db_default=None, default=None, null=True
2085
2140
  ),
2086
2141
  ),
2142
+ (
2143
+ "created_at",
2144
+ lamindb.base.fields.DateTimeField(
2145
+ blank=True,
2146
+ db_default=django.db.models.functions.datetime.Now(),
2147
+ db_index=True,
2148
+ editable=False,
2149
+ ),
2150
+ ),
2087
2151
  ("id", models.AutoField(primary_key=True, serialize=False)),
2088
2152
  (
2089
2153
  "uid",
@@ -2214,7 +2278,7 @@ class Migration(migrations.Migration):
2214
2278
  "run",
2215
2279
  lamindb.base.fields.ForeignKey(
2216
2280
  blank=True,
2217
- default=lamindb.models.current_run,
2281
+ default=lamindb.models.run.current_run,
2218
2282
  null=True,
2219
2283
  on_delete=django.db.models.deletion.PROTECT,
2220
2284
  related_name="+",
@@ -2246,7 +2310,7 @@ class Migration(migrations.Migration):
2246
2310
  options={
2247
2311
  "abstract": False,
2248
2312
  },
2249
- bases=(lamindb.models.CanCurate, models.Model),
2313
+ bases=(lamindb.models.can_curate.CanCurate, models.Model),
2250
2314
  ),
2251
2315
  migrations.CreateModel(
2252
2316
  name="ArtifactSchema",
@@ -2286,7 +2350,7 @@ class Migration(migrations.Migration):
2286
2350
  "run",
2287
2351
  lamindb.base.fields.ForeignKey(
2288
2352
  blank=True,
2289
- default=lamindb.models.current_run,
2353
+ default=lamindb.models.run.current_run,
2290
2354
  null=True,
2291
2355
  on_delete=django.db.models.deletion.PROTECT,
2292
2356
  related_name="+",
@@ -2314,7 +2378,7 @@ class Migration(migrations.Migration):
2314
2378
  ),
2315
2379
  ),
2316
2380
  ],
2317
- bases=(lamindb.models.LinkORM, models.Model),
2381
+ bases=(lamindb.models.record.LinkORM, models.Model),
2318
2382
  ),
2319
2383
  migrations.AddField(
2320
2384
  model_name="artifact",
@@ -2378,7 +2442,7 @@ class Migration(migrations.Migration):
2378
2442
  "run",
2379
2443
  lamindb.base.fields.ForeignKey(
2380
2444
  blank=True,
2381
- default=lamindb.models.current_run,
2445
+ default=lamindb.models.run.current_run,
2382
2446
  null=True,
2383
2447
  on_delete=django.db.models.deletion.PROTECT,
2384
2448
  related_name="+",
@@ -2400,7 +2464,7 @@ class Migration(migrations.Migration):
2400
2464
  options={
2401
2465
  "unique_together": {("composite", "component"), ("composite", "slot")},
2402
2466
  },
2403
- bases=(lamindb.models.LinkORM, models.Model),
2467
+ bases=(lamindb.models.record.LinkORM, models.Model),
2404
2468
  ),
2405
2469
  migrations.AddField(
2406
2470
  model_name="schema",
@@ -2437,7 +2501,7 @@ class Migration(migrations.Migration):
2437
2501
  options={
2438
2502
  "unique_together": {("schema", "feature")},
2439
2503
  },
2440
- bases=(models.Model, lamindb.models.LinkORM),
2504
+ bases=(models.Model, lamindb.models.record.LinkORM),
2441
2505
  ),
2442
2506
  migrations.AddField(
2443
2507
  model_name="feature",
@@ -2474,7 +2538,7 @@ class Migration(migrations.Migration):
2474
2538
  options={
2475
2539
  "unique_together": {("schema", "param")},
2476
2540
  },
2477
- bases=(models.Model, lamindb.models.LinkORM),
2541
+ bases=(models.Model, lamindb.models.record.LinkORM),
2478
2542
  ),
2479
2543
  migrations.AddField(
2480
2544
  model_name="param",
@@ -2511,7 +2575,7 @@ class Migration(migrations.Migration):
2511
2575
  "run",
2512
2576
  lamindb.base.fields.ForeignKey(
2513
2577
  blank=True,
2514
- default=lamindb.models.current_run,
2578
+ default=lamindb.models.run.current_run,
2515
2579
  null=True,
2516
2580
  on_delete=django.db.models.deletion.PROTECT,
2517
2581
  related_name="+",
@@ -2542,7 +2606,7 @@ class Migration(migrations.Migration):
2542
2606
  options={
2543
2607
  "unique_together": {("schema", "project")},
2544
2608
  },
2545
- bases=(lamindb.models.LinkORM, models.Model),
2609
+ bases=(lamindb.models.record.LinkORM, models.Model),
2546
2610
  ),
2547
2611
  migrations.AddField(
2548
2612
  model_name="project",
@@ -2666,6 +2730,16 @@ class Migration(migrations.Migration):
2666
2730
  migrations.CreateModel(
2667
2731
  name="Storage",
2668
2732
  fields=[
2733
+ (
2734
+ "_branch_code",
2735
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
2736
+ ),
2737
+ (
2738
+ "_aux",
2739
+ lamindb.base.fields.JSONField(
2740
+ blank=True, db_default=None, default=None, null=True
2741
+ ),
2742
+ ),
2669
2743
  (
2670
2744
  "created_at",
2671
2745
  lamindb.base.fields.DateTimeField(
@@ -2684,16 +2758,6 @@ class Migration(migrations.Migration):
2684
2758
  editable=False,
2685
2759
  ),
2686
2760
  ),
2687
- (
2688
- "_branch_code",
2689
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
2690
- ),
2691
- (
2692
- "_aux",
2693
- lamindb.base.fields.JSONField(
2694
- blank=True, db_default=None, default=None, null=True
2695
- ),
2696
- ),
2697
2761
  ("id", models.AutoField(primary_key=True, serialize=False)),
2698
2762
  (
2699
2763
  "uid",
@@ -2756,7 +2820,7 @@ class Migration(migrations.Migration):
2756
2820
  "run",
2757
2821
  lamindb.base.fields.ForeignKey(
2758
2822
  blank=True,
2759
- default=lamindb.models.current_run,
2823
+ default=lamindb.models.run.current_run,
2760
2824
  null=True,
2761
2825
  on_delete=django.db.models.deletion.PROTECT,
2762
2826
  related_name="+",
@@ -2988,7 +3052,7 @@ class Migration(migrations.Migration):
2988
3052
  "run",
2989
3053
  lamindb.base.fields.ForeignKey(
2990
3054
  blank=True,
2991
- default=lamindb.models.current_run,
3055
+ default=lamindb.models.run.current_run,
2992
3056
  null=True,
2993
3057
  on_delete=django.db.models.deletion.PROTECT,
2994
3058
  related_name="+",
@@ -3019,7 +3083,7 @@ class Migration(migrations.Migration):
3019
3083
  options={
3020
3084
  "unique_together": {("transform", "project")},
3021
3085
  },
3022
- bases=(lamindb.models.LinkORM, models.Model),
3086
+ bases=(lamindb.models.record.LinkORM, models.Model),
3023
3087
  ),
3024
3088
  migrations.AddField(
3025
3089
  model_name="project",
@@ -3056,7 +3120,7 @@ class Migration(migrations.Migration):
3056
3120
  "run",
3057
3121
  lamindb.base.fields.ForeignKey(
3058
3122
  blank=True,
3059
- default=lamindb.models.current_run,
3123
+ default=lamindb.models.run.current_run,
3060
3124
  null=True,
3061
3125
  on_delete=django.db.models.deletion.PROTECT,
3062
3126
  related_name="+",
@@ -3087,7 +3151,7 @@ class Migration(migrations.Migration):
3087
3151
  options={
3088
3152
  "unique_together": {("transform", "reference")},
3089
3153
  },
3090
- bases=(lamindb.models.LinkORM, models.Model),
3154
+ bases=(lamindb.models.record.LinkORM, models.Model),
3091
3155
  ),
3092
3156
  migrations.AddField(
3093
3157
  model_name="reference",
@@ -3101,6 +3165,16 @@ class Migration(migrations.Migration):
3101
3165
  migrations.CreateModel(
3102
3166
  name="ULabel",
3103
3167
  fields=[
3168
+ (
3169
+ "_branch_code",
3170
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
3171
+ ),
3172
+ (
3173
+ "_aux",
3174
+ lamindb.base.fields.JSONField(
3175
+ blank=True, db_default=None, default=None, null=True
3176
+ ),
3177
+ ),
3104
3178
  (
3105
3179
  "created_at",
3106
3180
  lamindb.base.fields.DateTimeField(
@@ -3119,16 +3193,6 @@ class Migration(migrations.Migration):
3119
3193
  editable=False,
3120
3194
  ),
3121
3195
  ),
3122
- (
3123
- "_branch_code",
3124
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
3125
- ),
3126
- (
3127
- "_aux",
3128
- lamindb.base.fields.JSONField(
3129
- blank=True, db_default=None, default=None, null=True
3130
- ),
3131
- ),
3132
3196
  ("id", models.AutoField(primary_key=True, serialize=False)),
3133
3197
  (
3134
3198
  "uid",
@@ -3193,7 +3257,7 @@ class Migration(migrations.Migration):
3193
3257
  "run",
3194
3258
  lamindb.base.fields.ForeignKey(
3195
3259
  blank=True,
3196
- default=lamindb.models.current_run,
3260
+ default=lamindb.models.run.current_run,
3197
3261
  null=True,
3198
3262
  on_delete=django.db.models.deletion.PROTECT,
3199
3263
  related_name="+",
@@ -3235,7 +3299,11 @@ class Migration(migrations.Migration):
3235
3299
  options={
3236
3300
  "abstract": False,
3237
3301
  },
3238
- bases=(lamindb.models.HasParents, lamindb.models.CanCurate, models.Model),
3302
+ bases=(
3303
+ lamindb.models.has_parents.HasParents,
3304
+ lamindb.models.can_curate.CanCurate,
3305
+ models.Model,
3306
+ ),
3239
3307
  ),
3240
3308
  migrations.CreateModel(
3241
3309
  name="TransformULabel",
@@ -3254,7 +3322,7 @@ class Migration(migrations.Migration):
3254
3322
  "run",
3255
3323
  lamindb.base.fields.ForeignKey(
3256
3324
  blank=True,
3257
- default=lamindb.models.current_run,
3325
+ default=lamindb.models.run.current_run,
3258
3326
  null=True,
3259
3327
  on_delete=django.db.models.deletion.PROTECT,
3260
3328
  related_name="+",
@@ -3294,7 +3362,7 @@ class Migration(migrations.Migration):
3294
3362
  options={
3295
3363
  "unique_together": {("transform", "ulabel")},
3296
3364
  },
3297
- bases=(lamindb.models.LinkORM, models.Model),
3365
+ bases=(lamindb.models.record.LinkORM, models.Model),
3298
3366
  ),
3299
3367
  migrations.AddField(
3300
3368
  model_name="transform",
@@ -3350,7 +3418,7 @@ class Migration(migrations.Migration):
3350
3418
  options={
3351
3419
  "unique_together": {("run", "ulabel")},
3352
3420
  },
3353
- bases=(models.Model, lamindb.models.LinkORM),
3421
+ bases=(models.Model, lamindb.models.record.LinkORM),
3354
3422
  ),
3355
3423
  migrations.AddField(
3356
3424
  model_name="run",
@@ -3408,7 +3476,7 @@ class Migration(migrations.Migration):
3408
3476
  "run",
3409
3477
  lamindb.base.fields.ForeignKey(
3410
3478
  blank=True,
3411
- default=lamindb.models.current_run,
3479
+ default=lamindb.models.run.current_run,
3412
3480
  null=True,
3413
3481
  on_delete=django.db.models.deletion.PROTECT,
3414
3482
  related_name="+",
@@ -3436,7 +3504,7 @@ class Migration(migrations.Migration):
3436
3504
  ),
3437
3505
  ),
3438
3506
  ],
3439
- bases=(lamindb.models.LinkORM, models.Model),
3507
+ bases=(lamindb.models.record.LinkORM, models.Model),
3440
3508
  ),
3441
3509
  migrations.AddField(
3442
3510
  model_name="collection",
@@ -3496,7 +3564,7 @@ class Migration(migrations.Migration):
3496
3564
  "run",
3497
3565
  lamindb.base.fields.ForeignKey(
3498
3566
  blank=True,
3499
- default=lamindb.models.current_run,
3567
+ default=lamindb.models.run.current_run,
3500
3568
  null=True,
3501
3569
  on_delete=django.db.models.deletion.PROTECT,
3502
3570
  related_name="+",
@@ -3524,7 +3592,7 @@ class Migration(migrations.Migration):
3524
3592
  ),
3525
3593
  ),
3526
3594
  ],
3527
- bases=(lamindb.models.LinkORM, models.Model),
3595
+ bases=(lamindb.models.record.LinkORM, models.Model),
3528
3596
  ),
3529
3597
  migrations.AddField(
3530
3598
  model_name="artifact",
@@ -3561,7 +3629,7 @@ class Migration(migrations.Migration):
3561
3629
  "run",
3562
3630
  lamindb.base.fields.ForeignKey(
3563
3631
  blank=True,
3564
- default=lamindb.models.current_run,
3632
+ default=lamindb.models.run.current_run,
3565
3633
  null=True,
3566
3634
  on_delete=django.db.models.deletion.PROTECT,
3567
3635
  related_name="+",
@@ -3592,7 +3660,7 @@ class Migration(migrations.Migration):
3592
3660
  options={
3593
3661
  "unique_together": {("ulabel", "project")},
3594
3662
  },
3595
- bases=(lamindb.models.LinkORM, models.Model),
3663
+ bases=(lamindb.models.record.LinkORM, models.Model),
3596
3664
  ),
3597
3665
  migrations.AddField(
3598
3666
  model_name="project",
@@ -3721,6 +3789,16 @@ class Migration(migrations.Migration):
3721
3789
  verbose_name="ID",
3722
3790
  ),
3723
3791
  ),
3792
+ (
3793
+ "_branch_code",
3794
+ models.SmallIntegerField(db_default=1, db_index=True, default=1),
3795
+ ),
3796
+ (
3797
+ "_aux",
3798
+ lamindb.base.fields.JSONField(
3799
+ blank=True, db_default=None, default=None, null=True
3800
+ ),
3801
+ ),
3724
3802
  (
3725
3803
  "created_at",
3726
3804
  lamindb.base.fields.DateTimeField(
@@ -3739,16 +3817,6 @@ class Migration(migrations.Migration):
3739
3817
  editable=False,
3740
3818
  ),
3741
3819
  ),
3742
- (
3743
- "_branch_code",
3744
- models.SmallIntegerField(db_default=1, db_index=True, default=1),
3745
- ),
3746
- (
3747
- "_aux",
3748
- lamindb.base.fields.JSONField(
3749
- blank=True, db_default=None, default=None, null=True
3750
- ),
3751
- ),
3752
3820
  (
3753
3821
  "uid",
3754
3822
  lamindb.base.fields.CharField(
@@ -3802,7 +3870,7 @@ class Migration(migrations.Migration):
3802
3870
  "run",
3803
3871
  lamindb.base.fields.ForeignKey(
3804
3872
  blank=True,
3805
- default=lamindb.models.current_run,
3873
+ default=lamindb.models.run.current_run,
3806
3874
  null=True,
3807
3875
  on_delete=django.db.models.deletion.PROTECT,
3808
3876
  related_name="+",