lamindb 0.76.3__tar.gz → 0.76.5__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 (464) hide show
  1. {lamindb-0.76.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. {lamindb-0.76.3 → lamindb-0.76.5}/PKG-INFO +7 -7
  3. {lamindb-0.76.3 → lamindb-0.76.5}/docs/api.md +3 -17
  4. lamindb-0.76.5/docs/laminr.md +3 -0
  5. {lamindb-0.76.3 → lamindb-0.76.5}/docs/tutorial.ipynb +1 -1
  6. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/__init__.py +6 -9
  7. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_artifact.py +43 -30
  8. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_can_validate.py +20 -4
  9. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_curate.py +23 -6
  10. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_finish.py +117 -106
  11. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_query_set.py +41 -33
  12. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_record.py +3 -2
  13. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_transform.py +5 -3
  14. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/__init__.py +0 -2
  15. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_context.py +71 -37
  16. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_label_manager.py +1 -3
  17. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_anndata_accessor.py +6 -1
  18. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_tiledbsoma.py +24 -20
  19. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/versioning.py +4 -0
  20. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/integrations/_vitessce.py +9 -15
  21. {lamindb-0.76.3 → lamindb-0.76.5}/noxfile.py +2 -2
  22. {lamindb-0.76.3 → lamindb-0.76.5}/pyproject.toml +7 -7
  23. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/__init__.py +1 -1
  24. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/__init__.py +8 -21
  25. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/models.py +4 -4
  26. lamindb-0.76.5/sub/lamin-cli/LICENSE +201 -0
  27. lamindb-0.76.5/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  28. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/__main__.py +43 -14
  29. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_cache.py +1 -1
  30. lamindb-0.76.5/sub/lamin-cli/lamin_cli/_get.py +66 -0
  31. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_save.py +3 -7
  32. lamindb-0.76.5/sub/lamin-cli/tests/test_cli.py +42 -0
  33. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_notebooks.py +69 -26
  34. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_scripts.py +22 -6
  35. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.github/workflows/build.yml +7 -7
  36. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +16 -12
  37. lamindb-0.76.5/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +140 -0
  38. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +8 -15
  39. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +7 -7
  40. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/notebooks.md +1 -0
  41. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/__init__.py +10 -7
  42. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +11 -4
  43. lamindb-0.76.5/sub/lamindb-setup/lamindb_setup/_entry_points.py +22 -0
  44. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +31 -11
  45. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_setup_user.py +55 -39
  46. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +11 -2
  47. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +56 -5
  48. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +13 -8
  49. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +1 -0
  50. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +3 -1
  51. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +3 -1
  52. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/noxfile.py +1 -1
  53. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +9 -0
  54. lamindb-0.76.5/sub/lamindb-setup/tests/hub-cloud/test_login.py +67 -0
  55. lamindb-0.76.5/sub/lamindb-setup/tests/storage/test_entry_point.py +76 -0
  56. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  57. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/models.py +36 -40
  58. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +2 -2
  59. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +2 -2
  60. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_artifact.py +14 -5
  61. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_context.py +8 -4
  62. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_curate.py +25 -8
  63. {lamindb-0.76.3 → lamindb-0.76.5}/tests/storage/test_storage.py +5 -0
  64. lamindb-0.76.3/docs/readfcs.md +0 -3
  65. lamindb-0.76.3/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  66. lamindb-0.76.3/sub/lamin-cli/lamin_cli/_get.py +0 -44
  67. lamindb-0.76.3/sub/lamin-cli/tests/test_cli.py +0 -16
  68. lamindb-0.76.3/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -19
  69. {lamindb-0.76.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  70. {lamindb-0.76.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  71. {lamindb-0.76.3 → lamindb-0.76.5}/.github/workflows/build.yml +0 -0
  72. {lamindb-0.76.3 → lamindb-0.76.5}/.github/workflows/doc-changes.yml +0 -0
  73. {lamindb-0.76.3 → lamindb-0.76.5}/.gitignore +0 -0
  74. {lamindb-0.76.3 → lamindb-0.76.5}/.gitmodules +0 -0
  75. {lamindb-0.76.3 → lamindb-0.76.5}/.pre-commit-config.yaml +0 -0
  76. {lamindb-0.76.3 → lamindb-0.76.5}/CONTRIBUTING.md +0 -0
  77. {lamindb-0.76.3 → lamindb-0.76.5}/LICENSE +0 -0
  78. {lamindb-0.76.3 → lamindb-0.76.5}/README.md +0 -0
  79. {lamindb-0.76.3 → lamindb-0.76.5}/docs/arrays.ipynb +0 -0
  80. {lamindb-0.76.3 → lamindb-0.76.5}/docs/bio-registries.ipynb +0 -0
  81. {lamindb-0.76.3 → lamindb-0.76.5}/docs/bionty.md +0 -0
  82. {lamindb-0.76.3 → lamindb-0.76.5}/docs/changelog.md +0 -0
  83. {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate-any.ipynb +0 -0
  84. {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate-df.ipynb +0 -0
  85. {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate.md +0 -0
  86. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/acid.ipynb +0 -0
  87. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/delete.ipynb +0 -0
  88. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/idempotency.ipynb +0 -0
  89. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/import-schema.ipynb +0 -0
  90. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/keep-artifacts-local.ipynb +0 -0
  91. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/key.ipynb +0 -0
  92. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/reference-field.ipynb +0 -0
  93. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/setup.ipynb +0 -0
  94. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/test_notebooks.py +0 -0
  95. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/track-run-inputs.ipynb +0 -0
  96. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/visibility.ipynb +0 -0
  97. {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq.md +0 -0
  98. {lamindb-0.76.3 → lamindb-0.76.5}/docs/guide.md +0 -0
  99. {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/features-lamindb.md +0 -0
  100. {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/features-laminhub.md +0 -0
  101. {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/installation.md +0 -0
  102. {lamindb-0.76.3 → lamindb-0.76.5}/docs/index.md +0 -0
  103. {lamindb-0.76.3 → lamindb-0.76.5}/docs/introduction.ipynb +0 -0
  104. {lamindb-0.76.3 → lamindb-0.76.5}/docs/lamindb.md +0 -0
  105. {lamindb-0.76.3 → lamindb-0.76.5}/docs/query-search.md +0 -0
  106. {lamindb-0.76.3 → lamindb-0.76.5}/docs/records.ipynb +0 -0
  107. {lamindb-0.76.3 → lamindb-0.76.5}/docs/rest.md +0 -0
  108. {lamindb-0.76.3 → lamindb-0.76.5}/docs/schemas.ipynb +0 -0
  109. {lamindb-0.76.3 → lamindb-0.76.5}/docs/setup.ipynb +0 -0
  110. {lamindb-0.76.3 → lamindb-0.76.5}/docs/signup-login.md +0 -0
  111. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/add-replace-cache.ipynb +0 -0
  112. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/anndata-accessor.ipynb +0 -0
  113. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  114. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/iris.csv +0 -0
  115. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/iris.data +0 -0
  116. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/new_iris.csv +0 -0
  117. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test_notebooks.py +0 -0
  118. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  119. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/upload.ipynb +0 -0
  120. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/vitessce.ipynb +0 -0
  121. {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage.md +0 -0
  122. {lamindb-0.76.3 → lamindb-0.76.5}/docs/test_notebooks.py +0 -0
  123. {lamindb-0.76.3 → lamindb-0.76.5}/docs/track.ipynb +0 -0
  124. {lamindb-0.76.3 → lamindb-0.76.5}/docs/transfer.ipynb +0 -0
  125. {lamindb-0.76.3 → lamindb-0.76.5}/docs/tutorial2.ipynb +0 -0
  126. {lamindb-0.76.3 → lamindb-0.76.5}/docs/wetlab.md +0 -0
  127. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_collection.py +0 -0
  128. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_feature.py +0 -0
  129. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_feature_set.py +0 -0
  130. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_filter.py +0 -0
  131. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_from_values.py +0 -0
  132. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_is_versioned.py +0 -0
  133. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_parents.py +0 -0
  134. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_query_manager.py +0 -0
  135. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_run.py +0 -0
  136. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_save.py +0 -0
  137. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_storage.py +0 -0
  138. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_ulabel.py +0 -0
  139. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_utils.py +0 -0
  140. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_view.py +0 -0
  141. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_data.py +0 -0
  142. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_feature_manager.py +0 -0
  143. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_mapped_collection.py +0 -0
  144. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_settings.py +0 -0
  145. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_sync_git.py +0 -0
  146. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_track_environment.py +0 -0
  147. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/__init__.py +0 -0
  148. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/_core.py +0 -0
  149. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/_fake.py +0 -0
  150. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/exceptions.py +0 -0
  151. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/fields.py +0 -0
  152. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/schema.py +0 -0
  153. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/__init__.py +0 -0
  154. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_anndata_sizes.py +0 -0
  155. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_backed_access.py +0 -0
  156. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_valid_suffixes.py +0 -0
  157. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_zarr.py +0 -0
  158. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/objects.py +0 -0
  159. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/paths.py +0 -0
  160. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/__init__.py +0 -0
  161. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/_creation_settings.py +0 -0
  162. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/_transform_settings.py +0 -0
  163. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/types.py +0 -0
  164. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/integrations/__init__.py +0 -0
  165. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/setup/__init__.py +0 -0
  166. {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/setup/core/__init__.py +0 -0
  167. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/build.yml +0 -0
  168. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
  169. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
  170. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.gitignore +0 -0
  171. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.pre-commit-config.yaml +0 -0
  172. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/LICENSE +0 -0
  173. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/README.md +0 -0
  174. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/_bionty.py +0 -0
  175. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_display_sources.py +0 -0
  176. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_ontology.py +0 -0
  177. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_public_ontology.py +0 -0
  178. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_settings.py +0 -0
  179. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_sync_sources.py +0 -0
  180. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/__init__.py +0 -0
  181. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
  182. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_io.py +0 -0
  183. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_md5.py +0 -0
  184. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/__init__.py +0 -0
  185. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
  186. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
  187. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
  188. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
  189. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
  190. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
  191. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_disease.py +0 -0
  192. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_drug.py +0 -0
  193. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
  194. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
  195. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_gene.py +0 -0
  196. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_organism.py +0 -0
  197. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
  198. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
  199. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_protein.py +0 -0
  200. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
  201. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
  202. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
  203. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
  204. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
  205. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
  206. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
  207. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
  208. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/sources.yaml +0 -0
  209. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/__init__.py +0 -0
  210. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_add_ontology.py +0 -0
  211. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_bionty.py +0 -0
  212. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_settings.py +0 -0
  213. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/ids.py +0 -0
  214. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  215. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
  216. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
  217. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
  218. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
  219. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
  220. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
  221. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
  222. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
  223. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
  224. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
  225. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
  226. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
  227. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
  228. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
  229. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  230. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/__init__.py +0 -0
  231. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/concepts.md +0 -0
  232. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/config.md +0 -0
  233. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/extend.md +0 -0
  234. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/test_notebooks.py +0 -0
  235. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide.md +0 -0
  236. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/index.md +0 -0
  237. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/reference.md +0 -0
  238. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/lamin-project.yaml +0 -0
  239. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/noxfile.py +0 -0
  240. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/pyproject.toml +0 -0
  241. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
  242. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/dev/test_io.py +0 -0
  243. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
  244. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_biosample.py +0 -0
  245. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_cellline.py +0 -0
  246. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
  247. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_celltype.py +0 -0
  248. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
  249. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_disease.py +0 -0
  250. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_drug.py +0 -0
  251. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
  252. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
  253. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_gene.py +0 -0
  254. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_organism.py +0 -0
  255. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_pathway.py +0 -0
  256. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_phenotype.py +0 -0
  257. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_protein.py +0 -0
  258. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_tissue.py +0 -0
  259. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_bionty.py +0 -0
  260. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_lamindb.py +0 -0
  261. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_md5.py +0 -0
  262. {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_ontology.py +0 -0
  263. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
  264. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.gitignore +0 -0
  265. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  266. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/README.md +0 -0
  267. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  268. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/pyproject.toml +0 -0
  269. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/conftest.py +0 -0
  270. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  271. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  272. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  273. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  274. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  275. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  276. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_get.py +0 -0
  277. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_migrate.py +0 -0
  278. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  279. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_files.py +0 -0
  280. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
  281. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.gitignore +0 -0
  282. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  283. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/LICENSE +0 -0
  284. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/README.md +0 -0
  285. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/changelog.md +0 -0
  286. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  287. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  288. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  289. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  290. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  291. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  292. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
  293. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  294. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  295. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  296. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  297. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  298. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  299. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  300. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  301. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/index.md +0 -0
  302. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/reference.md +0 -0
  303. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  304. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  305. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  306. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  307. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  308. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  309. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  310. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  311. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  312. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  313. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  314. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  315. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  316. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  317. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  318. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
  319. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  320. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  321. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  322. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  323. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  324. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
  325. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  326. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
  327. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  328. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
  329. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  330. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  331. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  332. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  333. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  334. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
  335. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/pyproject.toml +0 -0
  336. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
  337. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  338. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
  339. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  340. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  341. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  342. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  343. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  344. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
  345. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  346. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  347. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
  348. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  349. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  350. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  351. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  352. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  353. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  354. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  355. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  356. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
  357. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.gitignore +0 -0
  358. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  359. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/CHANGELOG.md +0 -0
  360. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/LICENSE +0 -0
  361. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/README.md +0 -0
  362. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  363. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
  364. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
  365. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  366. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  367. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  368. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  369. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  370. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  371. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  372. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  373. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
  374. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
  375. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
  376. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
  377. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
  378. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
  379. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
  380. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
  381. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
  382. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
  383. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0056_rename_ulabel_ref_is_name_artifactulabel_label_ref_is_name_and_more.py +0 -0
  384. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
  385. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
  386. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
  387. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
  388. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
  389. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
  390. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
  391. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0064_alter_artifact_version_alter_collection_version_and_more.py +0 -0
  392. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  393. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  394. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/types.py +0 -0
  395. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/users.py +0 -0
  396. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/noxfile.py +0 -0
  397. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/pyproject.toml +0 -0
  398. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/conftest.py +0 -0
  399. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_integrity.py +0 -0
  400. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_models.py +0 -0
  401. {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_types.py +0 -0
  402. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.github/workflows/build.yml +0 -0
  403. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
  404. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.gitignore +0 -0
  405. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.pre-commit-config.yaml +0 -0
  406. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/README.md +0 -0
  407. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/changelog.md +0 -0
  408. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide/get-started.ipynb +0 -0
  409. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +0 -0
  410. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide.md +0 -0
  411. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/index.md +0 -0
  412. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/reference.md +0 -0
  413. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/noxfile.py +0 -0
  414. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/pyproject.toml +0 -0
  415. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/tests/test_integrity.py +0 -0
  416. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/tests/test_notebooks.py +0 -0
  417. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/__init__.py +0 -0
  418. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
  419. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
  420. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
  421. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
  422. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +0 -0
  423. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
  424. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  425. {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/models.py +0 -0
  426. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/conftest.py +0 -0
  427. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
  428. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/no-title.ipynb +0 -0
  429. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/not-initialized.ipynb +0 -0
  430. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
  431. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
  432. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
  433. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/script-to-test-filename-change.py +0 -0
  434. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/script-to-test-versioning.py +0 -0
  435. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_artifact_folders.py +0 -0
  436. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_cache.py +0 -0
  437. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_can_validate.py +0 -0
  438. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_collection.py +0 -0
  439. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_data.py +0 -0
  440. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_db.py +0 -0
  441. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_delete.py +0 -0
  442. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature.py +0 -0
  443. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature_manager.py +0 -0
  444. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature_set.py +0 -0
  445. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_from_values.py +0 -0
  446. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_label_manager.py +0 -0
  447. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_load.py +0 -0
  448. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_manager.py +0 -0
  449. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_notebooks.py +0 -0
  450. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_parents.py +0 -0
  451. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_queryset.py +0 -0
  452. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_record.py +0 -0
  453. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_run.py +0 -0
  454. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_save.py +0 -0
  455. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_search.py +0 -0
  456. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_settings.py +0 -0
  457. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_transfer.py +0 -0
  458. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_transform.py +0 -0
  459. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_uid.py +0 -0
  460. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_ulabel.py +0 -0
  461. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_versioning.py +0 -0
  462. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_view.py +0 -0
  463. {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_visibility.py +0 -0
  464. {lamindb-0.76.3 → lamindb-0.76.5}/tests/storage/conftest.py +0 -0
@@ -1,4 +1,4 @@
1
- blank_issues_enabled: false
1
+ blank_issues_enabled: true
2
2
  contact_links:
3
3
  - name: LaminHub issues
4
4
  url: https://github.com/laminlabs/laminhub-public
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.76.3
3
+ Version: 0.76.5
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.8
@@ -9,22 +9,22 @@ Classifier: Programming Language :: Python :: 3.8
9
9
  Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
- Requires-Dist: lnschema_core==0.73.3
13
- Requires-Dist: lamindb_setup==0.76.7
12
+ Requires-Dist: lnschema_core==0.73.5
13
+ Requires-Dist: lamindb_setup==0.77.1
14
14
  Requires-Dist: lamin_utils==0.13.4
15
- Requires-Dist: lamin_cli==0.16.2
15
+ Requires-Dist: lamin_cli==0.17.1
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
19
19
  Requires-Dist: python-dateutil
20
- Requires-Dist: anndata>=0.8.0,<=0.10.8
20
+ Requires-Dist: anndata>=0.8.0,<=0.10.9
21
21
  Requires-Dist: scipy<1.13.0rc1
22
22
  Requires-Dist: fsspec
23
23
  Requires-Dist: pandas
24
24
  Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
26
26
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
27
- Requires-Dist: bionty==0.49.0 ; extra == "bionty"
27
+ Requires-Dist: bionty==0.49.1 ; extra == "bionty"
28
28
  Requires-Dist: pre-commit ; extra == "dev"
29
29
  Requires-Dist: nox ; extra == "dev"
30
30
  Requires-Dist: laminci>=0.3 ; extra == "dev"
@@ -38,7 +38,7 @@ Requires-Dist: django-schema-graph ; extra == "erdiagram"
38
38
  Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
39
39
  Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
40
40
  Requires-Dist: nbproject==0.10.4 ; extra == "jupyter"
41
- Requires-Dist: nbstripout==0.6.1 ; extra == "jupyter"
41
+ Requires-Dist: jupytext ; extra == "jupyter"
42
42
  Requires-Dist: nbconvert ; extra == "jupyter"
43
43
  Requires-Dist: zarr>=2.16.0 ; extra == "zarr"
44
44
  Project-URL: Home, https://github.com/laminlabs/lamindb
@@ -12,33 +12,19 @@ cli
12
12
 
13
13
  ```{toctree}
14
14
  :maxdepth: 1
15
- :caption: Core API
15
+ :caption: Python
16
16
  :hidden:
17
17
 
18
18
  lamindb
19
- ```
20
-
21
- ```{toctree}
22
- :maxdepth: 1
23
- :caption: Plugins
24
- :hidden:
25
-
26
19
  bionty
27
20
  wetlab
28
21
  ```
29
22
 
30
23
  ```{toctree}
31
24
  :maxdepth: 1
32
- :caption: SDK
25
+ :caption: R & REST
33
26
  :hidden:
34
27
 
28
+ laminr
35
29
  rest
36
30
  ```
37
-
38
- ```{toctree}
39
- :maxdepth: 1
40
- :caption: Utilities
41
- :hidden:
42
-
43
- readfcs
44
- ```
@@ -0,0 +1,3 @@
1
+ # `laminr`
2
+
3
+ [github.com/laminlabs/laminr](https://github.com/laminlabs/laminr)
@@ -364,7 +364,7 @@
364
364
  "cell_type": "markdown",
365
365
  "metadata": {},
366
366
  "source": [
367
- "Visualize data lineage with {meth}`~lamindb.core.HasFeatures.view_lineage`:"
367
+ "Visualize data lineage with {meth}`~lamindb.Artifact.view_lineage`:"
368
368
  ]
369
369
  },
370
370
  {
@@ -1,7 +1,6 @@
1
1
  """A data framework for biology.
2
2
 
3
- Records
4
- =======
3
+ Core registries.
5
4
 
6
5
  .. autosummary::
7
6
  :toctree: .
@@ -17,8 +16,7 @@ Records
17
16
  FeatureSet
18
17
  Param
19
18
 
20
- Key functionality
21
- =================
19
+ Key functionality.
22
20
 
23
21
  .. autosummary::
24
22
  :toctree: .
@@ -29,8 +27,7 @@ Key functionality
29
27
  view
30
28
  save
31
29
 
32
- Modules & settings
33
- ==================
30
+ Modules and settings.
34
31
 
35
32
  .. autosummary::
36
33
  :toctree: .
@@ -44,7 +41,7 @@ Modules & settings
44
41
  """
45
42
 
46
43
  # denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
47
- __version__ = "0.76.3"
44
+ __version__ = "0.76.5"
48
45
 
49
46
  import os as _os
50
47
 
@@ -111,6 +108,6 @@ if _check_instance_setup(from_lamindb=True):
111
108
  track = context.track # backward compat
112
109
  finish = context.finish # backward compat
113
110
  Curate = Curator # backward compat
114
- settings.__doc__ = """Global :class:`~lamindb.core.Settings`."""
115
- context.__doc__ = """Global :class:`~lamindb.core.Context`."""
111
+ settings.__doc__ = """Global settings (:class:`~lamindb.core.Settings`)."""
112
+ context.__doc__ = """Global run context (:class:`~lamindb.core.Context`)."""
116
113
  from django.db.models import Q
@@ -366,11 +366,6 @@ def get_artifact_kwargs_from_data(
366
366
  else:
367
367
  storage = default_storage
368
368
 
369
- # for now comment out this error to allow creating new versions of stores
370
- # in the default folder (.lamindb)
371
- # if key is not None and key.startswith(AUTO_KEY_PREFIX):
372
- # raise ValueError(f"Key cannot start with {AUTO_KEY_PREFIX}")
373
-
374
369
  log_storage_hint(
375
370
  check_path_in_storage=check_path_in_storage,
376
371
  storage=storage,
@@ -542,10 +537,10 @@ def __init__(artifact: Artifact, *args, **kwargs):
542
537
  else VisibilityChoice.default.value
543
538
  )
544
539
  format = kwargs.pop("format") if "format" in kwargs else None
540
+ _is_internal_call = kwargs.pop("_is_internal_call", False)
545
541
  skip_check_exists = (
546
542
  kwargs.pop("skip_check_exists") if "skip_check_exists" in kwargs else False
547
543
  )
548
- _uid = kwargs.pop("_uid", None)
549
544
  if "default_storage" in kwargs:
550
545
  default_storage = kwargs.pop("default_storage")
551
546
  else:
@@ -561,9 +556,6 @@ def __init__(artifact: Artifact, *args, **kwargs):
561
556
  if "is_new_version_of" in kwargs:
562
557
  logger.warning("`is_new_version_of` will be removed soon, please use `revises`")
563
558
  revises = kwargs.pop("is_new_version_of")
564
- assert not ( # noqa: S101
565
- revises is not None and _uid is not None
566
- ), "Can not init with both `revises` and `_uid`"
567
559
  if not len(kwargs) == 0:
568
560
  raise ValueError(
569
561
  "Only data, key, run, description, version, revises, visibility"
@@ -579,15 +571,29 @@ def __init__(artifact: Artifact, *args, **kwargs):
579
571
  raise ValueError(
580
572
  f"`key` is {key}, but `revises.key` is '{revises.key}'\n\n Either do *not* pass `key`.\n\n{note}"
581
573
  )
582
- if _uid is not None:
583
- provisional_uid, revises = _uid, None
584
- else:
585
- provisional_uid, revises = create_uid(revises=revises, version=version)
586
574
  if revises is not None:
587
575
  if not isinstance(revises, Artifact):
588
576
  raise TypeError("`revises` has to be of type `Artifact`")
589
577
  if description is None:
590
578
  description = revises.description
579
+ if key is not None and AUTO_KEY_PREFIX in key:
580
+ raise ValueError(
581
+ f"Do not pass key that contains a managed storage path in `{AUTO_KEY_PREFIX}`"
582
+ )
583
+ # below is for internal calls that require defining the storage location
584
+ # ahead of constructing the Artifact
585
+ if isinstance(data, (str, Path)) and AUTO_KEY_PREFIX in str(data):
586
+ if _is_internal_call:
587
+ is_automanaged_path = True
588
+ user_provided_key = key
589
+ key = None
590
+ else:
591
+ raise ValueError(
592
+ f"Do not pass path inside the `{AUTO_KEY_PREFIX}` directory."
593
+ )
594
+ else:
595
+ is_automanaged_path = False
596
+ provisional_uid, revises = create_uid(revises=revises, version=version)
591
597
  kwargs_or_artifact, privates = get_artifact_kwargs_from_data(
592
598
  data=data,
593
599
  key=key,
@@ -615,16 +621,29 @@ def __init__(artifact: Artifact, *args, **kwargs):
615
621
  else:
616
622
  kwargs = kwargs_or_artifact
617
623
 
624
+ if data is not None:
625
+ artifact._local_filepath = privates["local_filepath"]
626
+ artifact._cloud_filepath = privates["cloud_filepath"]
627
+ artifact._memory_rep = privates["memory_rep"]
628
+ artifact._to_store = not privates["check_path_in_storage"]
629
+
630
+ if is_automanaged_path and _is_internal_call:
631
+ kwargs["_key_is_virtual"] = True
632
+ assert AUTO_KEY_PREFIX in kwargs["key"] # noqa: S101
633
+ uid = kwargs["key"].replace(AUTO_KEY_PREFIX, "").replace(kwargs["suffix"], "")
634
+ kwargs["key"] = user_provided_key
635
+ if revises is not None:
636
+ assert uid.startswith(revises.stem_uid) # noqa: S101
637
+ if len(uid) == 16:
638
+ if revises is None:
639
+ uid += "0000"
640
+ else:
641
+ uid, revises = create_uid(revises=revises, version=version)
642
+ kwargs["uid"] = uid
643
+
618
644
  # only set key now so that we don't do a look-up on it in case revises is passed
619
645
  if revises is not None:
620
646
  kwargs["key"] = revises.key
621
- # in case we have a new version of a folder with a different hash, print a
622
- # warning that the old version can't be recovered
623
- if revises is not None and revises.n_objects is not None and revises.n_objects > 1:
624
- logger.warning(
625
- f"artifact version {version} will _update_ the state of folder {revises.path} - "
626
- "to _retain_ the old state by duplicating the entire folder, do _not_ pass `revises`"
627
- )
628
647
 
629
648
  kwargs["type"] = type
630
649
  kwargs["version"] = version
@@ -643,12 +662,6 @@ def __init__(artifact: Artifact, *args, **kwargs):
643
662
 
644
663
  add_transform_to_kwargs(kwargs, kwargs["run"])
645
664
 
646
- if data is not None:
647
- artifact._local_filepath = privates["local_filepath"]
648
- artifact._cloud_filepath = privates["cloud_filepath"]
649
- artifact._memory_rep = privates["memory_rep"]
650
- artifact._to_store = not privates["check_path_in_storage"]
651
-
652
665
  super(Artifact, artifact).__init__(**kwargs)
653
666
 
654
667
 
@@ -943,10 +956,9 @@ def open(
943
956
  if self.hash != hash:
944
957
  from ._record import init_self_from_db
945
958
 
946
- logger.warning(
947
- "The hash of the tiledbsoma store has changed, creating a new version of the artifact."
948
- )
949
- new_version = Artifact(filepath, revises=self).save()
959
+ new_version = Artifact(
960
+ filepath, revises=self, _is_internal_call=True
961
+ ).save()
950
962
  init_self_from_db(self, new_version)
951
963
 
952
964
  if localpath != filepath and localpath.exists():
@@ -1174,3 +1186,4 @@ Artifact._delete_skip_storage = _delete_skip_storage
1174
1186
  Artifact._save_skip_storage = _save_skip_storage
1175
1187
  Artifact.path = path
1176
1188
  Artifact.backed = backed
1189
+ Artifact.view_lineage = HasFeatures.view_lineage
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import TYPE_CHECKING, Iterable, Literal
3
+ from typing import TYPE_CHECKING, Literal
4
4
 
5
5
  import lamindb_setup as ln_setup
6
6
  import numpy as np
@@ -79,6 +79,19 @@ def _check_organism_db(organism: Record, using_key: str | None):
79
79
  )
80
80
 
81
81
 
82
+ def _concat_lists(values: ListLike) -> list[str]:
83
+ """Concatenate a list of lists of strings into a single list."""
84
+ if len(values) > 0 and isinstance(values, (list, pd.Series)):
85
+ try:
86
+ if isinstance(values[0], list):
87
+ if isinstance(values, pd.Series):
88
+ values = values.tolist()
89
+ values = sum([v for v in values if isinstance(v, list)], [])
90
+ except KeyError:
91
+ pass
92
+ return values
93
+
94
+
82
95
  def _inspect(
83
96
  cls,
84
97
  values: ListLike,
@@ -94,6 +107,7 @@ def _inspect(
94
107
 
95
108
  if isinstance(values, str):
96
109
  values = [values]
110
+ values = _concat_lists(values)
97
111
 
98
112
  field = get_name_field(cls, field=field)
99
113
  queryset = _queryset(cls, using_key)
@@ -184,6 +198,7 @@ def _validate(
184
198
  return_str = True if isinstance(values, str) else False
185
199
  if isinstance(values, str):
186
200
  values = [values]
201
+ values = _concat_lists(values)
187
202
 
188
203
  field = get_name_field(cls, field=field)
189
204
 
@@ -229,7 +244,7 @@ def _validate(
229
244
  @doc_args(CanValidate.standardize.__doc__)
230
245
  def standardize(
231
246
  cls,
232
- values: Iterable,
247
+ values: ListLike,
233
248
  field: str | StrField | None = None,
234
249
  *,
235
250
  return_field: str = None,
@@ -295,7 +310,7 @@ def remove_synonym(self, synonym: str | ListLike):
295
310
 
296
311
  def _standardize(
297
312
  cls,
298
- values: Iterable,
313
+ values: ListLike,
299
314
  field: str | StrField | None = None,
300
315
  *,
301
316
  return_field: str = None,
@@ -315,6 +330,7 @@ def _standardize(
315
330
  return_str = True if isinstance(values, str) else False
316
331
  if isinstance(values, str):
317
332
  values = [values]
333
+ values = _concat_lists(values)
318
334
 
319
335
  field = get_name_field(cls, field=field)
320
336
  return_field = get_name_field(
@@ -416,7 +432,7 @@ def _standardize(
416
432
 
417
433
 
418
434
  def _add_or_remove_synonyms(
419
- synonym: str | Iterable,
435
+ synonym: str | ListLike,
420
436
  record: Record,
421
437
  action: Literal["add", "remove"],
422
438
  force: bool = False,
@@ -144,6 +144,7 @@ class DataFrameCurator(BaseCurator):
144
144
  organism: str | None = None,
145
145
  sources: dict[str, Record] | None = None,
146
146
  exclude: dict | None = None,
147
+ check_valid_keys: bool = True,
147
148
  ) -> None:
148
149
  from lamindb.core._settings import settings
149
150
 
@@ -163,6 +164,8 @@ class DataFrameCurator(BaseCurator):
163
164
  exclude = {}
164
165
  self._exclude = exclude
165
166
  self._non_validated = None
167
+ if check_valid_keys:
168
+ self._check_valid_keys()
166
169
  self._save_columns()
167
170
 
168
171
  @property
@@ -191,14 +194,25 @@ class DataFrameCurator(BaseCurator):
191
194
  using_key=using_key or self._using_key,
192
195
  )
193
196
 
197
+ def _check_valid_keys(self, extra: set = None) -> None:
198
+ if extra is None:
199
+ extra = set()
200
+ for name, d in {
201
+ "categoricals": self._fields,
202
+ "sources": self._sources,
203
+ "exclude": self._exclude,
204
+ }.items():
205
+ if not isinstance(d, dict):
206
+ raise TypeError(f"{name} must be a dictionary!")
207
+ valid_keys = set(self._df.columns) | {"columns"} | extra
208
+ nonval_keys = [key for key in d.keys() if key not in valid_keys]
209
+ if len(nonval_keys) > 0:
210
+ raise ValueError(
211
+ f"the following keys passed to {name} are not allowed: {nonval_keys}"
212
+ )
213
+
194
214
  def _save_columns(self, validated_only: bool = True, **kwargs) -> None:
195
215
  """Save column name records."""
196
- missing_columns = set(self.fields.keys()) - set(self._df.columns)
197
- if missing_columns:
198
- raise ValueError(
199
- f"Columns {missing_columns} are not found in the data object!"
200
- )
201
-
202
216
  # Always save features specified as the fields keys
203
217
  update_registry(
204
218
  values=list(self.fields.keys()),
@@ -426,8 +440,10 @@ class AnnDataCurator(DataFrameCurator):
426
440
  organism=organism,
427
441
  sources=sources,
428
442
  exclude=exclude,
443
+ check_valid_keys=False,
429
444
  )
430
445
  self._obs_fields = categoricals
446
+ self._check_valid_keys(extra={"var_index"})
431
447
 
432
448
  @property
433
449
  def var_index(self) -> FieldAttr:
@@ -633,6 +649,7 @@ class MuDataCurator:
633
649
  verbosity=verbosity,
634
650
  sources=self._sources.get(modality),
635
651
  exclude=self._exclude.get(modality),
652
+ check_valid_keys=False,
636
653
  **self._kwargs,
637
654
  )
638
655
  for modality in self._modalities