lamindb 0.72.0__tar.gz → 0.73.0__tar.gz

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 (375) hide show
  1. {lamindb-0.72.0 → lamindb-0.73.0}/.gitignore +1 -9
  2. {lamindb-0.72.0 → lamindb-0.73.0}/PKG-INFO +6 -5
  3. {lamindb-0.72.0 → lamindb-0.73.0}/docs/annotate-for-developers.ipynb +1 -1
  4. {lamindb-0.72.0 → lamindb-0.73.0}/docs/changelog.md +49 -0
  5. {lamindb-0.72.0 → lamindb-0.73.0}/docs/introduction.ipynb +230 -40
  6. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/prepare-transfer-local-to-cloud.ipynb +9 -0
  7. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/transfer-local-to-cloud.ipynb +2 -1
  8. {lamindb-0.72.0 → lamindb-0.73.0}/docs/transfer.ipynb +10 -2
  9. {lamindb-0.72.0 → lamindb-0.73.0}/docs/tutorial.ipynb +8 -64
  10. {lamindb-0.72.0 → lamindb-0.73.0}/docs/tutorial2.ipynb +94 -447
  11. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/__init__.py +1 -1
  12. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_annotate.py +25 -18
  13. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_artifact.py +10 -10
  14. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_collection.py +21 -17
  15. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_feature_set.py +1 -1
  16. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_filter.py +6 -2
  17. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_finish.py +64 -33
  18. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_from_values.py +9 -3
  19. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_parents.py +11 -5
  20. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_query_manager.py +2 -2
  21. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_query_set.py +24 -3
  22. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_registry.py +77 -47
  23. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_save.py +14 -3
  24. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_ulabel.py +0 -14
  25. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/__init__.py +4 -2
  26. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_data.py +38 -112
  27. lamindb-0.73.0/lamindb/core/_feature_manager.py +700 -0
  28. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_label_manager.py +84 -83
  29. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_run_context.py +55 -31
  30. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_sync_git.py +4 -3
  31. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/datasets/_core.py +1 -1
  32. lamindb-0.73.0/lamindb/core/exceptions.py +49 -0
  33. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/schema.py +15 -12
  34. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/paths.py +14 -4
  35. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/versioning.py +48 -8
  36. {lamindb-0.72.0 → lamindb-0.73.0}/pyproject.toml +12 -4
  37. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/bionty/__init__.py +1 -1
  38. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/pyproject.toml +1 -1
  39. lamindb-0.73.0/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  40. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/lamin_cli/_save.py +1 -0
  41. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_get.py +1 -1
  42. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_save_notebooks.py +0 -2
  43. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_save_scripts.py +14 -0
  44. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/.github/workflows/build.yml +14 -14
  45. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/.pre-commit-config.yaml +1 -1
  46. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/changelog.md +7 -0
  47. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +29 -4
  48. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  49. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +1 -0
  50. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +9 -2
  51. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +9 -1
  52. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +24 -21
  53. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +1 -0
  54. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/upath.py +74 -36
  55. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/noxfile.py +1 -1
  56. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/storage/test_storage_stats.py +11 -3
  57. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
  58. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/pyproject.toml +1 -1
  59. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/CHANGELOG.md +3 -0
  60. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/__init__.py +1 -2
  61. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +2 -2
  62. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +2 -2
  63. lamindb-0.73.0/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +57 -0
  64. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/models.py +103 -53
  65. lamindb-0.73.0/tests/test_annotate.py +254 -0
  66. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_artifact.py +2 -2
  67. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_artifact_folders.py +3 -4
  68. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_feature_manager.py +139 -44
  69. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_run_context.py +5 -0
  70. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_search.py +3 -6
  71. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_versioning.py +16 -2
  72. lamindb-0.72.0/lamindb/core/_feature_manager.py +0 -507
  73. lamindb-0.72.0/lamindb/core/exceptions.py +0 -16
  74. lamindb-0.72.0/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  75. lamindb-0.72.0/tests/test_annotate.py +0 -104
  76. {lamindb-0.72.0 → lamindb-0.73.0}/.github/workflows/build.yml +0 -0
  77. {lamindb-0.72.0 → lamindb-0.73.0}/.github/workflows/latest-changes.jinja2 +0 -0
  78. {lamindb-0.72.0 → lamindb-0.73.0}/.github/workflows/latest-changes.yml +0 -0
  79. {lamindb-0.72.0 → lamindb-0.73.0}/.gitmodules +0 -0
  80. {lamindb-0.72.0 → lamindb-0.73.0}/.pre-commit-config.yaml +0 -0
  81. {lamindb-0.72.0 → lamindb-0.73.0}/LICENSE +0 -0
  82. {lamindb-0.72.0 → lamindb-0.73.0}/README.md +0 -0
  83. {lamindb-0.72.0 → lamindb-0.73.0}/docs/annotate.ipynb +0 -0
  84. {lamindb-0.72.0 → lamindb-0.73.0}/docs/bio-registries.ipynb +0 -0
  85. {lamindb-0.72.0 → lamindb-0.73.0}/docs/bionty-base.md +0 -0
  86. {lamindb-0.72.0 → lamindb-0.73.0}/docs/bionty.md +0 -0
  87. {lamindb-0.72.0 → lamindb-0.73.0}/docs/can-validate.ipynb +0 -0
  88. {lamindb-0.72.0 → lamindb-0.73.0}/docs/data.ipynb +0 -0
  89. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/acid.ipynb +0 -0
  90. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/delete.ipynb +0 -0
  91. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/idempotency.ipynb +0 -0
  92. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/import-schema.ipynb +0 -0
  93. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/keep-artifacts-local.ipynb +0 -0
  94. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/key.ipynb +0 -0
  95. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/reference-field.ipynb +0 -0
  96. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/setup.ipynb +0 -0
  97. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/test_notebooks.py +0 -0
  98. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/track-run-inputs.ipynb +0 -0
  99. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq/visibility.ipynb +0 -0
  100. {lamindb-0.72.0 → lamindb-0.73.0}/docs/faq.md +0 -0
  101. {lamindb-0.72.0 → lamindb-0.73.0}/docs/features-lamindb.md +0 -0
  102. {lamindb-0.72.0 → lamindb-0.73.0}/docs/features-laminhub.md +0 -0
  103. {lamindb-0.72.0 → lamindb-0.73.0}/docs/guide.md +0 -0
  104. {lamindb-0.72.0 → lamindb-0.73.0}/docs/index.md +0 -0
  105. {lamindb-0.72.0 → lamindb-0.73.0}/docs/installation.md +0 -0
  106. {lamindb-0.72.0 → lamindb-0.73.0}/docs/lamin-utils.md +0 -0
  107. {lamindb-0.72.0 → lamindb-0.73.0}/docs/lamindb.md +0 -0
  108. {lamindb-0.72.0 → lamindb-0.73.0}/docs/meta.ipynb +0 -0
  109. {lamindb-0.72.0 → lamindb-0.73.0}/docs/nbproject.md +0 -0
  110. {lamindb-0.72.0 → lamindb-0.73.0}/docs/query-search.md +0 -0
  111. {lamindb-0.72.0 → lamindb-0.73.0}/docs/readfcs.md +0 -0
  112. {lamindb-0.72.0 → lamindb-0.73.0}/docs/reference.md +0 -0
  113. {lamindb-0.72.0 → lamindb-0.73.0}/docs/schemas.ipynb +0 -0
  114. {lamindb-0.72.0 → lamindb-0.73.0}/docs/setup.ipynb +0 -0
  115. {lamindb-0.72.0 → lamindb-0.73.0}/docs/signup-login.md +0 -0
  116. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/add-replace-stage.ipynb +0 -0
  117. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/anndata-accessor.ipynb +0 -0
  118. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/test-files/iris.csv +0 -0
  119. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/test-files/iris.data +0 -0
  120. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/test-files/new_iris.csv +0 -0
  121. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/test_notebooks.py +0 -0
  122. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/upload.ipynb +0 -0
  123. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage/vitessce.ipynb +0 -0
  124. {lamindb-0.72.0 → lamindb-0.73.0}/docs/storage.md +0 -0
  125. {lamindb-0.72.0 → lamindb-0.73.0}/docs/test_notebooks.py +0 -0
  126. {lamindb-0.72.0 → lamindb-0.73.0}/docs/track.ipynb +0 -0
  127. {lamindb-0.72.0 → lamindb-0.73.0}/docs/wetlab.md +0 -0
  128. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_can_validate.py +0 -0
  129. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_feature.py +0 -0
  130. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_is_versioned.py +0 -0
  131. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_run.py +0 -0
  132. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_storage.py +0 -0
  133. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_transform.py +0 -0
  134. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_utils.py +0 -0
  135. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/_view.py +0 -0
  136. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_mapped_collection.py +0 -0
  137. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_settings.py +0 -0
  138. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_track_environment.py +0 -0
  139. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/_transform_settings.py +0 -0
  140. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/datasets/__init__.py +0 -0
  141. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/datasets/_fake.py +0 -0
  142. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/fields.py +0 -0
  143. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/__init__.py +0 -0
  144. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/_anndata_sizes.py +0 -0
  145. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/_backed_access.py +0 -0
  146. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/_valid_suffixes.py +0 -0
  147. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/_zarr.py +0 -0
  148. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/storage/objects.py +0 -0
  149. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/core/types.py +0 -0
  150. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/integrations/__init__.py +0 -0
  151. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/integrations/_vitessce.py +0 -0
  152. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/setup/__init__.py +0 -0
  153. {lamindb-0.72.0 → lamindb-0.73.0}/lamindb/setup/core/__init__.py +0 -0
  154. {lamindb-0.72.0 → lamindb-0.73.0}/noxfile.py +0 -0
  155. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/.github/workflows/build.yml +0 -0
  156. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
  157. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
  158. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/.gitignore +0 -0
  159. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/.pre-commit-config.yaml +0 -0
  160. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/LICENSE +0 -0
  161. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/README.md +0 -0
  162. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/bionty/core/__init__.py +0 -0
  163. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/docs/changelog.md +0 -0
  164. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/docs/index.md +0 -0
  165. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/docs/reference.md +0 -0
  166. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/lamin-project.yaml +0 -0
  167. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/noxfile.py +0 -0
  168. {lamindb-0.72.0 → lamindb-0.73.0}/sub/bionty/tests/test_notebooks.py +0 -0
  169. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/.gitignore +0 -0
  170. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  171. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/README.md +0 -0
  172. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  173. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  174. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/lamin_cli/_get.py +0 -0
  175. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  176. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/pyproject.toml +0 -0
  177. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/conftest.py +0 -0
  178. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  179. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  180. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  181. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  182. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  183. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  184. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_cli.py +0 -0
  185. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_migrate.py +0 -0
  186. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  187. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamin-cli/tests/test_save_files.py +0 -0
  188. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  189. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  190. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/.gitignore +0 -0
  191. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/LICENSE +0 -0
  192. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/README.md +0 -0
  193. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  194. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  195. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  196. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  197. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  198. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  199. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  200. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  201. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  202. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  203. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  204. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  205. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  206. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  207. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  208. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  209. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  210. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/index.md +0 -0
  211. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
  212. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/docs/reference.md +0 -0
  213. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  214. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  215. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  216. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  217. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  218. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  219. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  220. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  221. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  222. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  223. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  224. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  225. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  226. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  227. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  228. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  229. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  230. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  231. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  232. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  233. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
  234. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  235. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  236. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  237. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  238. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  239. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  240. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  241. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  242. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  243. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  244. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  245. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  246. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/pyproject.toml +0 -0
  247. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  248. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  249. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  250. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  251. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  252. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  253. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  254. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  255. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  256. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
  257. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  258. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  259. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  260. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  261. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  262. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  263. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  264. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  265. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  266. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  267. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/.gitignore +0 -0
  268. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
  269. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/LICENSE +0 -0
  270. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/README.md +0 -0
  271. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/docs/changelog.md +0 -0
  272. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/docs/index.md +0 -0
  273. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/docs/reference.md +0 -0
  274. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  275. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
  276. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
  277. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
  278. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
  279. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
  280. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  281. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
  282. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
  283. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
  284. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
  285. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
  286. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0028_squashed.py +0 -0
  287. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  288. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/lnschema_bionty/models.py +0 -0
  289. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/noxfile.py +0 -0
  290. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  291. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  292. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  293. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  294. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/.gitignore +0 -0
  295. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  296. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/LICENSE +0 -0
  297. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/README.md +0 -0
  298. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  299. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
  300. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  301. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  302. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  303. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  304. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  305. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  306. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  307. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  308. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
  309. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
  310. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
  311. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
  312. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
  313. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
  314. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  315. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  316. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/types.py +0 -0
  317. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
  318. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/noxfile.py +0 -0
  319. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/pyproject.toml +0 -0
  320. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
  321. {lamindb-0.72.0 → lamindb-0.73.0}/sub/lnschema-core/tests/test_types.py +0 -0
  322. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.github/workflows/build.yml +0 -0
  323. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.github/workflows/deploy-instance-apis.yml +0 -0
  324. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.github/workflows/latest-changes.jinja2 +0 -0
  325. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.github/workflows/latest-changes.yml +0 -0
  326. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.gitignore +0 -0
  327. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/.pre-commit-config.yaml +0 -0
  328. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/README.md +0 -0
  329. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/docs/changelog.md +0 -0
  330. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/docs/guide/01-get-started.ipynb +0 -0
  331. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/docs/guide/index.md +0 -0
  332. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/docs/index.md +0 -0
  333. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/docs/reference.md +0 -0
  334. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/noxfile.py +0 -0
  335. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/pyproject.toml +0 -0
  336. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/tests/test_integrity.py +0 -0
  337. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/tests/test_notebooks.py +0 -0
  338. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/__init__.py +0 -0
  339. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
  340. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
  341. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
  342. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  343. {lamindb-0.72.0 → lamindb-0.73.0}/sub/wetlab/wetlab/models.py +0 -0
  344. {lamindb-0.72.0 → lamindb-0.73.0}/tests/conftest.py +0 -0
  345. {lamindb-0.72.0 → lamindb-0.73.0}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
  346. {lamindb-0.72.0 → lamindb-0.73.0}/tests/notebooks/no-title.ipynb +0 -0
  347. {lamindb-0.72.0 → lamindb-0.73.0}/tests/notebooks/not-initialized.ipynb +0 -0
  348. {lamindb-0.72.0 → lamindb-0.73.0}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  349. {lamindb-0.72.0 → lamindb-0.73.0}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  350. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_cache.py +0 -0
  351. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_can_validate.py +0 -0
  352. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_collection.py +0 -0
  353. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_data.py +0 -0
  354. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_db.py +0 -0
  355. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_delete.py +0 -0
  356. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_feature.py +0 -0
  357. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_feature_set.py +0 -0
  358. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_from_values.py +0 -0
  359. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_label_manager.py +0 -0
  360. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_load.py +0 -0
  361. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_manager.py +0 -0
  362. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_notebooks.py +0 -0
  363. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_parents.py +0 -0
  364. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_queryset.py +0 -0
  365. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_registry.py +0 -0
  366. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_run.py +0 -0
  367. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_save.py +0 -0
  368. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_settings.py +0 -0
  369. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_storage.py +0 -0
  370. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_transfer.py +0 -0
  371. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_transform.py +0 -0
  372. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_uid.py +0 -0
  373. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_ulabel.py +0 -0
  374. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_view.py +0 -0
  375. {lamindb-0.72.0 → lamindb-0.73.0}/tests/test_visibility.py +0 -0
