lamindb 0.71.2__tar.gz → 0.71.3__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 (394) hide show
  1. {lamindb-0.71.2 → lamindb-0.71.3}/.github/workflows/build.yml +1 -1
  2. {lamindb-0.71.2 → lamindb-0.71.3}/PKG-INFO +7 -6
  3. {lamindb-0.71.2 → lamindb-0.71.3}/docs/bio-registries.ipynb +108 -122
  4. {lamindb-0.71.2 → lamindb-0.71.3}/docs/changelog.md +11 -0
  5. {lamindb-0.71.2 → lamindb-0.71.3}/docs/introduction.ipynb +2 -2
  6. {lamindb-0.71.2 → lamindb-0.71.3}/docs/meta.ipynb +2 -12
  7. {lamindb-0.71.2 → lamindb-0.71.3}/docs/signup-login.md +1 -1
  8. {lamindb-0.71.2 → lamindb-0.71.3}/docs/transfer.ipynb +1 -3
  9. {lamindb-0.71.2 → lamindb-0.71.3}/docs/tutorial.ipynb +1 -1
  10. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/__init__.py +1 -1
  11. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_artifact.py +19 -9
  12. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_can_validate.py +9 -3
  13. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_collection.py +3 -3
  14. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_from_values.py +30 -8
  15. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_registry.py +52 -94
  16. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_save.py +28 -11
  17. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_data.py +26 -3
  18. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_feature_manager.py +74 -51
  19. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_label_manager.py +41 -29
  20. {lamindb-0.71.2 → lamindb-0.71.3}/pyproject.toml +6 -5
  21. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/bionty/__init__.py +2 -2
  22. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/pyproject.toml +1 -1
  23. lamindb-0.71.3/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  24. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/lamin_cli/_get.py +11 -6
  25. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_get.py +11 -1
  26. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/changelog.md +6 -1
  27. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +22 -1
  28. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  29. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +78 -61
  30. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_delete.py +6 -46
  31. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_init_instance.py +18 -17
  32. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +4 -0
  33. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +5 -3
  34. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +3 -12
  35. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +10 -1
  36. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/hashing.py +23 -20
  37. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-prod/conftest.py +2 -2
  38. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/docs/changelog.md +4 -0
  39. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
  40. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/models.py +32 -19
  41. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  42. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/models.py +5 -19
  43. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_from_values.py +14 -5
  44. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_queryset.py +3 -3
  45. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_registry.py +5 -5
  46. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_save.py +13 -0
  47. lamindb-0.71.3/tests/test_search.py +62 -0
  48. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_transfer.py +4 -4
  49. lamindb-0.71.2/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  50. {lamindb-0.71.2 → lamindb-0.71.3}/.github/workflows/latest-changes.jinja2 +0 -0
  51. {lamindb-0.71.2 → lamindb-0.71.3}/.github/workflows/latest-changes.yml +0 -0
  52. {lamindb-0.71.2 → lamindb-0.71.3}/.gitignore +0 -0
  53. {lamindb-0.71.2 → lamindb-0.71.3}/.gitmodules +0 -0
  54. {lamindb-0.71.2 → lamindb-0.71.3}/.pre-commit-config.yaml +0 -0
  55. {lamindb-0.71.2 → lamindb-0.71.3}/LICENSE +0 -0
  56. {lamindb-0.71.2 → lamindb-0.71.3}/README.md +0 -0
  57. {lamindb-0.71.2 → lamindb-0.71.3}/docs/annotate-for-developers.ipynb +0 -0
  58. {lamindb-0.71.2 → lamindb-0.71.3}/docs/annotate.ipynb +0 -0
  59. {lamindb-0.71.2 → lamindb-0.71.3}/docs/bionty-base.md +0 -0
  60. {lamindb-0.71.2 → lamindb-0.71.3}/docs/bionty.md +0 -0
  61. {lamindb-0.71.2 → lamindb-0.71.3}/docs/can-validate.ipynb +0 -0
  62. {lamindb-0.71.2 → lamindb-0.71.3}/docs/data.ipynb +0 -0
  63. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/acid.ipynb +0 -0
  64. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/delete.ipynb +0 -0
  65. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/idempotency.ipynb +0 -0
  66. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/import-schema.ipynb +0 -0
  67. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/keep-artifacts-local.ipynb +0 -0
  68. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/key.ipynb +0 -0
  69. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/reference-field.ipynb +0 -0
  70. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/setup.ipynb +0 -0
  71. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/test_notebooks.py +0 -0
  72. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/track-run-inputs.ipynb +0 -0
  73. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq/visibility.ipynb +0 -0
  74. {lamindb-0.71.2 → lamindb-0.71.3}/docs/faq.md +0 -0
  75. {lamindb-0.71.2 → lamindb-0.71.3}/docs/features-lamindb.md +0 -0
  76. {lamindb-0.71.2 → lamindb-0.71.3}/docs/features-laminhub.md +0 -0
  77. {lamindb-0.71.2 → lamindb-0.71.3}/docs/guide.md +0 -0
  78. {lamindb-0.71.2 → lamindb-0.71.3}/docs/index.md +0 -0
  79. {lamindb-0.71.2 → lamindb-0.71.3}/docs/installation.md +0 -0
  80. {lamindb-0.71.2 → lamindb-0.71.3}/docs/lamin-utils.md +0 -0
  81. {lamindb-0.71.2 → lamindb-0.71.3}/docs/lamindb.md +0 -0
  82. {lamindb-0.71.2 → lamindb-0.71.3}/docs/nbproject.md +0 -0
  83. {lamindb-0.71.2 → lamindb-0.71.3}/docs/query-search.md +0 -0
  84. {lamindb-0.71.2 → lamindb-0.71.3}/docs/readfcs.md +0 -0
  85. {lamindb-0.71.2 → lamindb-0.71.3}/docs/reference.md +0 -0
  86. {lamindb-0.71.2 → lamindb-0.71.3}/docs/schemas.ipynb +0 -0
  87. {lamindb-0.71.2 → lamindb-0.71.3}/docs/setup.ipynb +0 -0
  88. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/add-replace-stage.ipynb +0 -0
  89. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/anndata-accessor.ipynb +0 -0
  90. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  91. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/test-files/iris.csv +0 -0
  92. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/test-files/iris.data +0 -0
  93. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/test-files/new_iris.csv +0 -0
  94. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/test_notebooks.py +0 -0
  95. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  96. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/upload.ipynb +0 -0
  97. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage/vitessce.ipynb +0 -0
  98. {lamindb-0.71.2 → lamindb-0.71.3}/docs/storage.md +0 -0
  99. {lamindb-0.71.2 → lamindb-0.71.3}/docs/test_notebooks.py +0 -0
  100. {lamindb-0.71.2 → lamindb-0.71.3}/docs/track.ipynb +0 -0
  101. {lamindb-0.71.2 → lamindb-0.71.3}/docs/tutorial2.ipynb +0 -0
  102. {lamindb-0.71.2 → lamindb-0.71.3}/docs/wetlab.md +0 -0
  103. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_annotate.py +0 -0
  104. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_feature.py +0 -0
  105. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_feature_set.py +0 -0
  106. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_filter.py +0 -0
  107. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_finish.py +0 -0
  108. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_is_versioned.py +0 -0
  109. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_parents.py +0 -0
  110. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_query_manager.py +0 -0
  111. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_query_set.py +0 -0
  112. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_run.py +0 -0
  113. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_storage.py +0 -0
  114. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_transform.py +0 -0
  115. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_ulabel.py +0 -0
  116. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_utils.py +0 -0
  117. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/_view.py +0 -0
  118. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/__init__.py +0 -0
  119. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_mapped_collection.py +0 -0
  120. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_run_context.py +0 -0
  121. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_settings.py +0 -0
  122. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_sync_git.py +0 -0
  123. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_track_environment.py +0 -0
  124. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/_transform_settings.py +0 -0
  125. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/datasets/__init__.py +0 -0
  126. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/datasets/_core.py +0 -0
  127. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/datasets/_fake.py +0 -0
  128. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/exceptions.py +0 -0
  129. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/fields.py +0 -0
  130. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/__init__.py +0 -0
  131. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/_anndata_sizes.py +0 -0
  132. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/_backed_access.py +0 -0
  133. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/_valid_suffixes.py +0 -0
  134. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/_zarr.py +0 -0
  135. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/objects.py +0 -0
  136. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/storage/paths.py +0 -0
  137. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/types.py +0 -0
  138. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/core/versioning.py +0 -0
  139. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/integrations/__init__.py +0 -0
  140. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/integrations/_vitessce.py +0 -0
  141. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/setup/__init__.py +0 -0
  142. {lamindb-0.71.2 → lamindb-0.71.3}/lamindb/setup/core/__init__.py +0 -0
  143. {lamindb-0.71.2 → lamindb-0.71.3}/noxfile.py +0 -0
  144. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/.github/workflows/build.yml +0 -0
  145. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
  146. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
  147. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/.gitignore +0 -0
  148. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/.pre-commit-config.yaml +0 -0
  149. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/LICENSE +0 -0
  150. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/README.md +0 -0
  151. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/bionty/core/__init__.py +0 -0
  152. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/docs/changelog.md +0 -0
  153. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/docs/index.md +0 -0
  154. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/docs/reference.md +0 -0
  155. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/lamin-project.yaml +0 -0
  156. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/noxfile.py +0 -0
  157. {lamindb-0.71.2 → lamindb-0.71.3}/sub/bionty/tests/test_notebooks.py +0 -0
  158. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/.gitignore +0 -0
  159. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  160. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/README.md +0 -0
  161. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  162. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  163. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  164. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/lamin_cli/_save.py +0 -0
  165. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/pyproject.toml +0 -0
  166. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/conftest.py +0 -0
  167. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  168. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  169. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  170. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  171. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  172. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  173. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_cli.py +0 -0
  174. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_migrate.py +0 -0
  175. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  176. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_save_files.py +0 -0
  177. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
  178. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  179. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  180. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  181. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  182. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/.gitignore +0 -0
  183. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  184. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/LICENSE +0 -0
  185. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/README.md +0 -0
  186. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  187. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  188. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  189. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  190. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  191. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  192. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  193. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  194. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  195. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  196. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  197. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  198. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  199. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  200. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  201. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  202. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  203. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/index.md +0 -0
  204. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/notebooks.md +0 -0
  205. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/docs/reference.md +0 -0
  206. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  207. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  208. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  209. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  210. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  211. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  212. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  213. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  214. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  215. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  216. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  217. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  218. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  219. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  220. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  221. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  222. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  223. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  224. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  225. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  226. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  227. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  228. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  229. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  230. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  231. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  232. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  233. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  234. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  235. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
  236. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/noxfile.py +0 -0
  237. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/pyproject.toml +0 -0
  238. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  239. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  240. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  241. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  242. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  243. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  244. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  245. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  246. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
  247. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  248. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  249. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  250. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  251. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  252. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  253. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  254. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  255. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  256. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  257. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  258. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/.gitignore +0 -0
  259. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
  260. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/LICENSE +0 -0
  261. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/README.md +0 -0
  262. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/docs/index.md +0 -0
  263. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/docs/reference.md +0 -0
  264. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  265. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
  266. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
  267. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
  268. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
  269. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
  270. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -0
  271. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -0
  272. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -0
  273. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -0
  274. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -0
  275. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -0
  276. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -0
  277. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -0
  278. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -0
  279. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -0
  280. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -0
  281. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -0
  282. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -0
  283. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -0
  284. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -0
  285. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -0
  286. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -0
  287. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -0
  288. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -0
  289. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -0
  290. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -0
  291. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -0
  292. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -0
  293. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  294. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  295. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/noxfile.py +0 -0
  296. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/pyproject.toml +0 -0
  297. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  298. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  299. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  300. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  301. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/.gitignore +0 -0
  302. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  303. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/CHANGELOG.md +0 -0
  304. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/LICENSE +0 -0
  305. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/README.md +0 -0
  306. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  307. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
  308. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
  309. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
  310. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
  311. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
  312. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
  313. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
  314. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
  315. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
  316. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
  317. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
  318. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
  319. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
  320. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
  321. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
  322. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
  323. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
  324. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
  325. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
  326. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
  327. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
  328. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
  329. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
  330. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
  331. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
  332. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
  333. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -0
  334. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -0
  335. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -0
  336. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -0
  337. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -0
  338. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +0 -0
  339. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -0
  340. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -0
  341. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -0
  342. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +0 -0
  343. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +0 -0
  344. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
  345. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
  346. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  347. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  348. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  349. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  350. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  351. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  352. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  353. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  354. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  355. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  356. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/types.py +0 -0
  357. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/lnschema_core/users.py +0 -0
  358. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/noxfile.py +0 -0
  359. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/pyproject.toml +0 -0
  360. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/tests/test_integrity.py +0 -0
  361. {lamindb-0.71.2 → lamindb-0.71.3}/sub/lnschema-core/tests/test_types.py +0 -0
  362. {lamindb-0.71.2 → lamindb-0.71.3}/tests/conftest.py +0 -0
  363. {lamindb-0.71.2 → lamindb-0.71.3}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
  364. {lamindb-0.71.2 → lamindb-0.71.3}/tests/notebooks/no-title.ipynb +0 -0
  365. {lamindb-0.71.2 → lamindb-0.71.3}/tests/notebooks/not-initialized.ipynb +0 -0
  366. {lamindb-0.71.2 → lamindb-0.71.3}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  367. {lamindb-0.71.2 → lamindb-0.71.3}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  368. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_annotate.py +0 -0
  369. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_artifact.py +0 -0
  370. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_artifact_folders.py +0 -0
  371. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_cache.py +0 -0
  372. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_can_validate.py +0 -0
  373. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_collection.py +0 -0
  374. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_data.py +0 -0
  375. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_db.py +0 -0
  376. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_delete.py +0 -0
  377. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_feature.py +0 -0
  378. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_feature_manager.py +0 -0
  379. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_feature_set.py +0 -0
  380. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_label_manager.py +0 -0
  381. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_load.py +0 -0
  382. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_manager.py +0 -0
  383. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_notebooks.py +0 -0
  384. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_parents.py +0 -0
  385. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_run.py +0 -0
  386. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_run_context.py +0 -0
  387. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_settings.py +0 -0
  388. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_storage.py +0 -0
  389. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_transform.py +0 -0
  390. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_uid.py +0 -0
  391. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_ulabel.py +0 -0
  392. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_versioning.py +0 -0
  393. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_view.py +0 -0
  394. {lamindb-0.71.2 → lamindb-0.71.3}/tests/test_visibility.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  - "faq"
