lamindb 0.74.3__py3-none-any.whl → 0.75.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.
@@ -1,5 +1,19 @@
1
- from lamindb_setup.core.upath import VALID_COMPOSITE_SUFFIXES, VALID_SUFFIXES
1
+ from lamindb_setup.core.upath import VALID_COMPOSITE_SUFFIXES, VALID_SIMPLE_SUFFIXES
2
2
 
3
3
  # add new composite suffixes like so
4
- VALID_COMPOSITE_SUFFIXES.update({".vitessce.json"})
4
+ VALID_COMPOSITE_SUFFIXES.update(
5
+ {
6
+ ".vitessce.json",
7
+ ".ome.zarr",
8
+ }
9
+ )
5
10
  # can do the same for simple valid suffixes
11
+
12
+
13
+ class VALID_SUFFIXES:
14
+ """Valid suffixes."""
15
+
16
+ SIMPLE: set[str] = VALID_SIMPLE_SUFFIXES
17
+ """Simple suffixes."""
18
+ COMPOSITE: set[str] = VALID_COMPOSITE_SUFFIXES
19
+ """Composite suffixes."""
@@ -39,7 +39,7 @@ is_run_from_ipython = getattr(builtins, "__IPYTHON__", False)
39
39
 
40
40
  # add type annotations back asap when re-organizing the module
41
41
  def auto_storage_key_from_artifact(artifact: Artifact):
42
- if artifact.key is None or artifact.key_is_virtual:
42
+ if artifact.key is None or artifact._key_is_virtual:
43
43
  is_dir = artifact.n_objects is not None
44
44
  return auto_storage_key_from_artifact_uid(artifact.uid, artifact.suffix, is_dir)
45
45
  else:
@@ -56,6 +56,14 @@ def auto_storage_key_from_artifact_uid(uid: str, suffix: str, is_dir: bool) -> s
56
56
  return storage_key
57
57
 
58
58
 