@@ -59,6 +59,7 @@ test-search2
59
59
  test-search3
60
60
  test-search4
61
61
  test-search5
62
+ default_storage
62
63
 
63
64
  # General
64
65
  .DS_Store
@@ -211,12 +212,3 @@ _build
211
212
 
212
213
  # VSCode
213
214
  .vscode
214
-
215
- # fred files
216
- docs/guide/insert-some-data-into-frederic-hub.ipynb
217
- docs/guide/insert-data-in-test-user-1-profile.ipynb
218
-
219
- # key guide
220
- docs/faq/complex_biological_project
221
- key-eval
222
- sample_001
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.72.0
3
+ Version: 0.73.0
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.67.1
13
- Requires-Dist: lamindb_setup==0.72.1
12
+ Requires-Dist: lnschema_core==0.68.0
13
+ Requires-Dist: lamindb_setup==0.73.0
14
14
  Requires-Dist: lamin_utils==0.13.2
15
- Requires-Dist: lamin_cli==0.13.2
15
+ Requires-Dist: lamin_cli==0.14.0
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -25,7 +25,7 @@ Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
26
26
  Requires-Dist: psutil
27
27
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
28
- Requires-Dist: bionty==0.43.0 ; extra == "bionty"
28
+ Requires-Dist: bionty==0.43.1 ; extra == "bionty"
29
29
  Requires-Dist: pandas<2 ; extra == "dev"
