lamindb 0.76.2__py3-none-any.whl → 0.76.4__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.
@@ -20,7 +20,7 @@ class TrackNotCalled(SystemExit):
20
20
  pass
21
21
 
22
22
 
23
- class NotebookNotSaved(SystemExit):
23
+ class NotebookFileNotSavedToDisk(SystemExit):
24
24
  pass
25
25
 
26
26
 
@@ -19,7 +19,7 @@ Array accessors.
19
19
  from lamindb_setup.core.upath import LocalPathClasses, UPath, infer_filesystem
20
20
 
21
21
  from ._backed_access import AnnDataAccessor, BackedAccessor
22
- from ._tiledbsoma import register_for_tiledbsoma_store, write_tiledbsoma_store
22
+ from ._tiledbsoma import save_tiledbsoma_experiment
23
23
  from ._valid_suffixes import VALID_SUFFIXES
24
24
  from .objects import infer_suffix, write_to_disk
25
25
  from .paths import delete_storage, load_to_memory
@@ -10,7 +10,7 @@ import numpy as np
10
10
  import pandas as pd
11
11
  from anndata import AnnData
12
12
  from anndata import __version__ as anndata_version
13
- from anndata._core.index import Index, _normalize_indices
13
+ from anndata._core.index import _normalize_indices
14
14
  from anndata._core.views import _resolve_idx
15
15
  from anndata._io.h5ad import read_dataframe_legacy as read_dataframe_legacy_h5
16
16
  from anndata._io.specs.registry import get_spec, read_elem, read_elem_partial
@@ -29,6 +29,11 @@ if TYPE_CHECKING:
29
29
 
30
30
  anndata_version_parse = version.parse(anndata_version)
31
31
 
32
+ if anndata_version_parse < version.parse("0.9.0"):
33
+ from anndata._core.index import Index
34
+ else:
35
+ from anndata.compat import Index
36
+
32
37
  if anndata_version_parse < version.parse("0.10.0"):
33
38
  if anndata_version_parse < version.parse("0.9.1"):
