lamindb 0.76.7__tar.gz → 0.76.9__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 (472) hide show
  1. {lamindb-0.76.7 → lamindb-0.76.9}/.gitmodules +3 -0
  2. {lamindb-0.76.7 → lamindb-0.76.9}/PKG-INFO +4 -4
  3. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/setup.ipynb +2 -6
  4. {lamindb-0.76.7 → lamindb-0.76.9}/docs/setup.ipynb +46 -20
  5. {lamindb-0.76.7 → lamindb-0.76.9}/docs/track.ipynb +29 -0
  6. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/__init__.py +1 -1
  7. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_artifact.py +50 -23
  8. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_collection.py +2 -0
  9. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_save.py +22 -9
  10. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_context.py +3 -3
  11. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_data.py +1 -1
  12. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_mapped_collection.py +65 -31
  13. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/_core.py +11 -1
  14. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/exceptions.py +15 -2
  15. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_backed_access.py +1 -1
  16. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/paths.py +45 -14
  17. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/versioning.py +1 -1
  18. {lamindb-0.76.7 → lamindb-0.76.9}/pyproject.toml +3 -3
  19. lamindb-0.76.9/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  20. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/__main__.py +6 -9
  21. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_save.py +18 -10
  22. lamindb-0.76.9/sub/lamin-cli/tests/test_save_files.py +60 -0
  23. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_save_notebooks.py +1 -1
  24. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +9 -30
  25. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +1 -1
  26. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +75 -0
  27. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +1 -1
  28. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +1 -1
  29. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  30. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_check_setup.py +1 -1
  31. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +71 -84
  32. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_delete.py +9 -5
  33. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_init_instance.py +65 -22
  34. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +2 -2
  35. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +42 -21
  36. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +25 -12
  37. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +38 -19
  38. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +7 -2
  39. lamindb-0.76.9/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +33 -0
  40. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +8 -3
  41. lamindb-0.76.9/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +17 -0
  42. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_access.py +1 -1
  43. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  44. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/models.py +9 -5
  45. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +2 -1
  46. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/__init__.py +1 -1
  47. lamindb-0.76.9/sub/wetlab/wetlab/migrations/0024_compound_chembl_id.py +19 -0
  48. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/models.py +43 -52
  49. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/conftest.py +8 -2
  50. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_artifact.py +25 -15
  51. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_artifact_folders.py +3 -2
  52. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_cache.py +86 -11
  53. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_collection.py +21 -0
  54. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_context.py +1 -1
  55. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_transform.py +14 -2
  56. lamindb-0.76.7/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  57. lamindb-0.76.7/sub/lamin-cli/tests/test_save_files.py +0 -33
  58. {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  59. {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  60. {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  61. {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
  62. {lamindb-0.76.7 → lamindb-0.76.9}/.github/workflows/build.yml +0 -0
  63. {lamindb-0.76.7 → lamindb-0.76.9}/.github/workflows/doc-changes.yml +0 -0
  64. {lamindb-0.76.7 → lamindb-0.76.9}/.gitignore +0 -0
  65. {lamindb-0.76.7 → lamindb-0.76.9}/.pre-commit-config.yaml +0 -0
  66. {lamindb-0.76.7 → lamindb-0.76.9}/CONTRIBUTING.md +0 -0
  67. {lamindb-0.76.7 → lamindb-0.76.9}/LICENSE +0 -0
  68. {lamindb-0.76.7 → lamindb-0.76.9}/README.md +0 -0
  69. {lamindb-0.76.7 → lamindb-0.76.9}/docs/api.md +0 -0
  70. {lamindb-0.76.7 → lamindb-0.76.9}/docs/arrays.ipynb +0 -0
  71. {lamindb-0.76.7 → lamindb-0.76.9}/docs/bio-registries.ipynb +0 -0
  72. {lamindb-0.76.7 → lamindb-0.76.9}/docs/bionty.md +0 -0
  73. {lamindb-0.76.7 → lamindb-0.76.9}/docs/changelog.md +0 -0
  74. {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate-any.ipynb +0 -0
  75. {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate-df.ipynb +0 -0
  76. {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate.md +0 -0
  77. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/acid.ipynb +0 -0
  78. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/delete.ipynb +0 -0
  79. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/idempotency.ipynb +0 -0
  80. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/import-schema.ipynb +0 -0
  81. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/keep-artifacts-local.ipynb +0 -0
  82. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/key.ipynb +0 -0
  83. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/reference-field.ipynb +0 -0
  84. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/test_notebooks.py +0 -0
  85. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/track-run-inputs.ipynb +0 -0
  86. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/visibility.ipynb +0 -0
  87. {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq.md +0 -0
  88. {lamindb-0.76.7 → lamindb-0.76.9}/docs/guide.md +0 -0
  89. {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/features-lamindb.md +0 -0
  90. {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/features-laminhub.md +0 -0
  91. {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/installation.md +0 -0
  92. {lamindb-0.76.7 → lamindb-0.76.9}/docs/index.md +0 -0
  93. {lamindb-0.76.7 → lamindb-0.76.9}/docs/introduction.ipynb +0 -0
  94. {lamindb-0.76.7 → lamindb-0.76.9}/docs/lamindb.md +0 -0
  95. {lamindb-0.76.7 → lamindb-0.76.9}/docs/laminr.md +0 -0
  96. {lamindb-0.76.7 → lamindb-0.76.9}/docs/query-search.md +0 -0
  97. {lamindb-0.76.7 → lamindb-0.76.9}/docs/registries.ipynb +0 -0
  98. {lamindb-0.76.7 → lamindb-0.76.9}/docs/rest.md +0 -0
  99. {lamindb-0.76.7 → lamindb-0.76.9}/docs/schemas.ipynb +0 -0
  100. {lamindb-0.76.7 → lamindb-0.76.9}/docs/signup-login.md +0 -0
  101. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/add-replace-cache.ipynb +0 -0
  102. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/anndata-accessor.ipynb +0 -0
  103. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  104. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/iris.csv +0 -0
  105. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/iris.data +0 -0
  106. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/new_iris.csv +0 -0
  107. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test_notebooks.py +0 -0
  108. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  109. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/upload.ipynb +0 -0
  110. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/vitessce.ipynb +0 -0
  111. {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage.md +0 -0
  112. {lamindb-0.76.7 → lamindb-0.76.9}/docs/test_notebooks.py +0 -0
  113. {lamindb-0.76.7 → lamindb-0.76.9}/docs/transfer.ipynb +0 -0
  114. {lamindb-0.76.7 → lamindb-0.76.9}/docs/tutorial.ipynb +0 -0
  115. {lamindb-0.76.7 → lamindb-0.76.9}/docs/tutorial2.ipynb +0 -0
  116. {lamindb-0.76.7 → lamindb-0.76.9}/docs/wetlab.md +0 -0
  117. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_can_validate.py +0 -0
  118. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_curate.py +0 -0
  119. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_feature.py +0 -0
  120. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_feature_set.py +0 -0
  121. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_filter.py +0 -0
  122. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_finish.py +0 -0
  123. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_from_values.py +0 -0
  124. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_is_versioned.py +0 -0
  125. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_parents.py +0 -0
  126. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_query_manager.py +0 -0
  127. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_query_set.py +0 -0
  128. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_record.py +0 -0
  129. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_run.py +0 -0
  130. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_storage.py +0 -0
  131. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_transform.py +0 -0
  132. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_ulabel.py +0 -0
  133. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_utils.py +0 -0
  134. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_view.py +0 -0
  135. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/__init__.py +0 -0
  136. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_feature_manager.py +0 -0
  137. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_label_manager.py +0 -0
  138. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_settings.py +0 -0
  139. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_sync_git.py +0 -0
  140. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_track_environment.py +0 -0
  141. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/__init__.py +0 -0
  142. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/_fake.py +0 -0
  143. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/fields.py +0 -0
  144. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/loaders.py +0 -0
  145. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/schema.py +0 -0
  146. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/__init__.py +0 -0
  147. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_anndata_accessor.py +0 -0
  148. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_anndata_sizes.py +0 -0
  149. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_tiledbsoma.py +0 -0
  150. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_valid_suffixes.py +0 -0
  151. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_zarr.py +0 -0
  152. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/objects.py +0 -0
  153. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/__init__.py +0 -0
  154. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/_creation_settings.py +0 -0
  155. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/_transform_settings.py +0 -0
  156. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/types.py +0 -0
  157. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/integrations/__init__.py +0 -0
  158. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/integrations/_vitessce.py +0 -0
  159. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/setup/__init__.py +0 -0
  160. {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/setup/core/__init__.py +0 -0
  161. {lamindb-0.76.7 → lamindb-0.76.9}/noxfile.py +0 -0
  162. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/build.yml +0 -0
  163. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
  164. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
  165. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.gitignore +0 -0
  166. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.pre-commit-config.yaml +0 -0
  167. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/LICENSE +0 -0
  168. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/README.md +0 -0
  169. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/__init__.py +0 -0
  170. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/_bionty.py +0 -0
  171. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/__init__.py +0 -0
  172. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_display_sources.py +0 -0
  173. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_ontology.py +0 -0
  174. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_public_ontology.py +0 -0
  175. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_settings.py +0 -0
  176. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_sync_sources.py +0 -0
  177. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/__init__.py +0 -0
  178. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
  179. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_io.py +0 -0
  180. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_md5.py +0 -0
  181. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/__init__.py +0 -0
  182. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
  183. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
  184. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
  185. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
  186. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
  187. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
  188. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_disease.py +0 -0
  189. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_drug.py +0 -0
  190. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
  191. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
  192. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_gene.py +0 -0
  193. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_organism.py +0 -0
  194. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
  195. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
  196. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_protein.py +0 -0
  197. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
  198. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
  199. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
  200. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
  201. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
  202. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
  203. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
  204. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
  205. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/sources.yaml +0 -0
  206. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/__init__.py +0 -0
  207. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_add_ontology.py +0 -0
  208. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_bionty.py +0 -0
  209. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_settings.py +0 -0
  210. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/ids.py +0 -0
  211. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  212. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
  213. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
  214. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
  215. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
  216. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
  217. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
  218. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
  219. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
  220. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
  221. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
  222. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
  223. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
  224. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
  225. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
  226. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  227. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
  228. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  229. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/__init__.py +0 -0
  230. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/models.py +0 -0
  231. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/concepts.md +0 -0
  232. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/config.md +0 -0
  233. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/extend.md +0 -0
  234. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/test_notebooks.py +0 -0
  235. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide.md +0 -0
  236. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/index.md +0 -0
  237. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/reference.md +0 -0
  238. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/lamin-project.yaml +0 -0
  239. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/noxfile.py +0 -0
  240. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/pyproject.toml +0 -0
  241. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
  242. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/dev/test_io.py +0 -0
  243. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
  244. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_biosample.py +0 -0
  245. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_cellline.py +0 -0
  246. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
  247. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_celltype.py +0 -0
  248. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
  249. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_disease.py +0 -0
  250. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_drug.py +0 -0
  251. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
  252. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
  253. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_gene.py +0 -0
  254. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_organism.py +0 -0
  255. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_pathway.py +0 -0
  256. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_phenotype.py +0 -0
  257. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_protein.py +0 -0
  258. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_tissue.py +0 -0
  259. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_bionty.py +0 -0
  260. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_lamindb.py +0 -0
  261. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_md5.py +0 -0
  262. {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_ontology.py +0 -0
  263. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
  264. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.gitignore +0 -0
  265. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  266. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/LICENSE +0 -0
  267. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/README.md +0 -0
  268. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  269. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_get.py +0 -0
  270. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  271. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/pyproject.toml +0 -0
  272. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/conftest.py +0 -0
  273. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  274. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  275. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  276. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  277. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  278. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  279. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_cli.py +0 -0
  280. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_get.py +0 -0
  281. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_migrate.py +0 -0
  282. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  283. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  284. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  285. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
  286. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.gitignore +0 -0
  287. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  288. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/LICENSE +0 -0
  289. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/README.md +0 -0
  290. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/changelog.md +0 -0
  291. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  292. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  293. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  294. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  295. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  296. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
  297. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  298. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  299. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  300. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  301. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  302. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  303. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  304. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  305. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/index.md +0 -0
  306. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/notebooks.md +0 -0
  307. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/reference.md +0 -0
  308. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  309. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  310. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  311. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  312. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
  313. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  314. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  315. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  316. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  317. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  318. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  319. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  320. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  321. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  322. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
  323. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  324. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  325. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  326. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  327. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  328. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  329. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
  330. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  331. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  332. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  333. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  334. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  335. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  336. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  337. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  338. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  339. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  340. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
  341. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/noxfile.py +0 -0
  342. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/pyproject.toml +0 -0
  343. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
  344. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  345. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
  346. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  347. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  348. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  349. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  350. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  351. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  352. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
  353. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  354. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  355. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
  356. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  357. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  358. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
  359. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  360. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  361. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  362. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  363. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  364. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
  365. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.gitignore +0 -0
  366. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  367. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/CHANGELOG.md +0 -0
  368. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/LICENSE +0 -0
  369. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/README.md +0 -0
  370. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  371. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
  372. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
  373. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  374. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  375. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  376. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  377. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  378. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  379. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  380. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  381. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
  382. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
  383. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
  384. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
  385. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
  386. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
  387. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
  388. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
  389. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
  390. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
  391. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0056_rename_ulabel_ref_is_name_artifactulabel_label_ref_is_name_and_more.py +0 -0
  392. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
  393. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
  394. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
  395. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
  396. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
  397. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
  398. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
  399. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0064_alter_artifact_version_alter_collection_version_and_more.py +0 -0
  400. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0065_remove_collection_feature_sets_and_more.py +0 -0
  401. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0066_alter_artifact__feature_values_and_more.py +0 -0
  402. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  403. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  404. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/types.py +0 -0
  405. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/users.py +0 -0
  406. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/noxfile.py +0 -0
  407. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/pyproject.toml +0 -0
  408. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/conftest.py +0 -0
  409. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_integrity.py +0 -0
  410. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_models.py +0 -0
  411. {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_types.py +0 -0
  412. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.github/workflows/build.yml +0 -0
  413. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
  414. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.gitignore +0 -0
  415. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.pre-commit-config.yaml +0 -0
  416. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/README.md +0 -0
  417. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/changelog.md +0 -0
  418. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide/get-started.ipynb +0 -0
  419. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide.md +0 -0
  420. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/index.md +0 -0
  421. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/reference.md +0 -0
  422. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/noxfile.py +0 -0
  423. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/pyproject.toml +0 -0
  424. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/tests/test_integrity.py +0 -0
  425. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/tests/test_notebooks.py +0 -0
  426. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
  427. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
  428. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
  429. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
  430. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +0 -0
  431. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
  432. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0022_remove_experiment_experiment_type_and_more.py +0 -0
  433. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0023_compoundtreatment_duration_and_more.py +0 -0
  434. {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  435. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
  436. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/no-title.ipynb +0 -0
  437. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/not-initialized.ipynb +0 -0
  438. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  439. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  440. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
  441. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
  442. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
  443. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/script-to-test-filename-change.py +0 -0
  444. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/script-to-test-versioning.py +0 -0
  445. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_can_validate.py +0 -0
  446. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_curate.py +0 -0
  447. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_data.py +0 -0
  448. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_db.py +0 -0
  449. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_delete.py +0 -0
  450. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature.py +0 -0
  451. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature_manager.py +0 -0
  452. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature_set.py +0 -0
  453. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_from_values.py +0 -0
  454. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_label_manager.py +0 -0
  455. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_load.py +0 -0
  456. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_manager.py +0 -0
  457. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_notebooks.py +0 -0
  458. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_parents.py +0 -0
  459. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_queryset.py +0 -0
  460. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_record.py +0 -0
  461. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_run.py +0 -0
  462. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_save.py +0 -0
  463. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_search.py +0 -0
  464. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_settings.py +0 -0
  465. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_uid.py +0 -0
  466. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_ulabel.py +0 -0
  467. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_versioning.py +0 -0
  468. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_view.py +0 -0
  469. {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_visibility.py +0 -0
  470. {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/conftest.py +0 -0
  471. {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/test_storage.py +0 -0
  472. {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/test_transfer.py +0 -0
@@ -13,3 +13,6 @@
13
13
  [submodule "sub/wetlab"]
14
14
  path = sub/wetlab
15
15
  url = https://github.com/laminlabs/wetlab
16
+ [submodule "sub/clinicore"]
17
+ path = sub/clinicore
18
+ url = https://github.com/laminlabs/clinicore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.76.7
3
+ Version: 0.76.9
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.74.3
13
- Requires-Dist: lamindb_setup==0.77.2
12
+ Requires-Dist: lnschema_core==0.74.5
13
+ Requires-Dist: lamindb_setup==0.77.5
14
14
  Requires-Dist: lamin_utils==0.13.4
15
- Requires-Dist: lamin_cli==0.17.3
15
+ Requires-Dist: lamin_cli==0.17.6
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "cells": [
3
3
  {
4
- "attachments": {},
5
4
  "cell_type": "markdown",
6
5
  "id": "261ca5e4-f46f-4361-9c3e-f944bbe14484",
7
6
  "metadata": {},
@@ -20,7 +19,7 @@
20
19
  },
21
20
  "outputs": [],
22
21
  "source": [
23
- "!lamin close"
22
+ "!lamin load --unload"
24
23
  ]
25
24
  },
26
25
  {
@@ -36,7 +35,6 @@
36
35
  ]
37
36
  },
38
37
  {
39
- "attachments": {},
40
38
  "cell_type": "markdown",
41
39
  "id": "bbdb5cc9",
42
40
  "metadata": {},
@@ -70,7 +68,6 @@
70
68
  ]
71
69
  },
72
70
  {
73
- "attachments": {},
74
71
  "cell_type": "markdown",
75
72
  "id": "2d68e16d",
76
73
  "metadata": {},
@@ -90,7 +87,6 @@
90
87
  ]
91
88
  },
92
89
  {
93
- "attachments": {},
94
90
  "cell_type": "markdown",
95
91
  "id": "c2fb4f9b",
96
92
  "metadata": {},
@@ -136,7 +132,7 @@
136
132
  "name": "python",
137
133
  "nbconvert_exporter": "python",
138
134
  "pygments_lexer": "ipython3",
139
- "version": "3.10.13"
135
+ "version": "3.9.17"
140
136
  },
141
137
  "vscode": {
142
138
  "interpreter": {
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "cells": [
3
3
  {
4
- "attachments": {},
5
4
  "cell_type": "markdown",
6
5
  "metadata": {},
7
6
  "source": [
@@ -36,7 +35,6 @@
36
35
  ]
37
36
  },
38
37
  {
39
- "attachments": {},
40
38
  "cell_type": "markdown",
41
39
  "metadata": {},
42
40
  "source": [
@@ -44,7 +42,6 @@
44
42
  ]
45
43
  },
46
44
  {
47
- "attachments": {},
48
45
  "cell_type": "markdown",
49
46
  "metadata": {},
50
47
  "source": [
@@ -57,7 +54,6 @@
57
54
  ]
58
55
  },
59
56
  {
60
- "attachments": {},
61
57
  "cell_type": "markdown",
62
58
  "metadata": {},
63
59
  "source": [
@@ -69,7 +65,6 @@
69
65
  ]
70
66
  },
71
67
  {
72
- "attachments": {},
73
68
  "cell_type": "markdown",
74
69
  "metadata": {},
75
70
  "source": [
@@ -88,7 +83,6 @@
88
83
  ]
89
84
  },
90
85
  {
91
- "attachments": {},
92
86
  "cell_type": "markdown",
93
87
  "metadata": {},
94
88
  "source": [
@@ -98,7 +92,6 @@
98
92
  ]
99
93
  },
100
94
  {
101
- "attachments": {},
102
95
  "cell_type": "markdown",
103
96
  "metadata": {},
104
97
  "source": [
@@ -106,7 +99,6 @@
106
99
  ]
107
100
  },
108
101
  {
109
- "attachments": {},
110
102
  "cell_type": "markdown",
111
103
  "metadata": {},
112
104
  "source": [
@@ -116,7 +108,6 @@
116
108
  ]
117
109
  },
118
110
  {
119
- "attachments": {},
120
111
  "cell_type": "markdown",
121
112
  "metadata": {},
122
113
  "source": [
@@ -124,7 +115,6 @@
124
115
  ]
125
116
  },
126
117
  {
127
- "attachments": {},
128
118
  "cell_type": "markdown",
129
119
  "metadata": {},
130
120
  "source": [
@@ -135,7 +125,6 @@
135
125
  ]
136
126
  },
137
127
  {
138
- "attachments": {},
139
128
  "cell_type": "markdown",
140
129
  "metadata": {},
141
130
  "source": [
@@ -146,7 +135,6 @@
146
135
  ]
147
136
  },
148
137
  {
149
- "attachments": {},
150
138
  "cell_type": "markdown",
151
139
  "metadata": {},
152
140
  "source": [
@@ -154,7 +142,6 @@
154
142
  ]
155
143
  },
156
144
  {
157
- "attachments": {},
158
145
  "cell_type": "markdown",
159
146
  "metadata": {},
160
147
  "source": [
@@ -187,11 +174,12 @@
187
174
  ]
188
175
  },
189
176
  {
190
- "attachments": {},
191
177
  "cell_type": "markdown",
192
178
  "metadata": {},
193
179
  "source": [
194
- "Settings persist in `~/.lamin/` and can also be accessed via {class}`lamindb.setup.settings`."
180
+ "Settings persist in `~/.lamin/` and can also be accessed via {class}`lamindb.setup.settings`. \n",
181
+ "\n",
182
+ "The settings directory can also be configured using `LAMIN_SETTINGS_DIR` environment variable."
195
183
  ]
196
184
  },
197
185
  {
@@ -222,7 +210,6 @@
222
210
  ]
223
211
  },
224
212
  {
225
- "attachments": {},
226
213
  "cell_type": "markdown",
227
214
  "metadata": {},
228
215
  "source": [
@@ -260,6 +247,46 @@
260
247
  "```"
261
248
  ]
262
249
  },
250
+ {
251
+ "cell_type": "markdown",
252
+ "metadata": {},
253
+ "source": [
254
+ "## Manage cache"
255
+ ]
256
+ },
257
+ {
258
+ "cell_type": "markdown",
259
+ "metadata": {},
260
+ "source": [
261
+ "`lamindb` mantains cache for cloud instances, i.e. instances having storage set to an AWS S3 bucket.\n",
262
+ "\n",
263
+ "Cache directory can be accessed via {class}`lamindb.settings`.\n",
264
+ "\n",
265
+ "```\n",
266
+ "ln.settings.storage.cache_dir\n",
267
+ "```\n",
268
+ "\n",
269
+ "or print the cache directory path with CLI\n",
270
+ "\n",
271
+ "```\n",
272
+ "lamin cache get\n",
273
+ "```\n",
274
+ "\n",
275
+ "It can be configured using the settings\n",
276
+ "\n",
277
+ "```\n",
278
+ "ln.settings.storage.cache_dir = \"some/path/to/cache\"\n",
279
+ "```\n",
280
+ "\n",
281
+ "or using CLI\n",
282
+ "\n",
283
+ "```\n",
284
+ "lamin cache set some/path/to/cache\n",
285
+ "```\n",
286
+ "\n",
287
+ "Cache directory can also be set using `LAMIN_CACHE_DIR` environment variable."
288
+ ]
289
+ },
263
290
  {
264
291
  "cell_type": "markdown",
265
292
  "metadata": {},
@@ -275,7 +302,7 @@
275
302
  "\n",
276
303
  "When loading a new instance, you automatically _close_ the previously loaded old instance.\n",
277
304
  "\n",
278
- "If you want to close the instance without loading a new instance, use `lamin close`"
305
+ "If you want to close the instance without loading a new instance, use `lamin load --unload`"
279
306
  ]
280
307
  },
281
308
  {
@@ -356,7 +383,6 @@
356
383
  ]
357
384
  },
358
385
  {
359
- "attachments": {},
360
386
  "cell_type": "markdown",
361
387
  "metadata": {},
362
388
  "source": [
@@ -387,16 +413,16 @@
387
413
  "name": "python3"
388
414
  },
389
415
  "language_info": {
390
- "artifact_extension": ".py",
391
416
  "codemirror_mode": {
392
417
  "name": "ipython",
393
418
  "version": 3
394
419
  },
420
+ "file_extension": ".py",
395
421
  "mimetype": "text/x-python",
396
422
  "name": "python",
397
423
  "nbconvert_exporter": "python",
398
424
  "pygments_lexer": "ipython3",
399
- "version": "3.10.13"
425
+ "version": "3.9.17"
400
426
  },
401
427
  "vscode": {
402
428
  "interpreter": {
@@ -177,6 +177,35 @@
177
177
  "<br>"
178
178
  ]
179
179
  },
180
+ {
181
+ "cell_type": "markdown",
182
+ "metadata": {},
183
+ "source": [
184
+ "## Manage templates"
185
+ ]
186
+ },
187
+ {
188
+ "cell_type": "markdown",
189
+ "metadata": {},
190
+ "source": [
191
+ "Save the template:\n",
192
+ "\n",
193
+ "```bash\n",
194
+ "lamin save template1.ipynb --key templates/template1.ipynb --description \"Template for analysis type 1\" --registry artifact\n",
195
+ "```"
196
+ ]
197
+ },
198
+ {
199
+ "cell_type": "markdown",
200
+ "metadata": {},
201
+ "source": [
202
+ "Load the template:\n",
203
+ "\n",
204
+ "```bash\n",
205
+ "lamin get https://lamin.ai/account/instance/artifact/Akd7gx7Y9oVOJlei0001\n",
206
+ "```"
207
+ ]
208
+ },
180
209
  {
181
210
  "cell_type": "code",
182
211
  "execution_count": null,
@@ -41,7 +41,7 @@ Modules and settings.
41
41
  """
42
42
 
43
43
  # denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
44
- __version__ = "0.76.7"
44
+ __version__ = "0.76.9"
45
45
 
46
46
  import os as _os
47
47
 
@@ -30,7 +30,7 @@ from lnschema_core.types import (
30
30
  from lamindb._utils import attach_func_to_class_method
31
31
  from lamindb.core._data import _track_run_input, describe, view_lineage
32
32
  from lamindb.core._settings import settings
33
- from lamindb.core.exceptions import IntegrityError
33
+ from lamindb.core.exceptions import IntegrityError, InvalidArgument
34
34
  from lamindb.core.loaders import load_to_memory
35
35
  from lamindb.core.storage import (
36
36
  LocalPathClasses,
@@ -43,6 +43,7 @@ from lamindb.core.storage.paths import (
43
43
  auto_storage_key_from_artifact,
44
44
  auto_storage_key_from_artifact_uid,
45
45
  check_path_is_child_of_root,
46
+ filepath_cache_key_from_artifact,
46
47
  filepath_from_artifact,
47
48
  )
48
49
  from lamindb.core.versioning import (
@@ -88,8 +89,6 @@ def process_pathlike(
88
89
  raise FileNotFoundError(filepath)
89
90
  except PermissionError:
90
91
  pass
91
- if isinstance(filepath, LocalPathClasses):
92
- filepath = filepath.resolve()
93
92
  if check_path_is_child_of_root(filepath, default_storage.root):
94
93
  use_existing_storage_key = True
95
94
  return default_storage, use_existing_storage_key
@@ -154,7 +153,7 @@ def process_data(
154
153
  if hasattr(default_storage, "_access_token")
155
154
  else None
156
155
  )
157
- path = create_path(data, access_token=access_token)
156
+ path = create_path(data, access_token=access_token).resolve()
158
157
  storage, use_existing_storage_key = process_pathlike(
159
158
  path,
160
159
  default_storage=default_storage,
@@ -175,12 +174,12 @@ def process_data(
175
174
  key_suffix = None
176
175
  suffix = infer_suffix(data, format)
177
176
  if key_suffix is not None and key_suffix != suffix:
178
- raise ValueError(
177
+ raise InvalidArgument(
179
178
  f"The suffix '{key_suffix}' of the provided key is incorrect, it should"
180
179
  f" be '{suffix}'."
181
180
  )
182
181
  cache_name = f"{provisional_uid}{suffix}"
183
- path = settings._storage_settings.cache_dir / cache_name
182
+ path = settings.storage.cache_dir / cache_name
184
183
  # Alex: I don't understand the line below
185
184
  if path.suffixes == []:
186
185
  path = path.with_suffix(suffix)
@@ -344,8 +343,8 @@ def get_artifact_kwargs_from_data(
344
343
 
345
344
  if revises is not None: # update provisional_uid
346
345
  provisional_uid, revises = create_uid(revises=revises, version=version)
347
- if path.as_posix().startswith(settings._storage_settings.cache_dir.as_posix()):
348
- path = path.rename(f"{provisional_uid}{suffix}")
346
+ if settings.storage.cache_dir in path.parents:
347
+ path = path.rename(path.with_name(f"{provisional_uid}{suffix}"))
349
348
 
350
349
  check_path_in_storage = False
351
350
  if use_existing_storage_key:
@@ -356,7 +355,7 @@ def get_artifact_kwargs_from_data(
356
355
  key = inferred_key
357
356
  else:
358
357
  if not key == inferred_key:
359
- raise ValueError(
358
+ raise InvalidArgument(
360
359
  f"The path '{data}' is already in registered storage"
361
360
  f" '{storage.root}' with key '{inferred_key}'\nYou passed"
362
361
  f" conflicting key '{key}': please move the file before"
@@ -399,6 +398,7 @@ def get_artifact_kwargs_from_data(
399
398
  "run_id": run.id if run is not None else None,
400
399
  "run": run,
401
400
  "_key_is_virtual": key_is_virtual,
401
+ "revises": revises,
402
402
  }
403
403
  if not isinstance(path, LocalPathClasses):
404
404
  local_filepath = None
@@ -614,6 +614,9 @@ def __init__(artifact: Artifact, *args, **kwargs):
614
614
  else:
615
615
  kwargs = kwargs_or_artifact
616
616
 
617
+ if revises is None:
618
+ revises = kwargs_or_artifact.pop("revises")
619
+
617
620
  if data is not None:
618
621
  artifact._local_filepath = privates["local_filepath"]
619
622
  artifact._cloud_filepath = privates["cloud_filepath"]
@@ -750,7 +753,7 @@ def from_dir(
750
753
  " ln.Artifact(dir_path) to get one artifact for the entire directory"
751
754
  )
752
755
  folderpath: UPath = create_path(path) # returns Path for local
753
- default_storage = settings._storage_settings.record
756
+ default_storage = settings.storage.record
754
757
  using_key = settings._using_key
755
758
  storage, use_existing_storage = process_pathlike(
756
759
  folderpath, default_storage, using_key
@@ -844,7 +847,7 @@ def replace(
844
847
  run: Run | None = None,
845
848
  format: str | None = None,
846
849
  ) -> None:
847
- default_storage = settings._storage_settings.record
850
+ default_storage = settings.storage.record
848
851
  kwargs, privates = get_artifact_kwargs_from_data(
849
852
  provisional_uid=self.uid,
850
853
  data=data,
@@ -919,12 +922,14 @@ def open(
919
922
  from lamindb.core.storage._backed_access import _track_writes_factory, backed_access
920
923
 
921
924
  using_key = settings._using_key
922
- filepath = filepath_from_artifact(self, using_key=using_key)
925
+ filepath, cache_key = filepath_cache_key_from_artifact(self, using_key=using_key)
923
926
  is_tiledbsoma_w = (
924
927
  filepath.name == "soma" or filepath.suffix == ".tiledbsoma"
925
928
  ) and mode == "w"
926
929
  # consider the case where an object is already locally cached
927
- localpath = setup_settings.instance.storage.cloud_to_local_no_update(filepath)
930
+ localpath = setup_settings.instance.storage.cloud_to_local_no_update(
931
+ filepath, cache_key=cache_key
932
+ )
928
933
  if not is_tiledbsoma_w and localpath.exists():
929
934
  access = backed_access(localpath, mode, using_key)
930
935
  else:
@@ -956,15 +961,17 @@ def open(
956
961
 
957
962
 
958
963
  # can't really just call .cache in .load because of double tracking
959
- def _synchronize_cleanup_on_error(filepath: UPath) -> UPath:
964
+ def _synchronize_cleanup_on_error(
965
+ filepath: UPath, cache_key: str | None = None
966
+ ) -> UPath:
960
967
  try:
961
968
  cache_path = setup_settings.instance.storage.cloud_to_local(
962
- filepath, print_progress=True
969
+ filepath, cache_key=cache_key, print_progress=True
963
970
  )
964
971
  except Exception as e:
965
972
  if not isinstance(filepath, LocalPathClasses):
966
973
  cache_path = setup_settings.instance.storage.cloud_to_local_no_update(
967
- filepath
974
+ filepath, cache_key=cache_key
968
975
  )
969
976
  if cache_path.is_file():
970
977
  cache_path.unlink(missing_ok=True)
@@ -979,8 +986,11 @@ def load(self, is_run_input: bool | None = None, **kwargs) -> Any:
979
986
  if hasattr(self, "_memory_rep") and self._memory_rep is not None:
980
987
  access_memory = self._memory_rep
981
988
  else:
982
- filepath = filepath_from_artifact(self, using_key=settings._using_key)
983
- cache_path = _synchronize_cleanup_on_error(filepath)
989
+ filepath, cache_key = filepath_cache_key_from_artifact(
990
+ self, using_key=settings._using_key
991
+ )
992
+ cache_path = _synchronize_cleanup_on_error(filepath, cache_key=cache_key)
993
+ # cache_path is local so doesn't trigger any sync in load_to_memory
984
994
  access_memory = load_to_memory(cache_path, **kwargs)
985
995
  # only call if load is successfull
986
996
  _track_run_input(self, is_run_input)
@@ -989,8 +999,10 @@ def load(self, is_run_input: bool | None = None, **kwargs) -> Any:
989
999
 
990
1000
  # docstring handled through attach_func_to_class_method
991
1001
  def cache(self, is_run_input: bool | None = None) -> Path:
992
- filepath = filepath_from_artifact(self, using_key=settings._using_key)
993
- cache_path = _synchronize_cleanup_on_error(filepath)
1002
+ filepath, cache_key = filepath_cache_key_from_artifact(
1003
+ self, using_key=settings._using_key
1004
+ )
1005
+ cache_path = _synchronize_cleanup_on_error(filepath, cache_key=cache_key)
994
1006
  # only call if sync is successfull
995
1007
  _track_run_input(self, is_run_input)
996
1008
  return cache_path
@@ -1041,7 +1053,7 @@ def delete(
1041
1053
  if delete_record:
1042
1054
  # need to grab file path before deletion
1043
1055
  try:
1044
- path = filepath_from_artifact(self, using_key)
1056
+ path, _ = filepath_from_artifact(self, using_key)
1045
1057
  except OSError:
1046
1058
  # we can still delete the record
1047
1059
  logger.warning("Could not get path")
@@ -1133,8 +1145,22 @@ def _save_skip_storage(file, **kwargs) -> None:
1133
1145
  @doc_args(Artifact.path.__doc__)
1134
1146
  def path(self) -> Path | UPath:
1135
1147
  """{}""" # noqa: D415
1136
- using_key = settings._using_key
1137
- return filepath_from_artifact(self, using_key)
1148
+ # return only the path, without StorageSettings
1149
+ filepath, _ = filepath_from_artifact(self, using_key=settings._using_key)
1150
+ return filepath
1151
+
1152
+
1153
+ # get cache path without triggering sync
1154
+ @property # type: ignore
1155
+ def _cache_path(self) -> UPath:
1156
+ filepath, cache_key = filepath_cache_key_from_artifact(
1157
+ self, using_key=settings._using_key
1158
+ )
1159
+ if isinstance(filepath, LocalPathClasses):
1160
+ return filepath
1161
+ return setup_settings.instance.storage.cloud_to_local_no_update(
1162
+ filepath, cache_key=cache_key
1163
+ )
1138
1164
 
1139
1165
 
1140
1166
  # docstring handled through attach_func_to_class_method
@@ -1173,6 +1199,7 @@ for name in METHOD_NAMES:
1173
1199
  # privates currently dealt with separately
1174
1200
  Artifact._delete_skip_storage = _delete_skip_storage
1175
1201
  Artifact._save_skip_storage = _save_skip_storage
1202
+ Artifact._cache_path = _cache_path
1176
1203
  Artifact.path = path
1177
1204
  Artifact.describe = describe
1178
1205
  Artifact.view_lineage = view_lineage
@@ -211,6 +211,7 @@ def mapped(
211
211
  layers_keys: str | list[str] | None = None,
212
212
  obs_keys: str | list[str] | None = None,
213
213
  obsm_keys: str | list[str] | None = None,
214
+ obs_filter: tuple[str, str | tuple[str, ...]] | None = None,
214
215
  join: Literal["inner", "outer"] | None = "inner",
215
216
  encode_labels: bool | list[str] = True,
216
217
  unknown_label: str | dict[str, str] | None = None,
@@ -239,6 +240,7 @@ def mapped(
239
240
  layers_keys,
240
241
  obs_keys,
241
242
  obsm_keys,
243
+ obs_filter,
242
244
  join,
243
245
  encode_labels,
244
246
  unknown_label,
@@ -17,6 +17,7 @@ from lnschema_core.models import Artifact, Record
17
17
 
18
18
  from lamindb.core._settings import settings
19
19
  from lamindb.core.storage.paths import (
20
+ _cache_key_from_artifact_storage,
20
21
  attempt_accessing_path,
21
22
  auto_storage_key_from_artifact,
22
23
  delete_storage_using_key,
@@ -135,7 +136,7 @@ def check_and_attempt_upload(
135
136
  # a local env it will have a _local_filepath and needs to be uploaded
136
137
  if hasattr(artifact, "_local_filepath"):
137
138
  try:
138
- storage_path = upload_artifact(
139
+ storage_path, cache_path = upload_artifact(
139
140
  artifact,
140
141
  using_key,
141
142
  access_token=access_token,
@@ -146,7 +147,7 @@ def check_and_attempt_upload(
146
147
  return exception
147
148
  # copies (if on-disk) or moves the temporary file (if in-memory) to the cache
148
149
  if os.getenv("LAMINDB_MULTI_INSTANCE") is None:
149
- copy_or_move_to_cache(artifact, storage_path)
150
+ copy_or_move_to_cache(artifact, storage_path, cache_path)
150
151
  # after successful upload, we should remove the attribute so that another call
151
152
  # call to save won't upload again, the user should call replace() then
152
153
  del artifact._local_filepath
@@ -154,7 +155,9 @@ def check_and_attempt_upload(
154
155
  return None
155
156
 
156
157
 
157
- def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
158
+ def copy_or_move_to_cache(
159
+ artifact: Artifact, storage_path: UPath, cache_path: UPath | None
160
+ ):
158
161
  local_path = artifact._local_filepath
159
162
 
160
163
  # in-memory cases
@@ -166,7 +169,7 @@ def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
166
169
  cache_dir = settings._storage_settings.cache_dir
167
170
 
168
171
  # just delete from the cache dir if storage_path is local
169
- if isinstance(storage_path, LocalPathClasses):
172
+ if cache_path is None:
170
173
  if (
171
174
  local_path.as_posix() != storage_path.as_posix()
172
175
  and cache_dir in local_path.parents
@@ -176,11 +179,12 @@ def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
176
179
  else:
177
180
  local_path.unlink()
178
181
  return None
179
-
180
- cache_path = settings._storage_settings.cloud_to_local_no_update(storage_path)
182
+ # non-local storage_path further
181
183
  if local_path != cache_path:
182
184
  cache_path.parent.mkdir(parents=True, exist_ok=True)
183
185
  if cache_dir in local_path.parents:
186
+ if cache_path.is_dir():
187
+ shutil.rmtree(cache_path)
184
188
  local_path.replace(cache_path)
185
189
  else:
186
190
  if is_dir:
@@ -280,11 +284,11 @@ def upload_artifact(
280
284
  using_key: str | None = None,
281
285
  access_token: str | None = None,
282
286
  print_progress: bool = True,
283
- ) -> UPath:
287
+ ) -> tuple[UPath, UPath | None]:
284
288
  """Store and add file and its linked entries."""
285
289
  # can't currently use filepath_from_artifact here because it resolves to ._local_filepath
286
290
  storage_key = auto_storage_key_from_artifact(artifact)
287
- storage_path = attempt_accessing_path(
291
+ storage_path, storage_settings = attempt_accessing_path(
288
292
  artifact, storage_key, using_key=using_key, access_token=access_token
289
293
  )
290
294
  if hasattr(artifact, "_to_store") and artifact._to_store:
@@ -292,4 +296,13 @@ def upload_artifact(
292
296
  store_file_or_folder(
293
297
  artifact._local_filepath, storage_path, print_progress=print_progress
294
298
  )
295
- return storage_path
299
+
300
+ if isinstance(storage_path, LocalPathClasses):
301
+ cache_path = None
302
+ else:
303
+ cache_key = _cache_key_from_artifact_storage(artifact, storage_settings)
304
+ cache_path = storage_settings.cloud_to_local_no_update(
305
+ storage_path, cache_key=cache_key
306
+ )
307
+
308
+ return storage_path, cache_path
@@ -450,11 +450,11 @@ class Context:
450
450
  self._logging_message += f"created Transform(uid='{transform.uid}')"
451
451
  else:
452
452
  uid = transform.uid
453
- # check whether the transform file has been renamed
453
+ # check whether the transform.key is consistent
454
454
  if transform.key != key:
455
455
  suid = transform.stem_uid
456
456
  new_suid = ids.base62_12()
457
- transform_type = "Notebook" if is_run_from_ipython else "Script"
457
+ transform_type = "notebook" if is_run_from_ipython else "script"
458
458
  note = message_update_key_in_version_family(
459
459
  suid=suid,
460
460
  existing_key=transform.key,
@@ -462,7 +462,7 @@ class Context:
462
462
  registry="Transform",
463
463
  )
464
464
  raise UpdateContext(
465
- f"{transform_type} filename changed.\n\nEither init a new transform family by setting:\n\n"
465
+ f'\n✗ Filename "{key}" clashes with the existing key "{transform.key}" for uid "{transform.uid[:-4]}...."\n\nEither init a new transform with a new uid:\n\n'
466
466
  f'ln.context.uid = "{new_suid}0000"\n\n{note}'
467
467
  )
468
468
  elif transform.name != name:
@@ -41,7 +41,7 @@ if TYPE_CHECKING:
41
41
 
42
42
 
43
43
  WARNING_RUN_TRANSFORM = (
44
- "no run & transform got linked, call `ln.context.track()` & re-run`"
44
+ "no run & transform got linked, call `ln.context.track()` & re-run"
45
45
  )
46
46
 
47
47
  WARNING_NO_INPUT = "run input wasn't tracked, call `ln.context.track()` and re-run"