30
30
  Requires-Dist: pre-commit ; extra == "dev"
31
31
  Requires-Dist: nox ; extra == "dev"
@@ -33,6 +33,7 @@ Requires-Dist: laminci>=0.3 ; extra == "dev"
33
33
  Requires-Dist: pytest>=6.0 ; extra == "dev"
34
34
  Requires-Dist: coverage ; extra == "dev"
35
35
  Requires-Dist: pytest-cov ; extra == "dev"
36
+ Requires-Dist: mudata ; extra == "dev"
36
37
  Requires-Dist: nbproject_test>=0.5.1 ; extra == "dev"
37
38
  Requires-Dist: faker-biology ; extra == "dev"
38
39
  Requires-Dist: django-schema-graph ; extra == "erdiagram"
@@ -382,7 +382,7 @@
382
382
  "metadata": {},
383
383
  "outputs": [],
384
384
  "source": [
385
- "artifact.features.add_from_anndata(var_field=bt.Gene.symbol, organism=\"human\")"
385
+ "artifact.features._add_set_from_anndata(var_field=bt.Gene.symbol, organism=\"human\")"
386
386
  ]
387
387
  },
388
388
  {
@@ -12,8 +12,57 @@ LaminDB implements "migration-based versioning". When upgrading your LaminDB ins
12
12
  .. role:: small
13
13
  ```
14
14
 
15
+ ## 0.73
16
+
17
+ ### 0.73.0 {small}`2024-05-29`
18
+
19
+ Annotating & querying by features improved:
20
+ - ✨ Support non-categorical feature values [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
21
+ - ✨ Annotate dict-style with features & values [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
22
+ - ✨ Query by features via `.features.filter(key=value)` [PR](https://github.com/laminlabs/lamindb/pull/1680) [@falexwolf](https://github.com/falexwolf)
23
+ - 🏗️ Feature values decoupled from feature sets [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
24
+
25
+ Example:
26
+
27
+ ```python
28
+ # annotate dict-style (feature & category names get validated)
29
+ artifact.features.add_values({
30
+ "species": "setosa",
31
+ "scientist": ["Barabara McClintock", "Edgar Anderson"],
32
+ "instrument": "Leica IIIc Camera",
33
+ "temperature": 27.6,
34
+ "study": "Study 0: initial plant gathering",
35
+ "is_awesome": True
36
+ })
37
+
38
+ # get the dict back
39
+ artifact.features.get_values()
40
+
41
+ # query by feature
42
+ ln.Artifact.features.filter(is_awesome=True)
43
+ ```
44
+
45
+ Various improvements:
46
+ - 🚚 Additional non-breaking constraints in the core schema [PR](https://github.com/laminlabs/lamindb/pull/1681) [@falexwolf](https://github.com/falexwolf)
47
+ - 🚸 Make `.upload_from()`, `.download_to()`, and `.view_tree()` more user friendly [PR](https://github.com/laminlabs/lamindb/pull/1677) [@falexwolf](https://github.com/falexwolf) [PR](https://github.com/laminlabs/lamindb/pull/1678) [@Koncopd](https://github.com/Koncopd)
48
+ - 🚸 More intuitive version updating dialogue [PR](https://github.com/laminlabs/lamindb/pull/1676) [@falexwolf](https://github.com/falexwolf)
49
+ - 🐛 Actually add tracking run for entities beyond Artifact & Collection [PR](https://github.com/laminlabs/lamindb/pull/1673) [@falexwolf](https://github.com/falexwolf)
50
+ - 🚸 `ln.track()` returns `run` [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
51
+ - 🚸 Better duplicate detection and search [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
52
+ - 🚸 Prettier `.describe()` [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
53
+ - 🚸 More interactivity in `lamin save` [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
54
+ - 🚸 `create` flag in `.from_values()` [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
55
+ - 🚸 Better ordering of fields in dataframe & record representations [PR](https://github.com/laminlabs/lamindb/pull/1674) [@falexwolf](https://github.com/falexwolf)
56
+ - 📝 Improved API reference: docs now show relationship attributes [PR](https://github.com/laminlabs/lamindb/pull/1680) [@falexwolf](https://github.com/falexwolf)
57
+
58
+
15
59
  ## 0.72
16
60
 
61
+ ### 0.72.1 {small}`2024-05-19`
62
+
63
+ - ⬆️ Update bionty [PR](https://github.com/laminlabs/lamindb/pull/1671) [@sunnyosun](https://github.com/sunnyosun)
64
+ - 🐛 Deal with migration errors when keep-artifacts-local is true [PR](https://github.com/laminlabs/lamindb-setup/pull/767) [@falexwolf](https://github.com/falexwolf)
65
+
17
66
  ### 0.72.0 {small}`2024-05-19`
18
67
 
19
68
  - ✨ Extend managed access for AWS S3 to arbitrary paths [PR](https://github.com/laminlabs/lamindb/pull/1668) [@Koncopd](https://github.com/Koncopd) [@fredericenard](https://github.com/fredericenard)
@@ -83,9 +83,9 @@
83
83
  "source": [
84
84
  "### Track\n",
85
85
  "\n",
86
- "Run {meth}`~lamindb.track` to track the inputs and outputs of your code ({class}`~lamindb.Transform`).\n",
86
+ "Run {meth}`~lamindb.track` to track the inputs and outputs of your code.\n",
87
87
  "\n",
88
- "When you first run `ln.track()`, it creates a `stem_uid` & `version` to unambiguously identify your notebook or script."
88
+ "When you first run `ln.track()`, it raises an exception and creates a `stem_uid` & `version` to identify a notebook or script:"
89
89
  ]
90
90
  },
91
91
  {
@@ -105,7 +105,17 @@
105
105
  "ln.settings.transform.version = \"1\" # <-- auto-generated by running ln.track()\n",
106
106
  "\n",
107
107
  "# track the execution of your notebook or script\n",
108
- "ln.track()"
108
+ "run = ln.track()\n",
109
+ "\n",
110
+ "# get your currently running transform\n",
111
+ "run.transform"
112
+ ]
113
+ },
114
+ {
115
+ "cell_type": "markdown",
116
+ "metadata": {},
117
+ "source": [
118
+ "`ln.track()` added a record to the {class}`~lamindb.Transform` registry to query & search your notebook and a {class}`~lamindb.Run` registry to store the specific notebook run."
109
119
  ]
110
120
  },
111
121
  {
@@ -147,12 +157,46 @@
147
157
  "artifact.describe()\n",
148
158
  "\n",
149
159
  "# save data & metadata in one operation\n",
150
- "artifact.save()\n",
151
- "\n",
152
- "# view data lineage\n",
153
- "artifact.view_lineage()\n",
154
- "\n",
155
- "# load an artifact\n",
160
+ "artifact.save()"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "markdown",
165
+ "metadata": {},
166
+ "source": [
167
+ "View data lineage:"
168
+ ]
169
+ },
170
+ {
171
+ "cell_type": "code",
172
+ "execution_count": null,
173
+ "metadata": {
174
+ "tags": [
175
+ "hide-output"
176
+ ]
177
+ },
178
+ "outputs": [],
179
+ "source": [
180
+ "artifact.view_lineage()"
181
+ ]
182
+ },
183
+ {
184
+ "cell_type": "markdown",
185
+ "metadata": {},
186
+ "source": [
187
+ "Load an artifact:"
188
+ ]
189
+ },
190
+ {
191
+ "cell_type": "code",
192
+ "execution_count": null,
193
+ "metadata": {
194
+ "tags": [
195
+ "hide-output"
196
+ ]
197
+ },
198
+ "outputs": [],
199
+ "source": [
156
200
  "artifact.load()"
157
201
  ]
158
202
  },
@@ -187,17 +231,17 @@
187
231
  "\n",
188
232
  ":::\n",
189
233
  "\n",
190
- "```{dropdown} Does LaminDB give me a file system?\n",
234
+ "```{dropdown} How does LaminDB compare to a file system or object store?\n",
191
235
  "\n",
192
- "You can organize artifacts using the `key` parameter of {class}`~lamindb.Artifact` as you would in cloud storage.\n",
236
+ "Similar to organizing files in file systems & object stores with paths, you can organize artifacts using the `key` parameter of {class}`~lamindb.Artifact`.\n",
193
237
  "\n",
194
- "However, LaminDB encourages you to **not** rely on semantic keys.\n",
238
+ "However, LaminDB encourages you to **not** rely on semantic keys but instead organize your data based on metadata.\n",
195
239
  "\n",
196
240
  "Rather than memorizing names of folders and files, you find data via the entities you care about: people, code, experiments, genes, proteins, cell types, etc.\n",
197
241
  "\n",
198
242
  "LaminDB embeds each artifact into rich relational metadata and indexes them in storage with a universal ID (`uid`).\n",
199
243
  "\n",
200
- "This scales much better than semantic keys, which lead to deep hierarchical information structures that hard to navigate for humans & machines.\n",
244
+ "This scales much better than semantic keys, which lead to deep hierarchical information structures that can become hard to navigate.\n",
201
245
  "\n",
202
246
  "```\n",
203
247
  "\n",
@@ -244,7 +288,7 @@
244
288
  "source": [
245
289
  "### Labels\n",
246
290
  "\n",
247
- "Label an artifact with a {class}`~lamindb.ULabel`."
291
+ "Label an artifact with a label managed by the {class}`~lamindb.ULabel` registry."
248
292
  ]
249
293
  },