34
39
  logger.warning(
@@ -2,18 +2,19 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Literal
4
4
 
5
- from anndata import AnnData
5
+ from anndata import AnnData, read_h5ad
6
6
  from lamin_utils import logger
7
+ from lamindb_setup import settings as setup_settings
7
8
  from lamindb_setup.core._settings_storage import get_storage_region
8
- from lamindb_setup.core.upath import create_path
9
- from lnschema_core import Artifact, Run, Storage
10
- from upath import UPath
9
+ from lamindb_setup.core.upath import LocalPathClasses, create_path
10
+ from lnschema_core import Artifact, Run
11
11
 
12
12
  if TYPE_CHECKING:
13
13
  from lamindb_setup.core.types import UPathStr
14
14
  from tiledbsoma import Collection as SOMACollection
15
15
  from tiledbsoma import Experiment as SOMAExperiment
16
16
  from tiledbsoma.io import ExperimentAmbientLabelMapping
17
+ from upath import UPath
17
18
 
18
19
 
19
20
  def _read_adata_h5ad_zarr(objpath: UPath):
@@ -22,7 +23,12 @@ def _read_adata_h5ad_zarr(objpath: UPath):
22
23
  if objpath.is_dir():
23
24
  adata = read_adata_zarr(objpath)
24
25
  else:
25
- adata = read_adata_h5ad(objpath)
26
+ # read only local in backed for now
27
+ # in principle possible to read remote in backed also
28
+ if isinstance(objpath, LocalPathClasses):
29
+ adata = read_h5ad(objpath.as_posix(), backed="r")
30
+ else:
31
+ adata = read_adata_h5ad(objpath)
26
32
  return adata
27
33
 
28
34
 
@@ -67,21 +73,41 @@ def _open_tiledbsoma(
67
73
  return SOMAType.open(storepath_str, mode=mode, context=ctx)
68
74
 
69
75
 
70
- def register_for_tiledbsoma_store(
71
- store: UPathStr | Artifact | None,
76
+ def save_tiledbsoma_experiment(
77
+ # Artifact args
72
78
  adatas: list[AnnData | UPathStr],
73
- measurement_name: str,
74
- obs_field_name: str,
75
- var_field_name: str,
76
- append_obsm_varm: bool = False,
79
+ key: str | None = None,
80
+ description: str | None = None,
77
81
  run: Run | None = None,
78
- ) -> tuple[ExperimentAmbientLabelMapping, list[AnnData]]:
79
- """Register `AnnData` objects to append to `tiledbsoma.Experiment`.
82
+ revises: Artifact | None = None,
83
+ # tiledbsoma.io.from_anndata args
84
+ measurement_name: str = "RNA",
85
+ obs_id_name: str = "obs_id",
86
+ var_id_name: str = "var_id",
87
+ append_obsm_varm: bool = False,
88
+ # additional keyword args for tiledbsoma.io.from_anndata
89
+ **kwargs,
90
+ ) -> Artifact:
91
+ """Write `AnnData` to `tiledbsoma.Experiment`.
92
+
93
+ Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an {class}`~lamindb.Artifact`.
80
94
 
81
- Pass the returned registration mapping and `AnnData` objects to `write_tiledbsoma_store`.
95
+ Populates a column `lamin_run_uid` column in `obs` with the current `run.uid`.
82
96
 
83
- See `tiledbsoma.io.from_h5ad
84
- <https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.from_h5ad.html>`__.
97
+ Is based on `tiledbsoma.io.from_anndata
98
+ <https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.from_anndata.html>`__.
99
+
100
+ Args:
101
+ adatas: `AnnData` objects to write, in-memory or on-disk.
102
+ key: An optional key to reference the artifact.
103
+ description: A description.
104
+ run: The run that creates the artifact.
105
+ revises: `lamindb.Artifact` with `tiledbsoma.Experiment` to append to.
106
+ measurement_name: The name of the measurement to store data in `tiledbsoma.Experiment`.
107
+ obs_id_name: Which `AnnData` `obs` column to use for append mode.
108
+ var_id_name: Which `AnnData` `var` column to use for append mode.
109
+ append_obsm_varm: Whether to append `obsm` and `varm` in append mode .
110
+ **kwargs: Keyword arguments passed to `tiledbsoma.io.from_anndata`.
85
111
  """
86
112
  try:
87
113
  import tiledbsoma as soma
@@ -89,27 +115,36 @@ def register_for_tiledbsoma_store(
89
115
  except ImportError as e:
90
116
  raise ImportError("Please install tiledbsoma: pip install tiledbsoma") from e
91
117
 
92
- if isinstance(store, Artifact):
93
- storepath = store.path
118
+ from lamindb.core._data import get_run
119
+ from lamindb.core.storage.paths import auto_storage_key_from_artifact_uid
120
+ from lamindb.core.versioning import create_uid
121
+
122
+ run = get_run(run)
123
+
124
+ appending = revises is not None
125
+ if appending:
126
+ storepath = revises.path
94
127
  else:
95
- storepath = None if store is None else create_path(store)
128
+ uid, _ = create_uid(n_full_id=20)
129
+ storage_key = auto_storage_key_from_artifact_uid(
130
+ uid, ".tiledbsoma", is_dir=True
131
+ )
132
+ storepath = setup_settings.storage.root / storage_key
133
+
134
+ if storepath.protocol == "s3":
135
+ ctx = soma.SOMATileDBContext(tiledb_config=_tiledb_config_s3(storepath))
136
+ else:
137
+ ctx = None
138
+
139
+ storepath = storepath.as_posix()
96
140
 
97
141
  add_run_uid = True
98
- ctx = None
99
- if storepath is not None:
100
- if storepath.protocol == "s3":
101
- ctx = soma.SOMATileDBContext(tiledb_config=_tiledb_config_s3(storepath))
102
- if storepath.exists():
103
- with soma.Experiment.open(
104
- storepath.as_posix(), mode="r", context=ctx
105
- ) as store:
106
- add_run_uid = "lamin_run_uid" in store["obs"].schema.names
107
- storepath = storepath.as_posix()
108
-
109
- if add_run_uid:
110
- from lamindb.core._data import get_run
111
-
112
- run = get_run(run)
142
+ if appending:
143
+ with soma.Experiment.open(storepath, mode="r", context=ctx) as store:
144
+ add_run_uid = "lamin_run_uid" in store["obs"].schema.names
145
+
146
+ if add_run_uid and run is None:
147
+ raise ValueError("Pass `run`")
113
148
 
114
149
  adata_objects = []
115
150
  for adata in adatas:
@@ -117,10 +152,9 @@ def register_for_tiledbsoma_store(
117
152
  if add_run_uid:
118
153
  if adata.is_view:
119
154
  raise ValueError(
120
- "Can not register an `AnnData` view, please do `adata.copy()` before passing."
155
+ "Can not write an `AnnData` view, please do `adata.copy()` before passing."
121
156
  )
122
157
  else:
123
- logger.warning("Mutating in-memory AnnData.")
124
158
  adata.obs["lamin_run_uid"] = run.uid
125
159
  else:
126
160
  adata = _read_adata_h5ad_zarr(create_path(adata))
@@ -128,102 +162,35 @@ def register_for_tiledbsoma_store(
128
162
  adata.obs["lamin_run_uid"] = run.uid
129
163
  adata_objects.append(adata)
130
164
 
131
- registration_mapping = soma_io.register_anndatas(
132
- experiment_uri=storepath,
133
- adatas=adata_objects,
134
- measurement_name=measurement_name,
135
- obs_field_name=obs_field_name,
136
- var_field_name=var_field_name,
137
- append_obsm_varm=append_obsm_varm,
138
- context=ctx,
139
- )
140
-
141
- return registration_mapping, adata_objects
142
-
143
-
144
- def write_tiledbsoma_store(
145
- store: Artifact | UPathStr,
146
- adata: AnnData | UPathStr,
147
- run: Run | None = None,
148
- artifact_kwargs: dict | None = None,
149
- **kwargs,
150
- ) -> Artifact:
151
- """Write `AnnData` to `tiledbsoma.Experiment`.
152
-
153
- Reads `AnnData`, writes it to `tiledbsoma.Experiment` and creates `lamindb.Artifact`.
154
-
155
- See `tiledbsoma.io.from_h5ad
156
- <https://tiledbsoma.readthedocs.io/en/latest/_autosummary/tiledbsoma.io.from_h5ad.html>`__.
157
- """
158
- try:
159
- import tiledbsoma as soma
160
- import tiledbsoma.io as soma_io
161
- except ImportError as e:
162
- raise ImportError("Please install tiledbsoma: pip install tiledbsoma") from e
163
-
164
- from lamindb.core._data import get_run
165
-
166
- if artifact_kwargs is None:
167
- artifact_kwargs = {}
168
-
169
- appending: bool = kwargs.get("registration_mapping", None) is not None
170
- store_is_artifact: bool = isinstance(store, Artifact)
171
- if store_is_artifact:
172
- if not appending:
173
- raise ValueError(
174
- "Trying to append to an existing store without `registration_mapping`."
175
- )
176
- storepath = store.path
177
- else:
178
- storepath = create_path(store)
179
- add_run_uid: bool = not appending
180
-
181
- if not isinstance(adata, AnnData):
182
- # create_path is used
183
- # in case adata is somewhere in our managed s3 bucket or just in s3
184
- adata = _read_adata_h5ad_zarr(create_path(adata))
185
- elif add_run_uid and adata.is_view:
186
- raise ValueError(
187
- "Can not write from an `AnnData` view, please do `adata.copy()` before passing."
165
+ registration_mapping = kwargs.get("registration_mapping", None)
166
+ if registration_mapping is None and (appending or len(adata_objects) > 1):
167
+ registration_mapping = soma_io.register_anndatas(
168
+ experiment_uri=storepath if appending else None,
169
+ adatas=adata_objects,
170
+ measurement_name=measurement_name,
171
+ obs_field_name=obs_id_name,
172
+ var_field_name=var_id_name,
173
+ append_obsm_varm=append_obsm_varm,
174
+ context=ctx,
188
175
  )
189
176
 
190
- run = get_run(run)
191
-
192
- if add_run_uid:
193
- adata.obs["lamin_run_uid"] = run.uid
194
-
195
- if storepath.protocol == "s3":
196
- ctx = soma.SOMATileDBContext(tiledb_config=_tiledb_config_s3(storepath))
197
- else:
198
- ctx = None
199
-
200
- soma_io.from_anndata(storepath.as_posix(), adata, context=ctx, **kwargs)
201
-
202
- if add_run_uid:
203
- del adata.obs["lamin_run_uid"]
177
+ for adata_obj in adata_objects:
178
+ soma_io.from_anndata(
179
+ storepath,
180
+ adata_obj,
181
+ measurement_name,
182
+ context=ctx,
183
+ obs_id_name=obs_id_name,
184
+ var_id_name=var_id_name,
185
+ registration_mapping=registration_mapping,
186
+ **kwargs,
187
+ )
204
188
 
205
- revises = None
206
- if appending:
207
- if store_is_artifact:
208
- revises = store
209
- else:
210
- from lamindb._artifact import (
211
- check_path_in_existing_storage,
212
- get_relative_path_to_directory,
213
- )
214
-
215
- storage = check_path_in_existing_storage(storepath)
216
- if isinstance(storage, Storage):
217
- search_by_key = get_relative_path_to_directory(
218
- path=storepath, directory=UPath(storage.root)
219
- ).as_posix()
220
- revises = Artifact.filter(
221
- key=search_by_key, is_latest=True, _key_is_virtual=False
222
- ).one_or_none()
223
- if revises is not None:
224
- logger.info(f"Assuming it is a new version of {revises}.")
225
-
226
- if revises is None:
227
- return Artifact(storepath, run=run, **artifact_kwargs)
228
- else:
229
- return Artifact(storepath, run=run, revises=revises, **artifact_kwargs)
189
+ return Artifact(
190
+ storepath,
191
+ key=key,
192
+ description=description,
193
+ run=run,
194
+ revises=revises,
195
+ _is_internal_call=True,
196
+ ).save()
@@ -99,6 +99,10 @@ def create_uid(
99
99
  n_full_id: int = 20,
100
100
  revises: IsVersioned | None = None,
101
101
  ) -> tuple[str, IsVersioned | None]:
102
+ """This also updates revises in case it's not the latest version.
103
+
104
+ This is why it returns revises.
105
+ """
102
106
  if revises is not None:
103
107
  if not revises.is_latest:
104
108
  # need one more request
@@ -4,6 +4,9 @@
4
4
  :toctree: .
5
5
 
6
6
  save_vitessce_config
7
+ save_tiledbsoma_experiment
7
8
  """
8
9
 
10
+ from lamindb.core.storage import save_tiledbsoma_experiment
11
+
9
12
  from ._vitessce import save_vitessce_config
@@ -56,22 +56,12 @@ def save_vitessce_config(
56
56
  raise ValueError("Each file must have a 'url' key.")
57
57
  s3_path = file["url"]
58
58
  s3_path_last_element = s3_path.split("/")[-1]
59
- # note 1: the following parses the stem uid of the artifact from the S3 path
60
- # there might be a better way of doing this in case the vitessce config
61
- # gets updated in the future; but given these paths are set in stone
62
- # this should be more robust than it looks
63
- #
64
- # note 2: what's not great is the fact that people might use composite suffixes we don't recognize
65
- # I don't know what to do about it other than documenting it clearly
66
- # https://github.com/laminlabs/lamindb/blob/main/lamindb/core/storage/_valid_suffixes.py
67
- # https://docs.lamin.ai/lamindb.core.storage.valid_suffixes
68
- #
69
59
  # now start with attempting to strip the composite suffix candidates
70
60
  for suffix in valid_composite_zarr_suffixes:
71
61
  s3_path_last_element = s3_path_last_element.replace(suffix, "")
72
62
  # in case there was no hit, strip plain ".zarr"
73
63
  artifact_stem_uid = s3_path_last_element.replace(".zarr", "")
74
- # if there is still a "." in string, we
64
+ # if there is still a "." in string, raise an error
75
65
  if "." in artifact_stem_uid:
76
66
  raise ValueError(
77
67
  f"Suffix should be '.zarr' or one of {valid_composite_zarr_suffixes}. Inspect your path {s3_path}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.76.2
3
+ Version: 0.76.4
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.8
@@ -9,22 +9,22 @@ Classifier: Programming Language :: Python :: 3.8
9
9
  Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
- Requires-Dist: lnschema_core==0.73.2
13
- Requires-Dist: lamindb_setup==0.76.6
12
+ Requires-Dist: lnschema_core==0.73.5
13
+ Requires-Dist: lamindb_setup==0.76.8
14
14
  Requires-Dist: lamin_utils==0.13.4
15
- Requires-Dist: lamin_cli==0.16.2
15
+ Requires-Dist: lamin_cli==0.17.0
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
19
19
  Requires-Dist: python-dateutil
20
- Requires-Dist: anndata>=0.8.0,<=0.10.8
20
+ Requires-Dist: anndata>=0.8.0,<=0.10.9
21
21
  Requires-Dist: scipy<1.13.0rc1
22
22
  Requires-Dist: fsspec
23
23
  Requires-Dist: pandas
24
24
  Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
26
26
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
27
- Requires-Dist: bionty==0.48.3 ; extra == "bionty"
27
+ Requires-Dist: bionty==0.49.1 ; extra == "bionty"
28
28
  Requires-Dist: pre-commit ; extra == "dev"
29
29
  Requires-Dist: nox ; extra == "dev"
30
30
  Requires-Dist: laminci>=0.3 ; extra == "dev"
@@ -38,7 +38,7 @@ Requires-Dist: django-schema-graph ; extra == "erdiagram"
38
38
  Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
39
39
  Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
40
40
  Requires-Dist: nbproject==0.10.4 ; extra == "jupyter"
41
- Requires-Dist: nbstripout==0.6.1 ; extra == "jupyter"
41
+ Requires-Dist: jupytext ; extra == "jupyter"
42
42
  Requires-Dist: nbconvert ; extra == "jupyter"
43
43
  Requires-Dist: zarr>=2.16.0 ; extra == "zarr"
44
44
  Project-URL: Home, https://github.com/laminlabs/lamindb
@@ -1,47 +1,47 @@
1
- lamindb/__init__.py,sha256=OCLxYHwhRyaf6Zx-AKHTSEFWM-J342YRxDP2hhCIu6c,2309
2
- lamindb/_artifact.py,sha256=RygNHePDo895KG61FctFRdHO4jVa9cmj-yBBsyRE50A,43840
3
- lamindb/_can_validate.py,sha256=ne8-9sAG9vXnMXZqso6mYMt-xDg16h-gq6yHJXKFpuI,17690
1
+ lamindb/__init__.py,sha256=faIPIM0ynMz0AU9pziDSQJT-rQhUXqpJ3PWRlmijqbs,2319
2
+ lamindb/_artifact.py,sha256=QjCge5kaAcfhGv84s299OT99LmHTSYDxgzw5kN-x3-8,44416
3
+ lamindb/_can_validate.py,sha256=9di9FLmC2m3dpT42sceF34UEFzQITi2e_hjVMa8DIc4,18261
4
4
  lamindb/_collection.py,sha256=F_VgpLBprrzUQ-tPngWvO9vFd7jX66MVwIi031JOris,14871
5
- lamindb/_curate.py,sha256=EAikoFg2rL8kRsWEIXH33P1VplSGAACMuFHanicguWw,55964
5
+ lamindb/_curate.py,sha256=gCbDiqhsJzVZZ6BuEoFXUpsNOffpUNDlrX1dJiOqJJo,58753
6
6
  lamindb/_feature.py,sha256=nZhtrH0ssoNls-hV-dkwfK9sKypg2El59R9qfarxfUE,5340
7
7
  lamindb/_feature_set.py,sha256=DmAy96V_RyV0yiyvWOCHgustXPsCaMwn4TrWwh2qDd8,8104
8
- lamindb/_filter.py,sha256=Fs7_x3tA_KVz0lYt0bJkWfjnEKAnkVN20CfKhp9aKWg,1403
9
- lamindb/_finish.py,sha256=wCjPmTBmL_z2WcZq9v6TZroZ_J_Te9KC5GzFuYdrIRc,9413
8
+ lamindb/_filter.py,sha256=9QHa9J-_6QeYPQATZpTun2VGiFofwzB0Km-KnKajHcM,663
9
+ lamindb/_finish.py,sha256=NEZmTW7sWzwi-QYTwVgoOeeD-pZxWBrZOITK_YoJreU,9434
10
10
  lamindb/_from_values.py,sha256=8kYpR8Q85EOaTcsPGjVHeZh29fGVgum5OEQf4Hsz_80,13533
11
11
  lamindb/_is_versioned.py,sha256=5lAnhTboltFkZCKVRV1uxkm0OCjJz_HKi3yQq_vEuMs,1306
12
12
  lamindb/_parents.py,sha256=eMavdd6IO6STOVJSlR2TzdRtx6sKYDKsMOtlR3DZlgQ,15599
13
13
  lamindb/_query_manager.py,sha256=Ipe85HL31DDwMbC8CN_1Svbwk48a_DUh_INGQdZL08I,4222
14
- lamindb/_query_set.py,sha256=mwNfGWcZbI5a1VfuiQzkweU4VQchE8Va8HiCIa0GNu4,11604
15
- lamindb/_record.py,sha256=MDLvcsZ23lZkThnrYQtj_uW-1BnxCPpyJ5mKl9KPs4A,21199
14
+ lamindb/_query_set.py,sha256=BiGvEiaBSd9aV28EAy83Q8h6RLsYMDjfxLOljAcyMaM,12692
15
+ lamindb/_record.py,sha256=53_0oU6v45V5gIDJgkAUSX7iIV5Si_4cuOWUHJa8JVo,21241
16
16
  lamindb/_run.py,sha256=5M_r1zGDv9HlqbqRKTWCYCOtENovJ-8mQ4kY7XqcLaU,1888
17
17
  lamindb/_save.py,sha256=Fu7Z84btKOXfTfpunKLni21s5ER2zIllqg5e3nPq-0A,10910
18
18
  lamindb/_storage.py,sha256=GBVChv-DHVMNEBJL5l_JT6B4RDhZ6NnwgzmUICphYKk,413
19
- lamindb/_transform.py,sha256=Ck674iuKIp9HDpHuyFFM2xKJcFAUvQDRTnEdnx00Rq0,4114
19
+ lamindb/_transform.py,sha256=Rgj8uq6t4NpyP7DtQ-0IRJs7vSEKHyWftY5dvwKNFgs,4063
20
20
  lamindb/_ulabel.py,sha256=XDSdZBXX_ki5s1vOths3MjF2x5DPggBR_PV_KF4SGyg,1611
21
21
  lamindb/_utils.py,sha256=LGdiW4k3GClLz65vKAVRkL6Tw-Gkx9DWAdez1jyA5bE,428
22
22
  lamindb/_view.py,sha256=4Ln2ItTb3857PAI-70O8eJYqoTJ_NNFc7E_wds6OGns,2412
23
- lamindb/core/__init__.py,sha256=QePKN3dkGuNEfIc2CKwBt3Kcl39bbghX6XwXKpK3BA0,1491
24
- lamindb/core/_context.py,sha256=O4ovdIfvIC9E4oaqpSjBqwHOKThmP8_aod0MiOWaEwI,19517
23
+ lamindb/core/__init__.py,sha256=hxPWM_Jnrllx0G_6itEGU2meXwptkkgiL9zsBvlhHM4,1495
24
+ lamindb/core/_context.py,sha256=U-vmMH4s0ZfvS6KBRj5mOsOFuvcioJ7FgUdn0OOkLvA,19972
25
25
  lamindb/core/_data.py,sha256=eocOXsZGu62LPtz6yIlvHhPSJTf3yF2ITZTffyflWYI,16269
26
26
  lamindb/core/_feature_manager.py,sha256=94tX6gq_Rx7fkDARQBxB2z92qUDpHocFSAdKv5izMT4,32490
27
- lamindb/core/_label_manager.py,sha256=jSLvxAuTuOYosSh_QJhIz3bqnbmWKP43y5abVMb-hOQ,9240
28
- lamindb/core/_mapped_collection.py,sha256=ST-cTfokIGkRadjSHEyvIK2san8cGr7WZpgbgs5neLI,22025
27
+ lamindb/core/_label_manager.py,sha256=zCE-PS1Y5ALpzoSOx1P6ZTFVPgFNRAmmyTQF0e8QBXA,9131
28
+ lamindb/core/_mapped_collection.py,sha256=1XzratL2IvRleqioNhWo26Lsuqkev8-HEImmHQxw9Kw,23266
29
29
  lamindb/core/_settings.py,sha256=GGEB8BU5GinIfD4ktr1Smp6GPHGaInu46MhP4EecZDY,5950
30
30
  lamindb/core/_sync_git.py,sha256=qc0yfPyKeG4uuNT_3qsv-mkIMqhLFqfXNeNVO49vV00,4547
31
31
  lamindb/core/_track_environment.py,sha256=STzEVUzOeUEWdX7WDJUkKH4u08k7eupRX6AXQwoVt14,828
32
- lamindb/core/exceptions.py,sha256=qNFYN5Jc7Y6kw4re-jsW0AEIprsV2HB1wTcJiO-u-ks,1278
32
+ lamindb/core/exceptions.py,sha256=TKyt1JOUwWIHbkCQjir_LQadf8960eQ95RWhSpz5_Bk,1288
33
33
  lamindb/core/fields.py,sha256=47Jmh3efUr5ZscgimR_yckY-I3cNf8ScLutbwKCK3j4,162
34
34
  lamindb/core/schema.py,sha256=KiYQn_8fokSMztTNDe6qUocZzKXWxU32H-YChNJv51A,1877
35
35
  lamindb/core/types.py,sha256=uVBqSVLoQaTkqP9nqsJhwU6yYnx8H5e6-ZxrB6vpOOw,265
36
- lamindb/core/versioning.py,sha256=__SOHhk5OjMJgAUjixzp0GFcQrpjm8sBUXC9Fouk2AE,5162
36
+ lamindb/core/versioning.py,sha256=GYhgSA6IOlWMMNfctZu7U_jIvmQP2gdvsZxn4bTanOc,5277
37
37
  lamindb/core/datasets/__init__.py,sha256=zRP98oqUAaXhqWyKMiH0s_ImVIuNeziQQ2kQ_t0f-DI,1353
38
38
  lamindb/core/datasets/_core.py,sha256=CgVF_pXuBXLElzubDMsl1DbpYOnXCY0HleITVvBKih4,19873
39
39
  lamindb/core/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
40
- lamindb/core/storage/__init__.py,sha256=9B3JqHydQnclP4NUY2kEc99K1cJBQZA4jyy3EmDxsYk,541
41
- lamindb/core/storage/_anndata_accessor.py,sha256=jmEZeeZlt8-qBXRkU0tTA-t6dVEb_dH86wc1ok0jSRY,24030
40
+ lamindb/core/storage/__init__.py,sha256=x-Bpxv1rx6uGog-chI0fdpt0UhkXQkwoQqye0TNk0WQ,514
41
+ lamindb/core/storage/_anndata_accessor.py,sha256=F3ze8ICG7K4BKueg-766olnoEA8Eh8gVrvDSSE2FX-M,24160
42
42
  lamindb/core/storage/_anndata_sizes.py,sha256=aXO3OB--tF5MChenSsigW6Q-RuE8YJJOUTVukkLrv9A,1029
43
43
  lamindb/core/storage/_backed_access.py,sha256=YcWCeT2eligJGsBdjJS_-4el_eC9J088jxUWG9lsleM,3231
44
- lamindb/core/storage/_tiledbsoma.py,sha256=GNPG8pDYmZLFBSujsQ8VqlfWaFmDO58kgBXw6JESQJs,7812
44
+ lamindb/core/storage/_tiledbsoma.py,sha256=OVDjvu4lRovRtWcn9Tu3N5tA-zbF8snsjkR4DOXOTTc,7001
45
45
  lamindb/core/storage/_valid_suffixes.py,sha256=vUSeQ4s01rdhD_vSd6wKmFBsgMJAKkBMnL_T9Y1znMg,501
46
46
  lamindb/core/storage/_zarr.py,sha256=5ceEz6YIvgvUnVVNWhK5Z4W0WfrvyvY82Yna5jSX1_E,3661
47
47
  lamindb/core/storage/objects.py,sha256=OzvBCS-Urz5mr-O95qYt6RGBDDX5HmjfRRKWPPDn1ZE,1797
@@ -49,11 +49,11 @@ lamindb/core/storage/paths.py,sha256=woOrjtBhNnzm8DjF262ipwyZaQ_A-7MT2ZPoiefAfYk
49
49
  lamindb/core/subsettings/__init__.py,sha256=KFHPzIE7f7Bj4RgMjGQF4CjTdHVG_VNFBrCndo49ixo,198
50
50
  lamindb/core/subsettings/_creation_settings.py,sha256=54mfMH_osC753hpxcl7Dq1rwBD2LHnWveXtQpkLBITE,1194
51
51
  lamindb/core/subsettings/_transform_settings.py,sha256=4YbCuZtJo6zdytl6UQR4GvdDkTtT6SRBqVzofGzNOt8,583
52
- lamindb/integrations/__init__.py,sha256=MoLRD_qqX5WHFUAqHL6zoY_cDkWH0zimaGT_1CyXKnk,124
53
- lamindb/integrations/_vitessce.py,sha256=aDCyZTddpMfUzjEo0DXQ3XlD--ebSqnsGiMxJBunX90,5141
52
+ lamindb/integrations/__init__.py,sha256=RWGMYYIzr8zvmNPyVB4m-p4gMDhxdRbjES2Ed23OItw,215
53
+ lamindb/integrations/_vitessce.py,sha256=4DM_EXe-o7BVmX7QGTiwREWMHDzAtOqpqDvL70xQKfE,4451
54
54
  lamindb/setup/__init__.py,sha256=OwZpZzPDv5lPPGXZP7-zK6UdO4FHvvuBh439yZvIp3A,410
55
55
  lamindb/setup/core/__init__.py,sha256=SevlVrc2AZWL3uALbE5sopxBnIZPWZ1IB0NBDudiAL8,167
56
- lamindb-0.76.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
57
- lamindb-0.76.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
58
- lamindb-0.76.2.dist-info/METADATA,sha256=99nkmjVubVfQahE9S4aO1e8Ot6G4iFaPZltNBE-oFPo,2381
59
- lamindb-0.76.2.dist-info/RECORD,,
56
+ lamindb-0.76.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
57
+ lamindb-0.76.4.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
58
+ lamindb-0.76.4.dist-info/METADATA,sha256=X_O43XFARj0Vg5pAgez5uCI4IQG5jUp6cqd_pMAc0YQ,2372
59
+ lamindb-0.76.4.dist-info/RECORD,,