59
+ def check_path_is_child_of_root(path: Path | UPath, root: Path | UPath | None) -> bool:
60
+ # str is needed to eliminate UPath storage_options
61
+ # from the equality checks below
62
+ path = UPath(str(path))
63
+ root = UPath(str(root))
64
+ return root.resolve() in path.resolve().parents
65
+
66
+
59
67
  def attempt_accessing_path(
60
68
  artifact: Artifact,
61
69
  storage_key: str,
@@ -141,19 +149,6 @@ def delete_storage(
141
149
  storagepath: Path, raise_file_not_found_error: bool = True
142
150
  ) -> None | str:
143
151
  """Delete arbitrary artifact."""
144
- # TODO is_relative_to is not available in 3.8 and deprecated since 3.12
145
- # replace with check_path_is_child_of_root but this needs to first be debugged
146
- # if not check_path_is_child_of_root(storagepath, settings.storage.root):
147
- if not storagepath.is_relative_to(settings.storage.root): # type: ignore
148
- allow_delete = False
149
- if setup_settings.instance.keep_artifacts_local:
150
- allow_delete = storagepath.is_relative_to( # type: ignore
151
- setup_settings.instance.storage_local.root
152
- )
153
- if not allow_delete:
154
- logger.warning("couldn't delete files outside of default storage")
155
- return "did-not-delete"
156
- # only delete files in the default storage
157
152
  if storagepath.is_file():
158
153
  storagepath.unlink()
159
154
  elif storagepath.is_dir():
lamindb/core/types.py CHANGED
@@ -7,9 +7,12 @@
7
7
  StrField
8
8
  ListLike
9
9
  TransformType
10
+ ArtifactType
10
11
  """
12
+
11
13
  from lamindb_setup.core.types import UPathStr
12
14
  from lnschema_core.types import (
15
+ ArtifactType,
13
16
  ListLike,
14
17
  StrField,
15
18
  TransformType,
@@ -136,7 +136,7 @@ def process_is_new_version_of(
136
136
  type: type[IsVersioned],
137
137
  ) -> tuple[str, str, str]:
138
138
  if is_new_version_of is not None and not isinstance(is_new_version_of, type):
139
- raise TypeError(f"is_new_version_of has to be of type {type}")
139
+ raise TypeError(f"is_new_version_of has to be of type {type.__name__}")
140
140
  if is_new_version_of is None:
141
141
  uid = init_uid(version=version, n_full_id=type._len_full_uid)
142
142
  else:
@@ -5,4 +5,5 @@
5
5
 
6
6
  save_vitessce_config
7
7
  """
8
+
8
9
  from ._vitessce import save_vitessce_config
@@ -15,61 +15,98 @@ if TYPE_CHECKING:
15
15
  from vitessce import VitessceConfig
16
16
 
17
17
 
18
- # tested & context in https://github.com/laminlabs/lamin-spatial
19
- def save_vitessce_config(vitessce_config: VitessceConfig, description: str) -> Artifact:
18
+ # "unit test": https://github.com/laminlabs/lamindb/blob/main/docs/storage/vitessce.ipynb
19
+ # integration test & context: https://github.com/laminlabs/lamin-spatial/blob/main/docs/vitessce.ipynb
20
+ def save_vitessce_config(
21
+ vitessce_config: VitessceConfig, description: str | None = None
22
+ ) -> Artifact:
20
23
  """Validates and saves a ``VitessceConfig`` object.
21
24
 
22
- Example: :doc:`docs:vitessce`.
25
+ Guide: :doc:`docs:vitessce`.
23
26
 
24
27
  Args:
25
- vitessce_config (``VitessceConfig``): A VitessceConfig object.
26
- description: A description for the artifact.
28
+ vitessce_config (``VitessceConfig``): A `VitessceConfig` object.
29
+ description: A description for the `VitessceConfig` artifact.
27
30
 
31
+ .. versionchanged:: 0.75.1
32
+ Now displays the "Vitessce button" on the hub next to the dataset. It additionally keeps displaying it next to the configuration file.
28
33
  .. versionchanged:: 0.70.2
29
- This function no longer saves the dataset. It only saves the VitessceConfig object.
34
+ No longer saves the dataset. It only saves the `VitessceConfig` object.
30
35
  """
36
+ # can only import here because vitessce is not a dependency
37
+ from vitessce import VitessceConfig
38
+
39
+ from lamindb.core.storage import VALID_SUFFIXES
40
+
41
+ assert isinstance(vitessce_config, VitessceConfig) # noqa: S101
31
42
  vc_dict = vitessce_config.to_dict()
43
+ valid_composite_zarr_suffixes = [
44
+ suffix for suffix in VALID_SUFFIXES.COMPOSITE if suffix.endswith(".zarr")
45
+ ]
32
46
  # validate
33
- datasets = vc_dict["datasets"]
34
- input_artifacts = []
35
- for dataset in datasets:
36
- if "files" not in dataset:
37
- raise ValueError("Each dataset must have a 'files' key.")
38
- for file in dataset["files"]:
47
+ dataset_artifacts = []
48
+ assert vc_dict["datasets"] # noqa: S101
49
+ for vitessce_dataset in vc_dict["datasets"]:
50
+ # didn't find good ways to violate the below, hence using plain asserts
51
+ # without user feedback
52
+ assert "files" in vitessce_dataset # noqa: S101
53
+ assert vitessce_dataset["files"] # noqa: S101
54
+ for file in vitessce_dataset["files"]:
39
55
  if "url" not in file:
40
56
  raise ValueError("Each file must have a 'url' key.")
41
- filename = file["url"].split("/")[-1]
42
- if not filename.endswith((".anndata.zarr", ".zarr", ".ome.zarr")):
43
- logger.warning(
44
- "filename should end with '.anndata.zarr', '.zarr', or '.ome.zarr'."
57
+ s3_path = file["url"]
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
+ # now start with attempting to strip the composite suffix candidates
70
+ for suffix in valid_composite_zarr_suffixes:
71
+ s3_path_last_element = s3_path_last_element.replace(suffix, "")
72
+ # in case there was no hit, strip plain ".zarr"
73
+ artifact_stem_uid = s3_path_last_element.replace(".zarr", "")
74
+ # if there is still a "." in string, we
75
+ if "." in artifact_stem_uid:
76
+ raise ValueError(
77
+ f"Suffix should be '.zarr' or one of {valid_composite_zarr_suffixes}. Inspect your path {s3_path}"
45
78
  )
46
- filestem = (
47
- filename.replace(".anndata.zarr", "")
48
- .replace(".spatialdata.zarr", "")
49
- .replace(".ome.zarr", "")
50
- )
51
- artifact = Artifact.filter(uid__startswith=filestem).one_or_none()
79
+ artifact = Artifact.filter(uid__startswith=artifact_stem_uid).one_or_none()
52
80
  if artifact is None:
53
- logger.warning(
54
- f"could not find dataset '{filestem}' in lamindb: {dataset}"
81
+ raise ValueError(
82
+ f"Could not find dataset with stem uid '{artifact_stem_uid}' in lamindb: {vitessce_dataset}. Did you follow https://docs.lamin.ai/vitessce? It appears the AWS S3 path doesn't encode a lamindb uid."
55
83
  )
56
84
  else:
57
- input_artifacts.append(artifact)
85
+ dataset_artifacts.append(artifact)
58
86
  # link inputs
59
87
  with logger.mute():
60
- transform = Transform(name="save_vitessce_config", type="function", version="1")
88
+ transform = Transform(name="save_vitessce_config", type="function", version="2")
61
89
  transform.save()
62
90
  run = Run(transform=transform)
63
91
  run.save()
64
- run.input_artifacts.set(input_artifacts)
92
+ if len(dataset_artifacts) > 1:
93
+ # if we have more datasets, we should create a collection
94
+ # and attach an action to the collection
95
+ raise NotImplementedError
96
+ run.input_artifacts.set(dataset_artifacts)
65
97
  # create a JSON export
66
98
  config_file_local_path = (
67
99
  ln_setup.settings.storage.cache_dir / "config.vitessce.json"
68
100
  )
69
101
  with open(config_file_local_path, "w") as file:
70
102
  json.dump(vc_dict, file)
71
- artifact = Artifact(config_file_local_path, description=description, run=run)
72
- artifact.save()
103
+ vitessce_config_artifact = Artifact(
104
+ config_file_local_path, description=description, run=run
105
+ ).save()
106
+ # we have one and only one dataset artifact, hence the following line is OK
107
+ dataset_artifacts[0]._actions.add(vitessce_config_artifact)
73
108
  slug = ln_setup.settings.instance.slug
74
- logger.important(f"go to: https://lamin.ai/{slug}/artifact/{artifact.uid}")
75
- return artifact
109
+ logger.important(
110
+ f"go to: https://lamin.ai/{slug}/artifact/{vitessce_config_artifact.uid}"
111
+ )
112
+ return vitessce_config_artifact
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.74.3
3
+ Version: 0.75.1
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,10 +9,10 @@ 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.70.5
13
- Requires-Dist: lamindb_setup==0.74.2
12
+ Requires-Dist: lnschema_core==0.72.2
13
+ Requires-Dist: lamindb_setup==0.76.3
14
14
  Requires-Dist: lamin_utils==0.13.2
15
- Requires-Dist: lamin_cli==0.15.0
15
+ Requires-Dist: lamin_cli==0.16.0
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -24,7 +24,7 @@ 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.44.3 ; extra == "bionty"
27
+ Requires-Dist: bionty==0.48.0 ; 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"
@@ -0,0 +1,58 @@
1
+ lamindb/__init__.py,sha256=i66mHHYh9TUGKmCb5WgvaZx0flzOQyKKLcCpz01_8X0,2249
2
+ lamindb/_artifact.py,sha256=pu0d2CuRkT4xP5hLpkrKlSPU3Maihmdk1B7VKu-cjj4,42575
3
+ lamindb/_can_validate.py,sha256=jPZHhtPaZJos5bL8Mk8ZNh34mItwYRwOynhofKUxwfY,17472
4
+ lamindb/_collection.py,sha256=vrvuww4MLPx6qHqRWy6tLvRHOmXdvEjYN7dnG9DIIPU,14894
5
+ lamindb/_curate.py,sha256=M42XxtcSKSo2Vh3xCio1UogVS0kCG1Dtx5cwEwnWOEM,55508
6
+ lamindb/_feature.py,sha256=hLj5KDhIVkZrIa7IbiHGyUBGZS7PeDNxKsNK1EadBAc,7377
7
+ lamindb/_feature_set.py,sha256=DmAy96V_RyV0yiyvWOCHgustXPsCaMwn4TrWwh2qDd8,8104
8
+ lamindb/_filter.py,sha256=I1tSIF-izmD48YpB8NtKmau59Vpt6C54RPHWc3oinGM,1412
9
+ lamindb/_finish.py,sha256=3rGY4RxhcKR1BIdgf6GPB03AArhlV5vYtD6wxtTHYxE,10817
10
+ lamindb/_from_values.py,sha256=tE6LKWbixZWbt-ILsy2EeRh7i9eKvvAeJv081VQRGAk,12859
11
+ lamindb/_is_versioned.py,sha256=Z_zVsHTnNaWvD15dEz18VocsSgka53jUzs_wDr78ltI,1344
12
+ lamindb/_parents.py,sha256=eMavdd6IO6STOVJSlR2TzdRtx6sKYDKsMOtlR3DZlgQ,15599
13
+ lamindb/_query_manager.py,sha256=6_ZqQr0SKTYsbMtJd5BmaMoyASIVel5v2F1KMgacWlU,4252
14
+ lamindb/_query_set.py,sha256=LM5NsAWy5FCZZSxX1VbE20RdA5nsyk4_5p4abuMjdcI,11662
15
+ lamindb/_record.py,sha256=XtNKZol9X5u3h1fecDhOn5Z1OpTXunQ9UrZwcHSiajM,19219
16
+ lamindb/_run.py,sha256=xj3ER4F_yWvuNw1mr0XU-QuIPi5hBO7Ue0ygBgJQ6mc,1887
17
+ lamindb/_save.py,sha256=9lpFpQLgmPOp6JcoM9XetNkbYu2JgY70sGQZVz3Gzmw,11027
18
+ lamindb/_storage.py,sha256=GBVChv-DHVMNEBJL5l_JT6B4RDhZ6NnwgzmUICphYKk,413
19
+ lamindb/_transform.py,sha256=OtZmCSS-mxWPJU0S6p79sYauY-cKIxqBYfeMX0-SQ_A,3435
20
+ lamindb/_ulabel.py,sha256=XDSdZBXX_ki5s1vOths3MjF2x5DPggBR_PV_KF4SGyg,1611
21
+ lamindb/_utils.py,sha256=LGdiW4k3GClLz65vKAVRkL6Tw-Gkx9DWAdez1jyA5bE,428
22
+ lamindb/_view.py,sha256=4Ln2ItTb3857PAI-70O8eJYqoTJ_NNFc7E_wds6OGns,2412
23
+ lamindb/core/__init__.py,sha256=uCtTkcUwJ7w40cWdaVBymiyxMuKlkdX-QZMtOr3k0us,1441
24
+ lamindb/core/_data.py,sha256=AbBVvutI7iFZW5PVEYzx0HIlaLhR9KpnoPyba9OI86k,16253
25
+ lamindb/core/_feature_manager.py,sha256=gJowe9-tifi0Z5IcChV-jtGYVdl6XgR2m_oswwhU17Y,31980
26
+ lamindb/core/_label_manager.py,sha256=5jbBF9aYPeeqpDZDimAXskGw76YUaQTQak6XAt6madU,9183
27
+ lamindb/core/_mapped_collection.py,sha256=wN2qEXnKrx0kqblVml_Kx9hYomUAZLYKckGXX4-9dr0,19621
28
+ lamindb/core/_run_context.py,sha256=bk4hwbGbx1no-JKVpLioIOU5dyO8YCdg-srbQV7UuGE,18371
29
+ lamindb/core/_settings.py,sha256=sDfIfq9H7H8nUE51FJF4EO_Zihlxh44S3GbaliHKJY4,6108
30
+ lamindb/core/_sync_git.py,sha256=qc0yfPyKeG4uuNT_3qsv-mkIMqhLFqfXNeNVO49vV00,4547
31
+ lamindb/core/_track_environment.py,sha256=STzEVUzOeUEWdX7WDJUkKH4u08k7eupRX6AXQwoVt14,828
32
+ lamindb/core/exceptions.py,sha256=rNLDlqDJt6stM_HGeE9qR0oWRNn4Kq0WDdIi85P53VA,1057
33
+ lamindb/core/fields.py,sha256=47Jmh3efUr5ZscgimR_yckY-I3cNf8ScLutbwKCK3j4,162
34
+ lamindb/core/schema.py,sha256=KiYQn_8fokSMztTNDe6qUocZzKXWxU32H-YChNJv51A,1877
35
+ lamindb/core/types.py,sha256=uVBqSVLoQaTkqP9nqsJhwU6yYnx8H5e6-ZxrB6vpOOw,265
36
+ lamindb/core/versioning.py,sha256=8fapNQmpxlUaiJG9oo9Y4I7xtFXzD077dMwzkeWTMMY,4965
37
+ lamindb/core/datasets/__init__.py,sha256=zRP98oqUAaXhqWyKMiH0s_ImVIuNeziQQ2kQ_t0f-DI,1353
38
+ lamindb/core/datasets/_core.py,sha256=04mqj3IVIpY97HlD7VVL6-E6tf7za9suzE3lH07Z698,19564
39
+ lamindb/core/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
40
+ lamindb/core/storage/__init__.py,sha256=MjKg2-p8EbOYTVsgufnK93ut7HG7_MzLDAqtzXt0U2Q,501
41
+ lamindb/core/storage/_anndata_accessor.py,sha256=jmEZeeZlt8-qBXRkU0tTA-t6dVEb_dH86wc1ok0jSRY,24030
42
+ lamindb/core/storage/_anndata_sizes.py,sha256=aXO3OB--tF5MChenSsigW6Q-RuE8YJJOUTVukkLrv9A,1029
43
+ lamindb/core/storage/_backed_access.py,sha256=MsSgiIccHVhqOcur2lZ4mj5LSIL5OL8nX4eqK6mloU0,4732
44
+ lamindb/core/storage/_valid_suffixes.py,sha256=9erE4FX1ArRoTkvn5pzUmlKQSYnKeQBymOnOPCv2TD4,465
45
+ lamindb/core/storage/_zarr.py,sha256=5ceEz6YIvgvUnVVNWhK5Z4W0WfrvyvY82Yna5jSX1_E,3661
46
+ lamindb/core/storage/objects.py,sha256=OzvBCS-Urz5mr-O95qYt6RGBDDX5HmjfRRKWPPDn1ZE,1797
47
+ lamindb/core/storage/paths.py,sha256=I0UjQfXfh3MptfLgpA0iSyR-X9pLOvgtXNr4B_Lwk4g,7810
48
+ lamindb/core/subsettings/__init__.py,sha256=KFHPzIE7f7Bj4RgMjGQF4CjTdHVG_VNFBrCndo49ixo,198
49
+ lamindb/core/subsettings/_creation_settings.py,sha256=54mfMH_osC753hpxcl7Dq1rwBD2LHnWveXtQpkLBITE,1194
50
+ lamindb/core/subsettings/_transform_settings.py,sha256=4YbCuZtJo6zdytl6UQR4GvdDkTtT6SRBqVzofGzNOt8,583
51
+ lamindb/integrations/__init__.py,sha256=MoLRD_qqX5WHFUAqHL6zoY_cDkWH0zimaGT_1CyXKnk,124
52
+ lamindb/integrations/_vitessce.py,sha256=jcpLUNFq1BsDpZDkG5L3nzWNXDLuy3Eep_GfY0XqhhA,5077
53
+ lamindb/setup/__init__.py,sha256=OwZpZzPDv5lPPGXZP7-zK6UdO4FHvvuBh439yZvIp3A,410
54
+ lamindb/setup/core/__init__.py,sha256=SevlVrc2AZWL3uALbE5sopxBnIZPWZ1IB0NBDudiAL8,167
55
+ lamindb-0.75.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
56
+ lamindb-0.75.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
57
+ lamindb-0.75.1.dist-info/METADATA,sha256=dhUZDNTu6BtE-J67uGuRwJMQEJk8V_NpEurzVc90GoM,2669
58
+ lamindb-0.75.1.dist-info/RECORD,,
@@ -1,57 +0,0 @@
1
- lamindb/__init__.py,sha256=VfwmNQfCefzn3jsRS2l3fnV7jub1RpMj4aVCFh09vxI,2249
2
- lamindb/_artifact.py,sha256=pdSMBuZnlr-Jfot8p90x7TEbto-viXyryax5p1FljEs,40133
3
- lamindb/_can_validate.py,sha256=CUu-lBY9XnSYGWiazYhLMW5H0LuuR86mVbU7UnIZTVU,15010
4
- lamindb/_collection.py,sha256=P4UjZxC2OcViTmqSeW3NIiXU3C0ZF5BF9P6YcchS2Zg,14617
5
- lamindb/_curate.py,sha256=i3pqkNvgXtOXXmw7zPgnr7BT3KnZDBw8DyxuyPkhwbo,44898
6
- lamindb/_feature.py,sha256=hLj5KDhIVkZrIa7IbiHGyUBGZS7PeDNxKsNK1EadBAc,7377
7
- lamindb/_feature_set.py,sha256=nsiT9mKfEJdh2yqihOawfFL0mkHRNi5-9vxRllv5NAM,8137
8
- lamindb/_filter.py,sha256=Ed9k-LOkr1BwqeHpvaEe0w27cG7Bu0BaXPDA0OIzUpQ,1410
9
- lamindb/_finish.py,sha256=FRGN2cmBbZqmxr803YIpGGUaqst8xBTi3kmliV5oJo4,10504
10
- lamindb/_from_values.py,sha256=SGTQNb0M1h3icuYsfIIjqI7xNy3i3Frw_-PAl5MXMBo,13860
11
- lamindb/_is_versioned.py,sha256=8pXW2gkLTZsTxRERuWZLidiagNIC8evmCmnbztWkVQ4,1343
12
- lamindb/_parents.py,sha256=Zgi9Lmw9td18Y0QJ96rYaBrjSaZ8XGcseWdbJkpJhFU,15061
13
- lamindb/_query_manager.py,sha256=6_ZqQr0SKTYsbMtJd5BmaMoyASIVel5v2F1KMgacWlU,4252
14
- lamindb/_query_set.py,sha256=LM5NsAWy5FCZZSxX1VbE20RdA5nsyk4_5p4abuMjdcI,11662
15
- lamindb/_record.py,sha256=5B0mMvEoZ0gZ6MALy6bsbDOVU47pkVEhRCBVwVJnNwg,19150
16
- lamindb/_run.py,sha256=xj3ER4F_yWvuNw1mr0XU-QuIPi5hBO7Ue0ygBgJQ6mc,1887
17
- lamindb/_save.py,sha256=xs1ZdTYGd78zA3XqXhiwZ_QKAogLdHCQv1EBVFDWCis,11020
18
- lamindb/_storage.py,sha256=GBVChv-DHVMNEBJL5l_JT6B4RDhZ6NnwgzmUICphYKk,413
19
- lamindb/_transform.py,sha256=E9C7psuOnsNrUQpWRuGgEUM8_pc7YhDn7n4ieHzB4X0,3169
20
- lamindb/_ulabel.py,sha256=XDSdZBXX_ki5s1vOths3MjF2x5DPggBR_PV_KF4SGyg,1611
21
- lamindb/_utils.py,sha256=LGdiW4k3GClLz65vKAVRkL6Tw-Gkx9DWAdez1jyA5bE,428
22
- lamindb/_view.py,sha256=_sAcSD06bC92R_LLDcHMhO0IfOqybBXXRYxOXvm1Juc,2322
23
- lamindb/core/__init__.py,sha256=HtyYVFrS6RclSk7gZty9vgXU0k2_oZiqFPfqghBc4Fc,1415
24
- lamindb/core/_data.py,sha256=yk2ozTt-mNIA8bWllmcC__WgFukj03fZU41rr_ultlM,16264
25
- lamindb/core/_feature_manager.py,sha256=EvMoY9EAFGdbRkDR44YMJBMWBEt9IbtfZ0RHmiv0D58,31910
26
- lamindb/core/_label_manager.py,sha256=udG70H1FucAr4lmtFMgAcMJiAcYvoZIyT034NO93YF8,9265
27
- lamindb/core/_mapped_collection.py,sha256=SGUsR6RbjNzUOq6A6wTa4M4GkLMuP4Z70WOeF39WPCU,19618
28
- lamindb/core/_run_context.py,sha256=w_LdfwYTncCZmh4agNPey37UdKrzSglLfLUNBe5z1mw,18421
29
- lamindb/core/_settings.py,sha256=sDfIfq9H7H8nUE51FJF4EO_Zihlxh44S3GbaliHKJY4,6108
30
- lamindb/core/_sync_git.py,sha256=qc0yfPyKeG4uuNT_3qsv-mkIMqhLFqfXNeNVO49vV00,4547
31
- lamindb/core/_track_environment.py,sha256=STzEVUzOeUEWdX7WDJUkKH4u08k7eupRX6AXQwoVt14,828
32
- lamindb/core/exceptions.py,sha256=bbm-PeSy24qFcqh2HpucZWpwGAvk-TL_3FUoAPb3e3E,867
33
- lamindb/core/fields.py,sha256=47Jmh3efUr5ZscgimR_yckY-I3cNf8ScLutbwKCK3j4,162
34
- lamindb/core/schema.py,sha256=sNrzWnqeyh9Ppr7yImlSAXiHb_VJdB5DWuO-QERxQGY,1847
35
- lamindb/core/types.py,sha256=xeQF2x40p2pR9eIVQrXT74RrS810z2fbjmTRTSQUqPM,230
36
- lamindb/core/versioning.py,sha256=lz1JP3K-0npeSTZPY7kMVXqOOcB8IEGmdG0Si3kSdN8,4956
37
- lamindb/core/datasets/__init__.py,sha256=zRP98oqUAaXhqWyKMiH0s_ImVIuNeziQQ2kQ_t0f-DI,1353
38
- lamindb/core/datasets/_core.py,sha256=NhMELgF4aR9HAlU37BF3FkPLobxinRbMJ8s6XwgIqEM,19549
39
- lamindb/core/datasets/_fake.py,sha256=BZF9R_1iF0HDnvtZNqL2FtsjSMuqDIfuFxnw_LJYIh4,953
40
- lamindb/core/storage/__init__.py,sha256=5LUFQKRr2BX24d-yWBezhTXBV83sShcOvPj5Y5u6qIg,441
41
- lamindb/core/storage/_anndata_sizes.py,sha256=aXO3OB--tF5MChenSsigW6Q-RuE8YJJOUTVukkLrv9A,1029
42
- lamindb/core/storage/_backed_access.py,sha256=4VmnqGd5DH6xJ5UQ7JMiQ2dfs-uLBnVlJXkZB8GcJHI,26624
43
- lamindb/core/storage/_valid_suffixes.py,sha256=J08aglC9oo35pzahj0SQXW9IHib8Asp4dc11co-2uys,212
44
- lamindb/core/storage/_zarr.py,sha256=5ceEz6YIvgvUnVVNWhK5Z4W0WfrvyvY82Yna5jSX1_E,3661
45
- lamindb/core/storage/objects.py,sha256=OzvBCS-Urz5mr-O95qYt6RGBDDX5HmjfRRKWPPDn1ZE,1797
46
- lamindb/core/storage/paths.py,sha256=IAtZTkYB0Q1vlVkx-7c-zBjQtlKVdwojemNgqVTOUC0,8255
47
- lamindb/core/subsettings/__init__.py,sha256=KFHPzIE7f7Bj4RgMjGQF4CjTdHVG_VNFBrCndo49ixo,198
48
- lamindb/core/subsettings/_creation_settings.py,sha256=54mfMH_osC753hpxcl7Dq1rwBD2LHnWveXtQpkLBITE,1194
49
- lamindb/core/subsettings/_transform_settings.py,sha256=4YbCuZtJo6zdytl6UQR4GvdDkTtT6SRBqVzofGzNOt8,583
50
- lamindb/integrations/__init__.py,sha256=aH2PmO2m4-vwIifMYTB0Fyyr_gZWtVnV71jT0tVWSw0,123
51
- lamindb/integrations/_vitessce.py,sha256=VC80NKuzZ0FdjFxaLvyD78kAUNwvwBnGblSPDqT_mGQ,2737
52
- lamindb/setup/__init__.py,sha256=OwZpZzPDv5lPPGXZP7-zK6UdO4FHvvuBh439yZvIp3A,410
53
- lamindb/setup/core/__init__.py,sha256=SevlVrc2AZWL3uALbE5sopxBnIZPWZ1IB0NBDudiAL8,167
54
- lamindb-0.74.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
55
- lamindb-0.74.3.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
56
- lamindb-0.74.3.dist-info/METADATA,sha256=v0qwjHuybQfWzw2juEC3T31Ot74DQtbjlUR2Rhzg4Yg,2669
57
- lamindb-0.74.3.dist-info/RECORD,,