250
294
  {
@@ -261,10 +305,50 @@
261
305
  "candidate_marker_study = ln.ULabel(name=\"Candidate marker study\").save()\n",
262
306
  "\n",
263
307
  "# label an artifact\n",
264
- "artifact.labels.add(candidate_marker_study)\n",
265
- "artifact.describe()\n",
308
+ "artifact.ulabels.add(candidate_marker_study)\n",
309
+ "artifact.describe()"
310
+ ]
311
+ },
312
+ {
313
+ "cell_type": "markdown",
314
+ "metadata": {},
315
+ "source": [
316
+ "### Registries"
317
+ ]
318
+ },
319
+ {
320
+ "cell_type": "markdown",
321
+ "metadata": {},
322
+ "source": [
323
+ "LaminDB's central classes are registries that manage metadata.\n",
266
324
  "\n",
267
- "# the ULabel registry\n",
325
+ "The easiest way to see what's in a registry is to call `.df()`."
326
+ ]
327
+ },
328
+ {
329
+ "cell_type": "code",
330
+ "execution_count": null,
331
+ "metadata": {},
332
+ "outputs": [],
333
+ "source": [
334
+ "ln.Artifact.df()"
335
+ ]
336
+ },
337
+ {
338
+ "cell_type": "code",
339
+ "execution_count": null,
340
+ "metadata": {},
341
+ "outputs": [],
342
+ "source": [
343
+ "ln.Transform.df()"
344
+ ]
345
+ },
346
+ {
347
+ "cell_type": "code",
348
+ "execution_count": null,
349
+ "metadata": {},
350
+ "outputs": [],
351
+ "source": [
268
352
  "ln.ULabel.df() "
269
353
  ]
270
354
  },