23
23
  - "storage"
24
24
  - "cli"
25
- timeout-minutes: 10
25
+ timeout-minutes: 6
26
26
 
27
27
  steps:
28
28
  - uses: actions/checkout@v4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.71.2
3
+ Version: 0.71.3
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.66.4
13
- Requires-Dist: lamindb_setup==0.71.3
12
+ Requires-Dist: lnschema_core==0.66.5
13
+ Requires-Dist: lamindb_setup==0.71.4
14
14
  Requires-Dist: lamin_utils==0.13.2
15
- Requires-Dist: lamin_cli==0.13.1
15
+ Requires-Dist: lamin_cli==0.13.2
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -23,8 +23,9 @@ Requires-Dist: fsspec
23
23
  Requires-Dist: pandas
24
24
  Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
26
+ Requires-Dist: psutil
26
27
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
27
- Requires-Dist: bionty==0.42.9 ; extra == "bionty"
28
+ Requires-Dist: bionty==0.42.11 ; extra == "bionty"
28
29
  Requires-Dist: pandas<2 ; extra == "dev"
29
30
  Requires-Dist: pre-commit ; extra == "dev"
30
31
  Requires-Dist: nox ; extra == "dev"
@@ -37,7 +38,7 @@ Requires-Dist: faker-biology ; extra == "dev"
37
38
  Requires-Dist: django-schema-graph ; extra == "erdiagram"
