lamindb 1.9.1__py3-none-any.whl → 1.10.1__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 (36) hide show
  1. lamindb/__init__.py +1 -1
  2. lamindb/core/__init__.py +2 -2
  3. lamindb/core/storage/__init__.py +2 -1
  4. lamindb/core/storage/_anndata_accessor.py +16 -1
  5. lamindb/core/storage/_backed_access.py +4 -0
  6. lamindb/core/storage/_spatialdata_accessor.py +52 -0
  7. lamindb/examples/__init__.py +3 -18
  8. lamindb/examples/cellxgene/_cellxgene.py +11 -3
  9. lamindb/examples/croissant/__init__.py +44 -0
  10. lamindb/examples/croissant/mini_immuno.anndata.zarr_metadata.json +73 -0
  11. lamindb/{core → examples}/datasets/__init__.py +5 -2
  12. lamindb/{core → examples}/datasets/_core.py +33 -1
  13. lamindb/{core → examples}/datasets/mini_immuno.py +19 -8
  14. lamindb/examples/schemas/_anndata.py +26 -16
  15. lamindb/examples/schemas/_simple.py +24 -10
  16. lamindb/integrations/__init__.py +2 -0
  17. lamindb/integrations/_croissant.py +122 -0
  18. lamindb/integrations/_vitessce.py +14 -12
  19. lamindb/migrations/0116_remove_artifact_unique_artifact_storage_key_hash_and_more.py +51 -0
  20. lamindb/migrations/0117_fix_artifact_storage_hash_unique_constraints.py +32 -0
  21. lamindb/migrations/{0115_squashed.py → 0117_squashed.py} +29 -6
  22. lamindb/models/_describe.py +107 -1
  23. lamindb/models/_django.py +63 -6
  24. lamindb/models/_feature_manager.py +0 -1
  25. lamindb/models/artifact.py +41 -11
  26. lamindb/models/collection.py +4 -9
  27. lamindb/models/project.py +2 -2
  28. lamindb/models/record.py +1 -1
  29. lamindb/models/run.py +1 -1
  30. lamindb/models/sqlrecord.py +3 -0
  31. {lamindb-1.9.1.dist-info → lamindb-1.10.1.dist-info}/METADATA +4 -4
  32. {lamindb-1.9.1.dist-info → lamindb-1.10.1.dist-info}/RECORD +36 -30
  33. /lamindb/{core → examples}/datasets/_fake.py +0 -0
  34. /lamindb/{core → examples}/datasets/_small.py +0 -0
  35. {lamindb-1.9.1.dist-info → lamindb-1.10.1.dist-info}/LICENSE +0 -0
  36. {lamindb-1.9.1.dist-info → lamindb-1.10.1.dist-info}/WHEEL +0 -0
@@ -67,7 +67,7 @@ from ..errors import IntegrityError, InvalidArgument, ValidationError
67
67
  from ..models._is_versioned import (
68
68
  create_uid,
69
69
  )
70
- from ._django import get_artifact_with_related
70
+ from ._django import get_artifact_with_related, get_collection_with_related
71
71
  from ._feature_manager import (
72
72
  FeatureManager,
73
73
  filter_base,
@@ -117,7 +117,11 @@ if TYPE_CHECKING:
117
117
  from tiledbsoma import Measurement as SOMAMeasurement
118
118
 
119
119
  from lamindb.base.types import StrField
120
- from lamindb.core.storage._backed_access import AnnDataAccessor, BackedAccessor
120
+ from lamindb.core.storage._backed_access import (
121
+ AnnDataAccessor,
122
+ BackedAccessor,
123
+ SpatialDataAccessor,
124
+ )
121
125
  from lamindb.core.types import ScverseDataStructures
122
126
 
123
127
  from ..base.types import (
@@ -709,7 +713,11 @@ def save_schema_links(self: Artifact) -> None:
709
713
 
710
714
 
711
715
  def _describe_postgres(self): # for Artifact & Collection
712
- from ._describe import describe_artifact_general, describe_header
716
+ from ._describe import (
717
+ describe_artifact_general,
718
+ describe_collection_general,
719
+ describe_header,
720
+ )
713
721
  from ._feature_manager import describe_features
714
722
 
715
723
  model_name = self.__class__.__name__
@@ -737,13 +745,23 @@ def _describe_postgres(self): # for Artifact & Collection
737
745
  related_data=related_data,
738
746
  with_labels=True,
739
747
  )
748
+ elif model_name == "Collection":
749
+ result = get_collection_with_related(self, include_fk=True)
750
+ tree = describe_collection_general(
751
+ self, foreign_key_data=related_data.get("fk", {})
752
+ )
753
+ return tree
740
754
  else:
741
755
  tree = describe_header(self)
742
756
  return tree
743
757
 
744
758
 
745
759
  def _describe_sqlite(self, print_types: bool = False): # for artifact & collection
746
- from ._describe import describe_artifact_general, describe_header
760
+ from ._describe import (
761
+ describe_artifact_general,
762
+ describe_collection_general,
763
+ describe_header,
764
+ )
747
765
  from ._feature_manager import describe_features
748
766
  from .collection import Collection
749
767
 
@@ -786,6 +804,9 @@ def _describe_sqlite(self, print_types: bool = False): # for artifact & collect
786
804
  tree=tree,
787
805
  with_labels=True,
788
806
  )