@@ -274,7 +358,7 @@
274
358
  "source": [
275
359
  "### Queries\n",
276
360
  "\n",
277
- "Write arbitrary relational queries (under-the-hood, LaminDB is SQL & Django)."
361
+ "You can write arbitrary relational queries using Django's query syntax."
278
362
  ]
279
363
  },
280
364
  {
@@ -283,17 +367,20 @@
283
367
  "metadata": {},
284
368
  "outputs": [],
285
369
  "source": [
286
- "# get an entity by uid\n",
370
+ "# get an entity by uid (here, the current notebook)\n",
287
371
  "transform = ln.Transform.get(\"FPnfDtJz8qbE\")\n",
288
372
  "\n",
289
373
  "# filter by description\n",
290
374
  "ln.Artifact.filter(description=\"my RNA-seq\").df()\n",
291
375
  "\n",
292
- "# query all artifacts ingested from a notebook named \"Introduction\"\n",
293
- "artifacts = ln.Artifact.filter(transform__name=\"Introduction\").all()\n",
376
+ "# query all artifacts ingested from the current notebook\n",
377
+ "artifacts = ln.Artifact.filter(transform=transform).all()\n",
294
378
  "\n",
295
379
  "# query all artifacts ingested from a notebook with \"intro\" in the name and labeled \"Candidate marker study\"\n",
296
- "artifacts = ln.Artifact.filter(transform__name__icontains=\"intro\", ulabels=candidate_marker_study).all()"
380
+ "artifacts = ln.Artifact.filter(\n",
381
+ " transform__name__icontains=\"intro\",\n",
382
+ " ulabels=candidate_marker_study\n",
383
+ ").all()"
297
384
  ]
298
385
  },