38
39
  Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
39
40
  Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
40
- Requires-Dist: nbproject==0.10.2 ; extra == "jupyter"
41
+ Requires-Dist: nbproject==0.10.3 ; extra == "jupyter"
41
42
  Requires-Dist: nbstripout==0.6.1 ; extra == "jupyter"
42
43
  Requires-Dist: nbconvert ; extra == "jupyter"
43
44
  Requires-Dist: zarr>=2.16.0 ; extra == "zarr"
@@ -149,7 +149,11 @@
149
149
  {
150
150
  "cell_type": "code",
151
151
  "execution_count": null,
152
- "metadata": {},
152
+ "metadata": {
153
+ "tags": [
154
+ "hide-output"
155
+ ]
156
+ },
153
157
  "outputs": [],
154
158
  "source": [
155
159
  "public.search(\"gamma delta T cell\").head(3)"
@@ -166,7 +170,11 @@
166
170
  {
167
171
  "cell_type": "code",
168
172
  "execution_count": null,
169
- "metadata": {},
173
+ "metadata": {
174
+ "tags": [
175
+ "hide-output"
176
+ ]
177
+ },
170
178
  "outputs": [],
171
179
  "source": [
172
180
  "lookup = public.lookup()\n",
@@ -192,18 +200,14 @@
192
200
  {
193
201
  "cell_type": "code",
194
202
  "execution_count": null,
195
- "metadata": {},
196
- "outputs": [],
197
- "source": [
198
- "gdt_cell = bt.CellType(lookup.gamma_delta_t_cell)"
199
- ]
200
- },
201
- {
202
- "cell_type": "code",
203
- "execution_count": null,
204
- "metadata": {},
203
+ "metadata": {
204
+ "tags": [
205
+ "hide-output"
206
+ ]
207
+ },
205
208
  "outputs": [],
206
209
  "source": [
210
+ "gdt_cell = bt.CellType(lookup.gamma_delta_t_cell)\n",
207
211
  "gdt_cell"
208
212
  ]
209
213
  },
@@ -217,7 +221,11 @@
217
221
  {
218
222
  "cell_type": "code",
219
223
  "execution_count": null,
220
- "metadata": {},
224
+ "metadata": {
225
+ "tags": [
226
+ "hide-output"
227
+ ]
228
+ },
221
229
  "outputs": [],
222
230
  "source": [
223
231
  "bt.CellType.from_public(ontology_id=\"CL:0000798\")"
@@ -284,7 +292,11 @@
284
292
  {
285
293
  "cell_type": "code",
286
294
  "execution_count": null,
287
- "metadata": {},
295
+ "metadata": {
296
+ "tags": [
297
+ "hide-output"
298
+ ]
299
+ },
288
300
  "outputs": [],
289
301
  "source": [
290
302
  "gdt_cell.parents.df()"
@@ -339,7 +351,7 @@
339
351
  "source": [
340
352
  "When accessing data sources, one often encounters bulk references to entities that might be corrupted or standardized using different standardization schemes.\n",
341
353
  "\n",
342
- "Let's consider an example based on an `AnnData` object:"
354
+ "Let's consider an example based on an `AnnData` object, in the `cell_type` annotations of this `AnnData` object, we find 4 references to cell types:"
343
355
  ]
344
356
  },
345
357
  {
@@ -352,22 +364,7 @@
352
364
  },
353
365
  "outputs": [],
354
366
  "source": [
355
- "adata = ln.core.datasets.anndata_with_obs()"
356
- ]
357
- },
358
- {
359
- "cell_type": "markdown",
360
- "metadata": {},
361
- "source": [
362
- "In the `cell_type` annotations of this `AnnData` object, we find 4 references to cell types:"
363
- ]
364
- },
365
- {
366
- "cell_type": "code",
367
- "execution_count": null,
368
- "metadata": {},
369
- "outputs": [],
370
- "source": [
367
+ "adata = ln.core.datasets.anndata_with_obs()\n",
371
368
  "adata.obs.cell_type.value_counts()"
372
369
  ]
373
370
  },
@@ -383,7 +380,11 @@
383
380
  {
384
381
  "cell_type": "code",
385
382
  "execution_count": null,
386
- "metadata": {},
383
+ "metadata": {
384
+ "tags": [
385
+ "hide-output"
386
+ ]
387
+ },
387
388
  "outputs": [],
388
389
  "source": [
389
390
  "cell_types = bt.CellType.from_values(adata.obs.cell_type)\n",
@@ -444,7 +445,11 @@
444
445
  {
445
446
  "cell_type": "code",
446
447
  "execution_count": null,
447
- "metadata": {},
448
+ "metadata": {
449
+ "tags": [
450
+ "hide-output"
451
+ ]
452
+ },
448
453
  "outputs": [],
449
454
  "source": [
450
455
  "adata.obs.cell_type_id.unique().tolist()"
@@ -453,7 +458,11 @@
453
458
  {
454
459
  "cell_type": "code",
455
460
  "execution_count": null,
456
- "metadata": {},
461
+ "metadata": {
462
+ "tags": [
463
+ "hide-output"
464
+ ]
465
+ },
457
466
  "outputs": [],
458
467
  "source": [
459
468
  "bt.CellType.from_values(adata.obs.cell_type_id, field=bt.CellType.ontology_id)"
@@ -519,10 +528,14 @@
519
528
  {
520
529
  "cell_type": "code",
521
530
  "execution_count": null,
522
- "metadata": {},
531
+ "metadata": {
532
+ "tags": [
533
+ "hide-output"
534
+ ]
535
+ },
523
536
  "outputs": [],
524
537
  "source": [
525
- "bt.CellType.search(\"gamma delta T cell\").head(2)"
538
+ "bt.CellType.search(\"gamma delta T cell\").df().head(2)"
526
539
  ]
527
540
  },
528
541
  {
@@ -535,7 +548,11 @@
535
548
  {
536
549
  "cell_type": "code",
537
550
  "execution_count": null,
538
- "metadata": {},
551
+ "metadata": {
552
+ "tags": [
553
+ "hide-output"
554
+ ]
555
+ },
539
556
  "outputs": [],
540
557
  "source": [
541
558
  "cell_types = bt.CellType.lookup()\n",
@@ -562,7 +579,11 @@
562
579
  {
563
580
  "cell_type": "code",
564
581
  "execution_count": null,
565
- "metadata": {},
582
+ "metadata": {
583
+ "tags": [
584
+ "hide-output"
585
+ ]
586
+ },
566
587
  "outputs": [],
567
588
  "source": [
568
589
  "bt.CellType.validate([\"HSC\", \"blood forming stem cell\"])"
@@ -580,7 +601,11 @@
580
601
  {
581
602
  "cell_type": "code",
582
603
  "execution_count": null,
583
- "metadata": {},
604
+ "metadata": {
605
+ "tags": [
606
+ "hide-output"
607
+ ]
608
+ },
584
609
  "outputs": [],
585
610
  "source": [
586
611
  "bt.CellType.standardize([\"HSC\", \"blood forming stem cell\"])"
@@ -596,7 +621,11 @@
596
621
  {
597
622
  "cell_type": "code",
598
623
  "execution_count": null,
599
- "metadata": {},
624
+ "metadata": {
625
+ "tags": [
626
+ "hide-output"
627
+ ]
628
+ },
600
629
  "outputs": [],
601
630
  "source": [
602
631
  "bt.CellType.from_values([\"HSC\", \"blood forming stem cell\"])"
@@ -630,7 +659,11 @@
630
659
  {
631
660
  "cell_type": "code",
632
661
  "execution_count": null,
633
- "metadata": {},
662
+ "metadata": {
663
+ "tags": [
664
+ "hide-output"
665
+ ]
666
+ },
634
667
  "outputs": [],
635
668
  "source": [
636
669
  "bt.CellType.standardize([\"HSCs\"])"
@@ -662,7 +695,11 @@
662
695
  {
663
696
  "cell_type": "code",
664
697
  "execution_count": null,
665
- "metadata": {},
698
+ "metadata": {
699
+ "tags": [
700
+ "hide-output"
701
+ ]
702
+ },
666
703
  "outputs": [],
667
704
  "source": [
668
705
  "cell_types = bt.CellType.lookup(\"abbr\")\n",
@@ -720,13 +757,6 @@
720
757
  "bt.Gene.validate([\"TCF7\", \"ABC1\"], organism=\"human\")"
721
758
  ]
722
759
  },
723
- {
724
- "cell_type": "markdown",
725
- "metadata": {},
726
- "source": [
727
- "You can also pass organism for validating features upon registering data, e.g., in `ln.Artifact.from_anndata(..., field=bionty.Gene.ensembl_gene_id, organism=...)`."
728
- ]
729
- },
730
760
  {
731
761
  "cell_type": "markdown",
732
762
  "metadata": {},
@@ -792,7 +822,11 @@
792
822
  {
793
823
  "cell_type": "code",
794
824
  "execution_count": null,
795
- "metadata": {},
825
+ "metadata": {
826
+ "tags": [
827
+ "hide-output"
828
+ ]
829
+ },
796
830
  "outputs": [],
797
831
  "source": [
798
832
  "hepatocyte = bt.CellType.filter(name=\"hepatocyte\").one()\n",
@@ -808,24 +842,6 @@
808
842
  "By default, records are created from the `\"currently_used\"` public sources which are configured during the instance initialization, e.g.:"
809
843
  ]
810
844
  },
811
- {
812
- "cell_type": "code",
813
- "execution_count": null,
814
- "metadata": {},
815
- "outputs": [],
816
- "source": [
817
- "bt.Phenotype.public()"
818
- ]
819
- },
820
- {
821
- "cell_type": "markdown",
822
- "metadata": {},
823
- "source": [
824
- "Sometimes, the default source doesn't contain the ontology term you are looking for.\n",
825
- "\n",
826
- "You can then specify to create a record from a non-default source. For instance, instead of using untyped labels for iris organisms as {doc}`/tutorial2`, we can use the `ncbitaxon` ontology:"
827
- ]
828
- },
829
845
  {
830
846
  "cell_type": "code",
831
847
  "execution_count": null,
@@ -836,43 +852,7 @@
836
852
  },
837
853
  "outputs": [],
838
854
  "source": [
839
- "public_source = bt.PublicSource.filter(entity=\"Organism\", source=\"ncbitaxon\").one()\n",
840
- "iris_setosa = bt.Organism.from_public(name=\"iris setosa\", public_source=public_source)\n",
841
- "iris_setosa.save()"
842
- ]
843
- },
844
- {
845
- "cell_type": "code",
846
- "execution_count": null,
847
- "metadata": {},
848
- "outputs": [],
849
- "source": [
850
- "iris_setosa"
851
- ]
852
- },
853
- {
854
- "cell_type": "code",
855
- "execution_count": null,
856
- "metadata": {},
857
- "outputs": [],
858
- "source": [
859
- "iris_setosa.public_source"
860
- ]
861
- },
862
- {
863
- "cell_type": "code",
864
- "execution_count": null,
865
- "metadata": {},
866
- "outputs": [],
867
- "source": [
868
- "iris_setosa.parents.df()"
869
- ]
870
- },
871
- {
872
- "cell_type": "markdown",
873
- "metadata": {},
874
- "source": [
875
- "Analogously, you can pass `public_source` to bulk-create records from a non-default source:"
855
+ "bt.Phenotype.public()"
876
856
  ]
877
857
  },
878
858
  {
@@ -885,28 +865,34 @@
885
865
  },
886
866
  "outputs": [],
887
867
  "source": [
888
- "records = bt.Organism.from_values(\n",
889
- " [\"iris setosa\", \"iris versicolor\", \"iris virginica\"], public_source=public_source\n",
890
- ")\n",
891
- "ln.save(records)"
892
- ]
893
- },
894
- {
895
- "cell_type": "code",
896
- "execution_count": null,
897
- "metadata": {},
898
- "outputs": [],
899
- "source": [
900
- "records"
868
+ "bt.Phenotype.sources(currently_used=True).df()"
901
869
  ]
902
870
  },
903
871
  {
904
- "cell_type": "code",
905
- "execution_count": null,
872
+ "cell_type": "markdown",
906
873
  "metadata": {},
907
- "outputs": [],
908
874
  "source": [
909
- "iris_setosa.parents.get(name=\"iris\").view_parents(with_children=True)"
875
+ "Sometimes, the default source doesn't contain the ontology term you are looking for.\n",
876
+ "\n",
877
+ "You can then specify to create a record from a non-default source. For instance, instead of using untyped labels for iris organisms as {doc}`/tutorial2`, we can use the `ncbitaxon` ontology:\n",
878
+ "\n",
879
+ "```python\n",
880
+ "\n",
881
+ "public_source = bt.PublicSource.filter(entity=\"Organism\", source=\"ncbitaxon\").one()\n",
882
+ "iris_setosa = bt.Organism.from_public(name=\"iris setosa\", public_source=public_source)\n",
883
+ "iris_setosa.save()\n",
884
+ "```\n",
885
+ "\n",
886
+ "Analogously, you can pass `public_source` to bulk-create records from a non-default source:\n",
887
+ "\n",
888
+ "```python\n",
889
+ "\n",
890
+ "records = bt.Organism.from_values(\n",
891
+ " [\"iris setosa\", \"iris versicolor\", \"iris virginica\"], public_source=public_source\n",
892
+ ")\n",
893
+ "ln.save(records)\n",
894
+ "iris_setosa.parents.get(name=\"iris\").view_parents(with_children=True)\n",
895
+ "```"
910
896
  ]
911
897
  },
912
898
  {
@@ -14,6 +14,17 @@ LaminDB implements "migration-based versioning". When upgrading your LaminDB ins
14
14
 
15
15
  ## 0.71
16
16
 
17
+ ### 0.71.3 {small}`2024-05-14`
18
+
19
+ - 🎨 Enable transfer when schema don't match [PR](https://github.com/laminlabs/lamindb/pull/1654) [@sunnyosun](https://github.com/sunnyosun)
20
+ - ✨ Get artifacts through the CLI [PR](https://github.com/laminlabs/lamindb/pull/1642) [@falexwolf](https://github.com/falexwolf)
21
+ - ⚡️ Improve the speed of describe [PR](https://github.com/laminlabs/lamindb/pull/1645) [@sunnyosun](https://github.com/sunnyosun)
22
+ - ⚡️ Parallel hashing of directories [PR](https://github.com/laminlabs/lamindb/pull/1652) [@Koncopd](https://github.com/Koncopd)
23
+ - ⚡️ Speed-up file hash [PR](https://github.com/laminlabs/lamindb/pull/1651) [@Koncopd](https://github.com/Koncopd)
24
+ - ♻️ Refactor search [PR](https://github.com/laminlabs/lamindb/pull/1646) [@falexwolf](https://github.com/falexwolf)
25
+ - ✨ Introduce bulk update [PR](https://github.com/laminlabs/lamindb/pull/1640) [@falexwolf](https://github.com/falexwolf)
26
+ - 🚸 No need to pass organism if validating on ids [PR](https://github.com/laminlabs/lamindb/pull/1639) [@sunnyosun](https://github.com/sunnyosun)
27
+
17
28
  ### 0.71.2 {small}`2024-05-07`
18
29
 
19
30
  - ✨ Enable passing parameters to `ln.track()` [PR](https://github.com/laminlabs/lamindb/pull/1637) [@falexwolf](https://github.com/falexwolf)
@@ -304,7 +304,7 @@
304
304
  "outputs": [],
305
305
  "source": [
306
306
  "# search in a registry\n",
307
- "ln.Transform.search(\"intro\")\n",
307
+ "ln.Transform.search(\"intro\").df()\n",
308
308
  "\n",
309
309
  "# look up records with auto-complete\n",
310
310
  "labels = ln.ULabel.lookup()"
@@ -768,7 +768,7 @@
768
768
  "source": [
769
769
  "### Data lineage across entire projects\n",
770
770
  "\n",
771
- "View the sequence of data transformations ({class}`~lamindb.Transform`) in a project (from [here](docs:project-flow), based on [Schmidt _et al._, 2022](https://pubmed.ncbi.nlm.nih.gov/35113687/)):\n",
771
+ "View the sequence of data transformations ({class}`~lamindb.Transform`) in a project (from [a use case](inv:docs#project-flow), based on [Schmidt _et al._, 2022](https://pubmed.ncbi.nlm.nih.gov/35113687/)):\n",
772
772
  "\n",
773
773
  "```python\n",
774
774
  "transform.view_parents()\n",
@@ -229,17 +229,7 @@
229
229
  "metadata": {},
230
230
  "outputs": [],
231
231
  "source": [
232
- "ln.Artifact.search(\"iris\")"
233
- ]
234
- },
235
- {
236
- "cell_type": "code",
237
- "execution_count": null,
238
- "id": "2aa66c4e",
239
- "metadata": {},
240
- "outputs": [],
241
- "source": [
242
- "ln.Artifact.search(\"iris\", return_queryset=True).first()"
232
+ "ln.Artifact.search(\"iris\").df()"
243
233
  ]
244
234
  },
245
235
  {
@@ -282,7 +272,7 @@
282
272
  "metadata": {},
283
273
  "outputs": [],
284
274
  "source": [
285
- "ln.Transform.search(\"intestine\").head()"
275
+ "ln.Transform.search(\"intestine\").df().head()"
286
276
  ]
287
277
  },
288
278
  {
@@ -12,7 +12,7 @@ Lamin does _not_ store or see any of your data, but only _basic_ metadata about
12
12
 
13
13
  If you register a LaminDB instance on LaminHub, Lamin only stores the storage location (AWS S3 or GCP bucket names, directory names).
14
14
 
15
- For more, see our guide on [access management & security](docs:access), [the source code](https://github.com/laminlabs/lamindb-setup), or the [privacy policy](https://lamin.ai/legal/privacy-policy).
15
+ For more, see [doc](inv:docs#access), [the source code](https://github.com/laminlabs/lamindb-setup), or the [privacy policy](https://lamin.ai/legal/privacy-policy).
16
16
 
17
17
  ```
18
18
 
@@ -30,9 +30,7 @@
30
30
  "outputs": [],
31
31
  "source": [
32
32
  "import lamindb as ln\n",
33
- "import bionty as bt\n",
34
33
  "\n",
35
- "bt.settings.organism = \"human\"\n",
36
34
  "ln.settings.transform.stem_uid = \"ITeOtm7bhtdq\"\n",
37
35
  "ln.settings.transform.version = \"1\"\n",
38
36
  "ln.track()"
@@ -42,7 +40,7 @@
42
40
  "cell_type": "markdown",
43
41
  "metadata": {},
44
42
  "source": [
45
- "All artifacts in the `laminlabs/cellxgene` clone of CZ CELLxGENE (for more info, see [here](docs:cellxgene)):"
43
+ "All artifacts in the `laminlabs/cellxgene` clone of CZ CELLxGENE (for more info, see [cellxgene](inv:docs#cellxgene)):"
46
44
  ]
47
45
  },
48
46
  {
@@ -563,7 +563,7 @@
563
563
  },
564
564
  "outputs": [],
565
565
  "source": [
566
- "ln.Artifact.search(\"meta\").head()"
566
+ "ln.Artifact.search(\"meta\").df().head()"
567
567
  ]
568
568
  },
569
569
  {
@@ -41,7 +41,7 @@ Modules & 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.71.2"
44
+ __version__ = "0.71.3"
45
45
 
46
46
  import os as _os
47
47
 
@@ -1,12 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import shutil
4
+ from concurrent.futures import ThreadPoolExecutor
4
5
  from pathlib import Path, PurePath, PurePosixPath
5
6
  from typing import TYPE_CHECKING, Any, Mapping
6
7
 
7
8
  import fsspec
8
9
  import lamindb_setup as ln_setup
9
10
  import pandas as pd
11
+ import psutil
10
12
  from anndata import AnnData
11
13
  from lamin_utils import colors, logger
12
14
  from lamindb_setup import settings as setup_settings
@@ -204,15 +206,23 @@ def get_stat_or_artifact(
204
206
  return size, hash, hash_type, n_objects
205
207
  else:
206
208
  if path.is_dir():
207
- md5s = []
208
- size = 0
209
- for subpath in path.rglob("*"):
210
- if not subpath.is_file():
211
- continue
212
- size += subpath.stat().st_size
213
- md5s.append(hash_file(subpath)[0])
214
- hash, hash_type = hash_md5s_from_dir(md5s)
215
- n_objects = len(md5s)
209
+ files = (subpath for subpath in path.rglob("*") if subpath.is_file())
210
+
211
+ def hash_size(file):
212
+ file_size = file.stat().st_size
213
+ return hash_file(file, file_size)[0], file_size
214
+
215
+ n_workers = len(psutil.Process().cpu_affinity())
216
+ if n_workers > 1:
217
+ with ThreadPoolExecutor(n_workers) as pool:
218
+ hashes_sizes = pool.map(hash_size, files)
219
+ else:
220
+ hashes_sizes = map(hash_size, files)
221
+ hashes, sizes = zip(*hashes_sizes)
222
+
223
+ hash, hash_type = hash_md5s_from_dir(hashes)
224
+ n_objects = len(hashes)
225
+ size = sum(sizes)
216
226
  else:
217
227
  hash, hash_type = hash_file(path)
218
228
  size = stat.st_size
@@ -80,7 +80,9 @@ def _inspect(
80
80
 
81
81
  # inspect in the DB
82
82
  result_db = inspect(
83
- df=_filter_query_based_on_organism(queryset=queryset, organism=organism),
83
+ df=_filter_query_based_on_organism(
84
+ queryset=queryset, field=field, organism=organism
85
+ ),
84
86
  identifiers=values,
85
87
  field=field,
86
88
  mute=mute,
@@ -161,6 +163,7 @@ def _validate(
161
163
  field_values = pd.Series(
162
164
  _filter_query_based_on_organism(
163
165
  queryset=queryset,
166
+ field=field,
164
167
  organism=organism,
165
168
  values_list_field=field,
166
169
  ),
@@ -284,7 +287,9 @@ def _standardize(
284
287
 
285
288
  try:
286
289
  orm._meta.get_field(synonyms_field)
287
- df = _filter_query_based_on_organism(queryset=queryset, organism=organism)
290
+ df = _filter_query_based_on_organism(
291
+ queryset=queryset, field=field, organism=organism
292
+ )
288
293
  except FieldDoesNotExist:
289
294
  df = pd.DataFrame()
290
295
 
@@ -439,6 +444,7 @@ def _check_synonyms_field_exist(record: Registry):
439
444
 
440
445
  def _filter_query_based_on_organism(
441
446
  queryset: QuerySet,
447
+ field: str,
442
448
  organism: str | Registry | None = None,
443
449
  values_list_field: str | None = None,
444
450
  ):
@@ -447,7 +453,7 @@ def _filter_query_based_on_organism(
447
453
 
448
454
  orm = queryset.model
449
455
 
450
- if _has_organism_field(orm):
456
+ if _has_organism_field(orm) and not field.endswith("id"):
451
457
  # here, we can safely import lnschema_bionty
452
458
  from lnschema_bionty._bionty import create_or_get_organism_record
453
459
 
@@ -103,9 +103,9 @@ def __init__(
103
103
  if meta._state.adding:
104
104
  raise ValueError("Save meta artifact before creating collection!")
105
105
  if not feature_sets:
106
- feature_sets = meta.features._feature_set_by_slot
106
+ feature_sets = meta.features.feature_set_by_slot
107
107
  else:
108
- if len(meta.features._feature_set_by_slot) > 0:
108
+ if len(meta.features.feature_set_by_slot) > 0:
109
109
  logger.info("overwriting feature sets linked to artifact")
110
110
  # we ignore collections in trash containing the same hash
111
111
  if hash is not None:
@@ -129,7 +129,7 @@ def __init__(
129
129
  existing_collection.transform = run.transform
130
130
  init_self_from_db(collection, existing_collection)
131
131
  update_attributes(collection, {"description": description, "name": name})
132
- for slot, feature_set in collection.features._feature_set_by_slot.items():
132
+ for slot, feature_set in collection.features.feature_set_by_slot.items():
133
133
  if slot in feature_sets:
134
134
  if not feature_sets[slot] == feature_set:
135
135
  collection.feature_sets.remove(feature_set)