807
+ elif model_name == "Collection":
808
+ tree = describe_collection_general(self)
809
+ return tree
789
810
  else:
790
811
  tree = describe_header(self)
791
812
  return tree
@@ -983,7 +1004,7 @@ class Artifact(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
983
1004
 
984
1005
  Args:
985
1006
  data: `UPathStr` A path to a local or remote folder or file.
986
- kind: `Literal["dataset", "model"] | None = None` Distinguish models from datasets from other files & folders.
1007
+ kind: `Literal["dataset", "model"] | str | None = None` Distinguish models from datasets from other files & folders.
987
1008
  key: `str | None = None` A path-like key to reference artifact in default storage, e.g., `"myfolder/myfile.fcs"`. Artifacts with the same key form a version family.
988
1009
  description: `str | None = None` A description.
989
1010
  revises: `Artifact | None = None` Previous version of the artifact. Is an alternative way to passing `key` to trigger a new version.
@@ -1095,11 +1116,19 @@ class Artifact(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
1095
1116
  # folders
1096
1117
  # the conditional composite constraint allows duplicating files in different parts of the
1097
1118
  # file hierarchy, but errors if the same file is to be registered with the same key
1098
- # or if the key is not populated
1119
+ # In SQL, NULL values are treated specially in unique constraints.
1120
+ # Multiple NULL values are not considered equal to each other for uniqueness purposes.
1121
+ # For non-NULL keys
1099
1122
  models.UniqueConstraint(
1100
1123
  fields=["storage", "key", "hash"],
1101
- name="unique_artifact_storage_key_hash",
1102
- condition=Q(key__isnull=False),
1124
+ condition=models.Q(key__isnull=False),
1125
+ name="unique_artifact_storage_key_hash_not_null",
1126
+ ),
1127
+ # For NULL keys (only storage + hash need to be unique)
1128
+ models.UniqueConstraint(
1129
+ fields=["storage", "hash"],
1130
+ condition=models.Q(key__isnull=True),
1131
+ name="unique_artifact_storage_hash_null_key",
1103
1132
  ),
1104
1133
  ]
1105
1134
 
@@ -1209,12 +1238,12 @@ class Artifact(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
1209
1238
 
1210
1239
  This is either a file suffix (`".csv"`, `".h5ad"`, etc.) or the empty string "".
1211
1240
  """
1212
- kind: ArtifactKind | None = CharField(
1241
+ kind: ArtifactKind | str | None = CharField(
1213
1242
  max_length=20,
1214
1243
  db_index=True,
1215
1244
  null=True,
1216
1245
  )
1217
- """:class:`~lamindb.base.types.ArtifactKind` (default `None`)."""
1246
+ """:class:`~lamindb.base.types.ArtifactKind` or custom `str` value (default `None`)."""
1218
1247
  otype: str | None = CharField(
1219
1248
  max_length=64, db_index=True, null=True, editable=False
1220
1249
  )
@@ -1327,7 +1356,7 @@ class Artifact(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
1327
1356
  # here; and we might refactor this but we might also keep that internal
1328
1357
  # usage
1329
1358
  data: UPathStr,
1330
- kind: ArtifactKind | None = None,
1359
+ kind: ArtifactKind | str | None = None,
1331
1360
  key: str | None = None,
1332
1361
  description: str | None = None,
1333
1362
  revises: Artifact | None = None,
@@ -2246,6 +2275,7 @@ class Artifact(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
2246
2275
  **kwargs,
2247
2276
  ) -> (
2248
2277
  AnnDataAccessor
2278
+ | SpatialDataAccessor
2249
2279
  | BackedAccessor
2250
2280
  | SOMACollection
2251
2281
  | SOMAExperiment
@@ -1,12 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import warnings
4
- from typing import (
5
- TYPE_CHECKING,
6
- Any,
7
- Literal,
8
- overload,
9
- )
4
+ from typing import TYPE_CHECKING, Any, Literal, overload
10
5
 
11
6
  import anndata as ad
12
7
  import pandas as pd
@@ -132,7 +127,7 @@ class Collection(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
132
127
  """Versioned collections of artifacts.
133
128
 
134
129
  Args:
135
- artifacts: `list[Artifact]` A list of artifacts.
130
+ artifacts: `Artifact | list[Artifact]` One or several artifacts.
136
131
  key: `str` A file-path like key, analogous to the `key` parameter of `Artifact` and `Transform`.
137
132
  description: `str | None = None` A description.
138
133
  revises: `Collection | None = None` An old version of the collection.
@@ -232,7 +227,7 @@ class Collection(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
232
227
  @overload
233
228
  def __init__(
234
229
  self,
235
- artifacts: list[Artifact],
230
+ artifacts: Artifact | list[Artifact],
236
231
  key: str,
237
232
  description: str | None = None,
238
233
  meta: Any | None = None,
@@ -259,7 +254,7 @@ class Collection(SQLRecord, IsVersioned, TracksRun, TracksUpdates):
259
254
  # now we proceed with the user-facing constructor
260
255
  if len(args) > 1:
261
256
  raise ValueError("Only one non-keyword arg allowed: artifacts")
262
- artifacts: Artifact | Iterable[Artifact] = (
257
+ artifacts: Artifact | list[Artifact] = (
263
258
  kwargs.pop("artifacts") if len(args) == 0 else args[0]
264
259
  )
265
260
  meta_artifact: Artifact | None = kwargs.pop("meta_artifact", None)
lamindb/models/project.py CHANGED
@@ -133,7 +133,7 @@ class Reference(SQLRecord, CanCurate, TracksRun, TracksUpdates, ValidateFields):
133
133
  null=True,
134
134
  )
135
135
  """An abbreviation for the reference."""
136
- url: str | None = URLField(null=True)
136
+ url: str | None = URLField(null=True, db_index=True)
137
137
  """URL linking to the reference."""
138
138
  pubmed_id: int | None = BigIntegerField(null=True, db_index=True)
139
139
  """A PudMmed ID."""
@@ -150,7 +150,7 @@ class Reference(SQLRecord, CanCurate, TracksRun, TracksUpdates, ValidateFields):
150
150
  """Digital Object Identifier (DOI) for the reference."""
151
151
  description: str | None = CharField(null=True, db_index=True)
152
152
  """Description of the reference."""
153
- text: str | None = TextField(null=True)
153
+ text: str | None = TextField(null=True, db_index=True)
154
154
  """Abstract or full text of the reference to make it searchable."""
155
155
  date: DateType | None = DateField(null=True, default=None)
156
156
  """Date of creation or publication of the reference."""
lamindb/models/record.py CHANGED
@@ -93,7 +93,7 @@ class Record(SQLRecord, CanCurate, TracksRun, TracksUpdates):
93
93
  """Record-like components of this record."""
94
94
  composites: Record
95
95
  """Record-like composites of this record."""
96
- description: str | None = CharField(null=True)
96
+ description: str | None = CharField(null=True, db_index=True)
97
97
  """A description (optional)."""
98
98
  linked_artifacts: Artifact = models.ManyToManyField(
99
99
  Artifact, through="RecordArtifact", related_name="linked_in_records"
lamindb/models/run.py CHANGED
@@ -232,7 +232,7 @@ class Run(SQLRecord):
232
232
  editable=False, unique=True, db_index=True, max_length=20, default=base62_16
233
233
  )
234
234
  """Universal id, valid across DB instances."""
235
- name: str | None = CharField(max_length=150, null=True)
235
+ name: str | None = CharField(max_length=150, null=True, db_index=True)
236
236
  """A name."""
237
237
  transform: Transform = ForeignKey("Transform", CASCADE, related_name="runs")
238
238
  """The transform :class:`~lamindb.Transform` that is being run."""
@@ -1764,6 +1764,9 @@ def record_repr(
1764
1764
  field_names.insert(0, "uid")
1765
1765
  fields_str = {}
1766
1766
  for k in field_names:
1767
+ if k == "n" and getattr(self, k) < 0:
1768
+ # only needed for Schema
1769
+ continue
1767
1770
  if not k.startswith("_") and hasattr(self, k):
1768
1771
  value = getattr(self, k)
1769
1772
  # Force strip the time component of the version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lamindb
3
- Version: 1.9.1
3
+ Version: 1.10.1
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.10,<3.14
@@ -10,8 +10,8 @@ Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
12
  Requires-Dist: lamin_utils==0.15.0
13
- Requires-Dist: lamin_cli==1.6.0
14
- Requires-Dist: lamindb_setup[aws]==1.8.3
13
+ Requires-Dist: lamin_cli==1.6.1
14
+ Requires-Dist: lamindb_setup[aws]==1.9.1
15
15
  Requires-Dist: pyyaml
16
16
  Requires-Dist: pyarrow
17
17
  Requires-Dist: pandera>=0.24.0
@@ -19,7 +19,7 @@ Requires-Dist: typing_extensions!=4.6.0
19
19
  Requires-Dist: python-dateutil
20
20
  Requires-Dist: pandas>=2.0.0
21
21
  Requires-Dist: scipy<1.15.0
22
- Requires-Dist: anndata>=0.8.0,<=0.12.0
22
+ Requires-Dist: anndata>=0.8.0,<=0.12.1
23
23
  Requires-Dist: fsspec
24
24
  Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
@@ -1,4 +1,4 @@
1
- lamindb/__init__.py,sha256=6vz7PoohgJVcU2XVHyGD3SyzxKQTaJC5IQ591AGza18,2904
1
+ lamindb/__init__.py,sha256=cWTeR7mqoNI5I8jjkRldYjJOqmaCsy7n8wCvbbWbeNI,2905
2
2
  lamindb/_finish.py,sha256=3HVKRw27rQs_S2ior-JX2IU0vUkeG5a6p8XgEgdT8-U,21219
3
3
  lamindb/_tracked.py,sha256=-wK7BJv30nf4v2_nH5qDCyxHvug7ih6duQNGxDrj3UE,4447
4
4
  lamindb/_view.py,sha256=cod1RnZoLyzMVJcjWjytg78Sf4qsR8IAdqpwzsi8FTw,4950
@@ -10,7 +10,7 @@ lamindb/base/ids.py,sha256=X-1N129FOoNw4TPlK_EzgTZOzRidiMyPWszz9r_066g,34
10
10
  lamindb/base/types.py,sha256=NM_J9hQE80fere5dy-se04_Tg2BnPx_0n1ulLHL9iss,3027
11
11
  lamindb/base/uids.py,sha256=cLBi5mIlsf1ltkTb17r1FLzlOjlGmjvsCygoVJHQ-A8,2116
12
12
  lamindb/base/users.py,sha256=8MSmAvCKoUF15YsDE6BGLBXsFWpfoEEg8iDTKZ7kD48,848
13
- lamindb/core/__init__.py,sha256=aaBq0UVjNolMynbT1V5hB6UrJm1tK0M6WHu_r6em9_4,604
13
+ lamindb/core/__init__.py,sha256=I9F-GugBMZwFLpUPb1MXyLfccIVAj021Gb_00h_18MY,633
14
14
  lamindb/core/_compat.py,sha256=NLnKk1qk4xdgMV-QwFDnBnbio02ujjlF86icvhpdv4c,2029
15
15
  lamindb/core/_context.py,sha256=5edP0M5_m8zgNXu7-1XaRLOv20i5LaWHBkEvMHsSiB0,40376
16
16
  lamindb/core/_mapped_collection.py,sha256=osquwC6ee0wJ_I6O-8AZwnQUa_r9zqa0MN82Q-nBI3Y,25746
@@ -20,16 +20,12 @@ lamindb/core/_track_environment.py,sha256=fa0-qKEe0BpL79_nsDUDtbg1iA3VpJTh0RCOGd
20
20
  lamindb/core/exceptions.py,sha256=FMEoSvT3FvtLkxQAt2oDXPeaPem8V5x5UBbTsPFYU5w,53
21
21
  lamindb/core/loaders.py,sha256=QH3r3Q_aPrbkgiWaV30TmxcLCs6zZFQLRW442DsTrNU,5456
22
22
  lamindb/core/types.py,sha256=_u8amXATAZN-nNGNWYGmyqYDcHbT_i0NZeLRhm_-ygI,378
23
- lamindb/core/datasets/__init__.py,sha256=x5zn_vn8D4xMJOJ9hVc8wRwQk5ea81Un2tGHb2UfiHg,1893
24
- lamindb/core/datasets/_core.py,sha256=uaP0snoKuAE5nDTL_XIgPeEoXSp5sTrNNAyOPDciZRU,20286
25
- lamindb/core/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
26
- lamindb/core/datasets/_small.py,sha256=60WKs6Oo2NE7HUqe6PLfiPxH_5TYUjr_iZdtFWiOeAA,3460
27
- lamindb/core/datasets/mini_immuno.py,sha256=eAtRQ3_4cln5IFzTH0jNufbWcyQKrXmzizbSmvfS-FM,5707
28
- lamindb/core/storage/__init__.py,sha256=JOIMu_7unbyhndtH1j0Q-9AvY8knSuc1IJO9sQnyBAQ,498
29
- lamindb/core/storage/_anndata_accessor.py,sha256=jrKbRylkqgZ3opKcJCwilDhRGEnPcQsKt-X7EA9Isr8,26100
30
- lamindb/core/storage/_backed_access.py,sha256=6YczvbmcmwZsOHFyD0ArDrvysUUAEiYcwZ_8TyWi_r8,7674
23
+ lamindb/core/storage/__init__.py,sha256=2gJyn9w6rzv3oPHjY756OfQYrLEXb37YuKMqh6ZjbF8,542
24
+ lamindb/core/storage/_anndata_accessor.py,sha256=NOAqI-SHS8IwM0MwsZmRUtqG8r4tBTJ9T8888lhvQkw,26611
25
+ lamindb/core/storage/_backed_access.py,sha256=5y3C_D1g89d831FAXr8-WashmmL3cdNfTR5s61vrMdA,7858
31
26
  lamindb/core/storage/_polars_lazy_df.py,sha256=_JhnU8RmoTzU2kp7kyHRSUTAkFhpCJo6NNnHxvBXQv4,2929
32
27
  lamindb/core/storage/_pyarrow_dataset.py,sha256=lRYYt7edUtwauhxd7RwFud6YPDbz2PFvYYgqLhfapfk,1398
28
+ lamindb/core/storage/_spatialdata_accessor.py,sha256=e5jqRMWAb2zA0srHOTpgmUdFZk54g6gVEbkEBqq6Ndk,1446
33
29
  lamindb/core/storage/_tiledbsoma.py,sha256=EdzgGVTamB7Ef31doGFWwIOhTd9TNrBfNUplDWSp6wo,11386
34
30
  lamindb/core/storage/_valid_suffixes.py,sha256=vUSeQ4s01rdhD_vSd6wKmFBsgMJAKkBMnL_T9Y1znMg,501
35
31
  lamindb/core/storage/_zarr.py,sha256=PncgrnA3XX2D01AQsTatCImEpbJUriEo00LHmARCkIE,4265
@@ -41,17 +37,25 @@ lamindb/core/subsettings/_creation_settings.py,sha256=NGHWKqCFSzVNBxAr2VnmdYguiF
41
37
  lamindb/curators/__init__.py,sha256=WLnaVxrhQGZxGB3pjg-SM4oUu6DaKA78S_J3BfVKLEg,496
42
38
  lamindb/curators/_legacy.py,sha256=V2zF1J7jN2Ry7ascH06JytrAQzeOiirg7e4a9d0hpvM,54768
43
39
  lamindb/curators/core.py,sha256=OfCSLw6Ngu_HmCSjwRUZrsVwcdq-ge9JL1Wfl0djiyM,68832
44
- lamindb/examples/__init__.py,sha256=8FnHoBbZmVwiGByHfY6sr069rBQTChFynUeq7O704Ns,580
40
+ lamindb/examples/__init__.py,sha256=f0pBxijIA26ULUBnsP2sa1e4CLqMTeUUEqNeINJIf9o,179
45
41
  lamindb/examples/cellxgene/__init__.py,sha256=Xzxfi_NQcWdK-RrbNFdlIFQFVPG8Qy18ekYx3sOQZeM,161
46
- lamindb/examples/cellxgene/_cellxgene.py,sha256=bcFg0f0Bur38GKVNjKacCiMwMvJDdDeAk6BVT2WP5GI,8688
42
+ lamindb/examples/cellxgene/_cellxgene.py,sha256=HP_skQJbNYDEYhiLUpaP9kfmtPivmgTuGyoWNLs07nw,8844
47
43
  lamindb/examples/cellxgene/cxg_schema_versions.csv,sha256=Du_zk2rrMA4AbHwYp6vgLzZH1Krnmml_KVerc2IvvkI,2107
44
+ lamindb/examples/croissant/__init__.py,sha256=a8LFsAvHzts_C2jlcbuF7kxwGEBWd4VERsluwDFh_iY,1418
45
+ lamindb/examples/croissant/mini_immuno.anndata.zarr_metadata.json,sha256=XhY4wnFyMoK4Thkaolh2yJxtU6sX0bdFsJvRvt942k8,2921
46
+ lamindb/examples/datasets/__init__.py,sha256=TI91CjNMh0MqcZVcruO6xLGPYqqQ5o3p_E37huOV3GI,1976
47
+ lamindb/examples/datasets/_core.py,sha256=o_Kaz-i1W7ldXP2d1arUix_JvxPS9n2bpDAiW0M_yxA,21302
48
+ lamindb/examples/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
49
+ lamindb/examples/datasets/_small.py,sha256=60WKs6Oo2NE7HUqe6PLfiPxH_5TYUjr_iZdtFWiOeAA,3460
50
+ lamindb/examples/datasets/mini_immuno.py,sha256=ZEL9T4zhCKm8ggqU7VVhuihVKPR3MmlkJNOtdygH2v4,6107
48
51
  lamindb/examples/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
52
  lamindb/examples/fixtures/sheets.py,sha256=2oRAY2jQYCJuW_gCTGAs90XerYQHIe3pivoi0vzgXpc,9035
50
53
  lamindb/examples/schemas/__init__.py,sha256=NPDp7VjMOHStEIthx3xW9NSHtY7jnnMzrNPcSDgxT3M,241
51
- lamindb/examples/schemas/_anndata.py,sha256=Q0h7YWZ6lqAZtE0i1xxCvJ8JfSa_RhFj4RY1sE_9HZs,764
52
- lamindb/examples/schemas/_simple.py,sha256=JdavLLrJnxDLTKBKRk2Tb534AInlzX0jyEvU9LcH-NQ,568
53
- lamindb/integrations/__init__.py,sha256=RWGMYYIzr8zvmNPyVB4m-p4gMDhxdRbjES2Ed23OItw,215
54
- lamindb/integrations/_vitessce.py,sha256=OvtnBAxlR_PvfeGjpySjzi2uRYsBwDwb3tMyhBzNVFk,4110
54
+ lamindb/examples/schemas/_anndata.py,sha256=TAQrnBLZhH4TgbznrJDdGK_Gze6cf1MvyXuCcKIvb1g,1210
55
+ lamindb/examples/schemas/_simple.py,sha256=Dspj5QRmv241IstBxuc1E1Q5YeEqTOnOvakg7ChPj1k,911
56
+ lamindb/integrations/__init__.py,sha256=Zh0ROuRmob1QGV2mCo3A7cFmdheJGq4CUdo7G16pRHU,286
57
+ lamindb/integrations/_croissant.py,sha256=9zRkOg2pkaiylKslfKfxYzZ5I5813qhCfA4Er3Q3bB4,4166
58
+ lamindb/integrations/_vitessce.py,sha256=s2F8KPpYVG0zUOTaDJgH1XAJtQDg1zrD_SxC4ZHUkHk,4035
55
59
  lamindb/migrations/0069_squashed.py,sha256=7XdiRW0MBtr3Jck9dbIy_9qxmB_sjtLM1SH9x062d2k,62631
56
60
  lamindb/migrations/0070_lamindbv1_migrate_data.py,sha256=tyq_xi6U8TXi9C2Raf6v_UTtfyfqQOUIFJzYj4oCgAE,2429
57
61
  lamindb/migrations/0071_lamindbv1_migrate_schema.py,sha256=o47wYtMTuQ-LEVQSftiV0Wwvs3bcISZ_JtWsMxlLykk,25130
@@ -99,30 +103,32 @@ lamindb/migrations/0112_alter_recordartifact_feature_and_more.py,sha256=19AothLL
99
103
  lamindb/migrations/0113_lower_case_branch_and_space_names.py,sha256=Xt2krstx3t30iTi2z0qTCBNteDA5Wy9L-thRXJSeUA8,1734
100
104
  lamindb/migrations/0114_alter_run__status_code.py,sha256=KkGecSBJElA3LBnhSK5_rFpcFridOuv6BhM8DCYqTKw,612
101
105
  lamindb/migrations/0115_alter_space_uid.py,sha256=18fCP8d31Ox1KxSSmfzU-W3lSpS3xtiaBNbPeHQiuTM,1332
102
- lamindb/migrations/0115_squashed.py,sha256=gDjKt5S-Uk5NK72JPnsB1zD_kyAVIXR5DFEBHNAUcr4,162935
106
+ lamindb/migrations/0116_remove_artifact_unique_artifact_storage_key_hash_and_more.py,sha256=vCAeIg8TdtVaC2kZIq3KTY5hcz_RiXh_44Sczv75RA4,1562
107
+ lamindb/migrations/0117_fix_artifact_storage_hash_unique_constraints.py,sha256=OqgUmf9_TeNwTddwcwZdJYfpN6cpFYBaw5_KitYumNM,1033
108
+ lamindb/migrations/0117_squashed.py,sha256=i9rdXIVWkgNaZTaaFs-Ozi_0CC-pKHOdF2ZM37M4fOY,163772
103
109
  lamindb/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
110
  lamindb/models/__init__.py,sha256=mtjZH0x31aV463YaUef8ZvdQHlGa6SZr_thsrlbdkCg,2419
105
- lamindb/models/_describe.py,sha256=u9pUIjL3GRbbPRNXOMeAKnN_4ecWPhElBZyjWCNc_MA,7691
106
- lamindb/models/_django.py,sha256=qp2WKn6rrt3AmvwMkL2tQEqVhMh0YeFtizHzUtLpakI,10658
107
- lamindb/models/_feature_manager.py,sha256=J5tuWn4Ib0Dgmvgk06YQjGRVgqWq5UI02RjE3PKXQ44,55085
111
+ lamindb/models/_describe.py,sha256=OD-MokYrB6mfzkmFdTkRj0J93LyqxFOgJi_5LvOXr1A,10915
112
+ lamindb/models/_django.py,sha256=go0sAhIGJ-JkYe5OMviWUm-ZwHdqDuBgnPbFvncA-lQ,12347
113
+ lamindb/models/_feature_manager.py,sha256=rKScsFCpmZ1JVu4pnq59MhZsz90zlF6oN2UAilwPokU,55038
108
114
  lamindb/models/_from_values.py,sha256=cCGPMDlAbBrdhFW-XrIQVZ10q1LNg4MycYPLOkF0fTc,13366
109
115
  lamindb/models/_is_versioned.py,sha256=Th2_cBf9UWh27E6ANxg6LGmjBOumXFy7AjH0GG4FoXA,7601
110
116
  lamindb/models/_label_manager.py,sha256=O3KaaTEVId5ky3h0aCGg1kDoFFfrovFYlV82YsZZyIs,12127
111
117
  lamindb/models/_relations.py,sha256=zHYLujy9vkuB9jVq5844TpzLSP__iYNCQcsl-FzK1Jw,3700
112
- lamindb/models/artifact.py,sha256=dSQowK8kg3xUAjtV_zMOPhOXchnUCqcHdryykGWW69A,116525
118
+ lamindb/models/artifact.py,sha256=yBNgOJTokGKy5EUDzugzs1bXBObGKSqDLJ2nZLk6M3s,117610
113
119
  lamindb/models/artifact_set.py,sha256=VOZEGDo3m_9Yg_ftx3I2fwdydjHN61X_qV18N6xG4kM,4117
114
120
  lamindb/models/can_curate.py,sha256=_6ymHhtc9zpU8O6ozqNDqn7jh87C9JisU_dl2gH2Hpo,29329
115
- lamindb/models/collection.py,sha256=zNiYzj0K_UgIobWzBY93rekVpZm76p9BJOw7Pz0i8ZE,28356
121
+ lamindb/models/collection.py,sha256=ZMBaDqQtil9yWqDC_twKbavGkdAulcu9j2WlfHADxn0,28358
116
122
  lamindb/models/feature.py,sha256=eIskKsSBkwW6ftfOZ_ngeqD9Pi6Y70cY_m3WHTCXNU8,38031
117
123
  lamindb/models/has_parents.py,sha256=NRNshrWCX7G3nnM3lnnHQ3Ho216T3EJfgakY6KlTvt8,20301
118
- lamindb/models/project.py,sha256=Za__zEzsShXmfCkKjg1wmlJ_UuGJur-mg6ALNslYJfw,17315
124
+ lamindb/models/project.py,sha256=4w2rMZMPrLmvirvJQanhKfqwGqEnpY42iaOWi99YPw0,17345
119
125
  lamindb/models/query_manager.py,sha256=EzbyNA5zWUbLYH5yJ7dIC90j1teVoQHrXpRLjCfBEao,11036
120
126
  lamindb/models/query_set.py,sha256=d27m8UF8QZAzHZBEVE1QdJRtx9wCzYgkDdHGCATBM48,34815
121
- lamindb/models/record.py,sha256=syOBBefZhlqZpoVJD32uqzEzbwXiOboAOA3AlGaOkhE,12055
122
- lamindb/models/run.py,sha256=3xCAJnxK4iNeFlFz1bAxYDnRGU4HnRpDfxq4MwB6cPw,15565
127
+ lamindb/models/record.py,sha256=WW6iuQT8M4KHcpZoYGSTjND10hvDUIff7DOkyD5d2Fc,12070
128
+ lamindb/models/run.py,sha256=czMzg1Hp0Ju4eGM0T2vwCSerVpdzd5JyEW2Kj9tjg2o,15580
123
129
  lamindb/models/save.py,sha256=jXha2jfY-pWsKuP2dwaEROhUGxhM8fTWQGWAzA_xsM0,16777
124
130
  lamindb/models/schema.py,sha256=7l2T_uOi7Lkj4yHuZWml1p7axBn_yNO4IlXkn8M2f9g,48962
125
- lamindb/models/sqlrecord.py,sha256=6jfBKqGtvT6D2_mWgaxqLWvWzYUGzMW2d8r4nht4vk0,68411
131
+ lamindb/models/sqlrecord.py,sha256=SBonVDvkUXh4XZgM87VV96yM9MNMgVvBlRalhTpaZH8,68515
126
132
  lamindb/models/storage.py,sha256=0jvuQyJcIMdrZ9qq-vmKkI66libb2DqWjCXNFuvinIM,13518
127
133
  lamindb/models/transform.py,sha256=oXT_uF9CM4vrEt1APbdSUSMxclkxeVq9tjgQRmicqos,12774
128
134
  lamindb/models/ulabel.py,sha256=ocAMSKeQcq2Kr6Dq0mxGupOmW1K0pAs19vjDeTEb6vM,9335
@@ -131,7 +137,7 @@ lamindb/setup/_switch.py,sha256=njZJN__JOhVrBFGClQG1wobdhJJp6l_XzPGKtKSCrfU,434
131
137
  lamindb/setup/core/__init__.py,sha256=SevlVrc2AZWL3uALbE5sopxBnIZPWZ1IB0NBDudiAL8,167
132
138
  lamindb/setup/errors/__init__.py,sha256=bAHTxOUJW1rm4zpF0Pvqkftn8W6iMGnQ-uyNBu13Nfg,171
133
139
  lamindb/setup/types/__init__.py,sha256=ATaosOi6q-cDWB52T69_sRmLMqj8cHfc-vljzZsrJNw,169
134
- lamindb-1.9.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
135
- lamindb-1.9.1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
136
- lamindb-1.9.1.dist-info/METADATA,sha256=K120hdMhCpm8y3SUQnBVFIk9ZySm5x0OQ60b7KiBgyA,5198
137
- lamindb-1.9.1.dist-info/RECORD,,
140
+ lamindb-1.10.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
141
+ lamindb-1.10.1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
142
+ lamindb-1.10.1.dist-info/METADATA,sha256=UYl8nK7xlSZg0L4GaKYNkMjXuNs36LvfgSJFq-StSho,5199
143
+ lamindb-1.10.1.dist-info/RECORD,,
File without changes
File without changes