299
386
  {
@@ -313,7 +400,7 @@
313
400
  "ln.Transform.search(\"intro\").df()\n",
314
401
  "\n",
315
402
  "# look up records with auto-complete\n",
316
- "labels = ln.ULabel.lookup()"
403
+ "ulabels = ln.ULabel.lookup()"
317
404
  ]
318
405
  },
319
406
  {
@@ -331,11 +418,102 @@
331
418
  "cell_type": "markdown",
332
419
  "metadata": {},
333
420
  "source": [
334
- "## Validate & annotate\n",
421
+ "### Features"
422
+ ]
423
+ },
424
+ {
425
+ "cell_type": "markdown",
426
+ "metadata": {},
427
+ "source": [
428
+ "You can annotate artifacts with features & values."
429
+ ]
430
+ },
431
+ {
432
+ "cell_type": "code",
433
+ "execution_count": null,
434
+ "metadata": {
435
+ "tags": [
436
+ "hide-output"
437
+ ]
438
+ },
439
+ "outputs": [],
440
+ "source": [
441
+ "import pytest\n",
442
+ "\n",
443
+ "with pytest.raises(ln.core.exceptions.ValidationError) as e:\n",
444
+ " artifact.features.add_values({\"temperature\": 21.6})\n",
445
+ "\n",
446
+ "print(e.exconly())"
447
+ ]
448
+ },
449
+ {
450
+ "cell_type": "markdown",
451
+ "metadata": {},
452
+ "source": [
453
+ "LaminDB validates all user input against its registries. As the `temperature` feature didn't exist, we got an error.\n",
454
+ "\n",
455
+ "Let's follow the hint in the error message:"
456
+ ]
457
+ },
458
+ {
459
+ "cell_type": "code",
460
+ "execution_count": null,
461
+ "metadata": {
462
+ "tags": [
463
+ "hide-output"
464
+ ]
465
+ },
466
+ "outputs": [],
467
+ "source": [
468
+ "# register the \"temperature\" feature\n",
469
+ "ln.Feature(name='temperature', dtype='float').save()\n",
470
+ "\n",
471
+ "# now we can annotate with the feature & the value\n",
472
+ "artifact.features.add_values({\"temperature\": 21.6})\n",
473
+ "artifact.describe()"
474
+ ]
475
+ },
476
+ {
477
+ "cell_type": "markdown",
478
+ "metadata": {},
479
+ "source": [
480
+ "We can also annotate with categorical features:"
481
+ ]
482
+ },
483
+ {
484
+ "cell_type": "code",
485
+ "execution_count": null,
486
+ "metadata": {
487
+ "tags": [
488
+ "hide-output"
489
+ ]
490
+ },
491
+ "outputs": [],
492
+ "source": [
493
+ "# register a categorical feature\n",
494
+ "ln.Feature(name='study', dtype='cat').save()\n",
495
+ "\n",
496
+ "# add a categorical value\n",
497
+ "artifact.features.add_values({\"study\": \"Candidate marker study\"})\n",
335
498
  "\n",
336
- "In LaminDB, validation & annotation of categoricals are closely related by mapping categories on registry content.\n",
499
+ "# describe the artifact and add type information\n",
500
+ "artifact.describe(print_types=True)"
501
+ ]
502
+ },
503
+ {
504
+ "cell_type": "markdown",
505
+ "metadata": {},
506
+ "source": [
507
+ "Features provide a way to bucket labels beyond their type/registry."
508
+ ]
509
+ },
510
+ {
511
+ "cell_type": "markdown",
512
+ "metadata": {},
513
+ "source": [
514
+ "## Validate & annotate\n",
337
515
  "\n",
338
- "Let's validate a `DataFrame` by passing validation criteria while constructing an {class}`~lamindb.Annotate` flow object."
516
+ "LaminDB validates & annotates categorical metadata by mapping categories on registries."
339
517
  ]
340
518
  },
341
519
  {
@@ -345,6 +523,13 @@
345
523
  "### Validate"
346
524
  ]
347
525
  },
526
+ {
527
+ "cell_type": "markdown",
528
+ "metadata": {},
529
+ "source": [
530
+ "Let's use the high-level {class}`~lamindb.Annotate`class to validate a `DataFrame`:"
531
+ ]
532
+ },
348
533
  {
349
534
  "cell_type": "code",
350
535
  "execution_count": null,
@@ -360,10 +545,10 @@
360
545
  " df,\n",
361
546
  " # define validation criteria\n",
362
547
  " columns=ln.Feature.name, # map column names\n",
363
- " categoricals={df.perturbation.name: ln.ULabel.name}, # map categories\n",
548
+ " categoricals={\"perturbation\": ln.ULabel.name}, # map categories\n",
364
549
  ")\n",
365
550
  "\n",
366
- "# the dataframe doesn't validate because registries don't contain the identifiers\n",
551
+ "# the dataframe doesn't validate because registries don't contain the categories\n",
367
552
  "annotate.validate()"
368
553
  ]
369
554
  },
@@ -384,13 +569,23 @@
384
569
  },
385
570
  "outputs": [],
386
571
  "source": [
387
- "# add non-validated identifiers to their mapped registries\n",
572
+ "# add non-validated features based on the DataFrame columns\n",
388
573
  "annotate.add_new_from_columns()\n",
389
- "annotate.add_new_from(df.perturbation.name)\n",
574
+ "# see the updated content of the features registry\n",
575
+ "ln.Feature.df()\n"
576
+ ]
577
+ },
578
+ {
579
+ "cell_type": "code",
580
+ "execution_count": null,
581
+ "metadata": {},
582
+ "outputs": [],
583
+ "source": [
584
+ "# add non-validated labels based on the perturbations\n",
585
+ "annotate.add_new_from(\"perturbation\")\n",
390
586
  "\n",
391
- "# the registered labels & features that will from now on be used for validation\n",
392
- "ln.ULabel.df()\n",
393
- "ln.Feature.df()"
587
+ "# see the updated content of the ULabel registry\n",
588
+ "ln.ULabel.df()"
394
589
  ]
395
590
  },
396
591
  {
@@ -668,7 +863,7 @@
668
863
  "outputs": [],
669
864
  "source": [
670
865
  "collection = ln.Collection([artifact, artifact2], name=\"my RNA-seq collection\", version=\"1\")\n",
671
- "collection.save(transfer_labels=True) # transfer labels from artifacts to collection\n",
866
+ "collection.save()\n",
672
867
  "collection.describe()\n",
673
868
  "collection.view_lineage()"
674
869
  ]
@@ -867,7 +1062,7 @@
867
1062
  "\n",
868
1063
  "<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/XoTQFCmmj2uU4d2xyj9t.png\" width=\"350px\" style=\"background: transparent\" align=\"right\">\n",
869
1064
  "\n",
870
- "LaminDB provides a SQL schema for common entities: {class}`~lamindb.Artifact`, {class}`~lamindb.Collection`, {class}`~lamindb.Transform`, {class}`~lamindb.Feature`, {class}`~lamindb.ULabel` etc. - see the [API reference](reference) or the [source code](https://github.com/laminlabs/lnschema-core/blob/main/lnschema_core/models.py).\n",
1065
+ "LaminDB provides a SQL schema for common entities: {class}`~lamindb.Artifact`, {class}`~lamindb.Collection`, {class}`~lamindb.Transform`, {class}`~lamindb.Feature`, {class}`~lamindb.ULabel` etc. - see the [API reference](/reference) or the [source code](https://github.com/laminlabs/lnschema-core/blob/main/lnschema_core/models.py).\n",
871
1066
  "\n",
872
1067
  "The core schema is extendable through plugins (see blue vs. red entities in **graphic**), e.g., with basic biological ({class}`~bionty.Gene`, {class}`~bionty.Protein`, {class}`~bionty.CellLine`, etc.) & operational entities (`Biosample`, `Techsample`, `Treatment`, etc.).\n",
873
1068
  "\n",
@@ -902,11 +1097,6 @@
902
1097
  "\n",
903
1098
  "LaminDB was influenced by many other projects, see {doc}`docs:influences`."
904
1099
  ]
905
- },
906
- {
907
- "cell_type": "markdown",
908
- "metadata": {},
909
- "source": []
910
1100
  }
911
1101
  ],
912
1102
  "metadata": {
@@ -65,6 +65,15 @@
65
65
  "\n",
66
66
  "artifact.describe()"
67
67
  ]
68
+ },
69
+ {
70
+ "cell_type": "code",
71
+ "execution_count": null,
72
+ "metadata": {},
73
+ "outputs": [],
74
+ "source": [
75
+ "assert artifact.features[\"var\"].count() == 2"
76
+ ]
68
77
  }
69
78
  ],
70
79
  "metadata": {
@@ -35,7 +35,8 @@
35
35
  " experiments = artifact.experiments.all()\n",
36
36
  " try:\n",
37
37
  " artifact.delete(permanent=True)\n",
38
- " except Exception:\n",
38
+ " except Exception as e:\n",
39
+ " print(e)\n",
39
40
  " pass\n",
40
41
  " features_sets.delete()\n",
41
42
  " experiments.delete()\n",
@@ -17,7 +17,11 @@
17
17
  {
18
18
  "cell_type": "code",
19
19
  "execution_count": null,
20
- "metadata": {},
20
+ "metadata": {
21
+ "tags": [
22
+ "hide-output"
23
+ ]
24
+ },
21
25
  "outputs": [],
22
26
  "source": [
23
27
  "!lamin init --storage ./test-transfer --schema bionty"
@@ -26,7 +30,11 @@
26
30
  {
27
31
  "cell_type": "code",
28
32
  "execution_count": null,
29
- "metadata": {},
33
+ "metadata": {
34
+ "tags": [
35
+ "hide-output"
36
+ ]
37
+ },
30
38
  "outputs": [],
31
39
  "source": [
32
40
  "import lamindb as ln\n",