lamindb 0.76.0__tar.gz → 0.76.1__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 (455) hide show
  1. {lamindb-0.76.0 → lamindb-0.76.1}/.pre-commit-config.yaml +1 -1
  2. {lamindb-0.76.0 → lamindb-0.76.1}/PKG-INFO +5 -5
  3. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/idempotency.ipynb +3 -4
  4. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/keep-artifacts-local.ipynb +2 -3
  5. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/key.ipynb +2 -3
  6. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/setup.ipynb +3 -4
  7. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/track-run-inputs.ipynb +10 -11
  8. {lamindb-0.76.0 → lamindb-0.76.1}/docs/introduction.ipynb +17 -28
  9. {lamindb-0.76.0 → lamindb-0.76.1}/docs/records.ipynb +23 -2
  10. {lamindb-0.76.0 → lamindb-0.76.1}/docs/track.ipynb +6 -7
  11. {lamindb-0.76.0 → lamindb-0.76.1}/docs/transfer.ipynb +2 -3
  12. {lamindb-0.76.0 → lamindb-0.76.1}/docs/tutorial.ipynb +5 -7
  13. {lamindb-0.76.0 → lamindb-0.76.1}/docs/tutorial2.ipynb +2 -11
  14. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/__init__.py +6 -8
  15. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_artifact.py +1 -1
  16. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_curate.py +4 -4
  17. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_finish.py +9 -52
  18. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_query_manager.py +2 -2
  19. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_query_set.py +3 -5
  20. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_record.py +20 -9
  21. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/__init__.py +9 -3
  22. lamindb-0.76.1/lamindb/core/_context.py +513 -0
  23. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_data.py +8 -6
  24. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_mapped_collection.py +82 -26
  25. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_settings.py +4 -8
  26. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/datasets/_core.py +1 -0
  27. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/exceptions.py +22 -5
  28. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/_valid_suffixes.py +2 -0
  29. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/versioning.py +13 -0
  30. {lamindb-0.76.0 → lamindb-0.76.1}/pyproject.toml +4 -4
  31. lamindb-0.76.1/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  32. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/lamin_cli/_save.py +30 -19
  33. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +2 -3
  34. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +1 -1
  35. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +3 -4
  36. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +3 -4
  37. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_save_notebooks.py +17 -16
  38. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_save_scripts.py +22 -22
  39. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  40. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +1 -1
  41. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +16 -2
  42. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +6 -6
  43. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +1 -1
  44. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +17 -4
  45. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-local/test_all.py +2 -2
  46. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  47. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/models.py +24 -12
  48. lamindb-0.76.0/tests/notebooks/initialized-with-nbproject.ipynb → lamindb-0.76.1/tests/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +15 -17
  49. {lamindb-0.76.0 → lamindb-0.76.1}/tests/notebooks/no-title.ipynb +3 -4
  50. {lamindb-0.76.0 → lamindb-0.76.1}/tests/notebooks/not-initialized.ipynb +10 -3
  51. {lamindb-0.76.0 → lamindb-0.76.1}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +2 -1
  52. {lamindb-0.76.0 → lamindb-0.76.1}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +2 -3
  53. lamindb-0.76.1/tests/scripts/duplicate1/script-to-test-versioning.py +5 -0
  54. lamindb-0.76.1/tests/scripts/duplicate2/script-to-test-versioning.py +8 -0
  55. lamindb-0.76.1/tests/scripts/duplicate3/script-to-test-versioning.py +6 -0
  56. lamindb-0.76.1/tests/scripts/script-to-test-filename-change.py +4 -0
  57. lamindb-0.76.1/tests/scripts/script-to-test-versioning.py +5 -0
  58. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_artifact.py +1 -1
  59. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_collection.py +28 -10
  60. lamindb-0.76.1/tests/test_context.py +236 -0
  61. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_curate.py +7 -7
  62. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_feature_manager.py +1 -1
  63. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_notebooks.py +2 -0
  64. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_queryset.py +2 -2
  65. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_record.py +20 -8
  66. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_versioning.py +17 -1
  67. lamindb-0.76.0/lamindb/core/_run_context.py +0 -514
  68. lamindb-0.76.0/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  69. lamindb-0.76.0/tests/test_run_context.py +0 -188
  70. {lamindb-0.76.0 → lamindb-0.76.1}/.github/workflows/build.yml +0 -0
  71. {lamindb-0.76.0 → lamindb-0.76.1}/.github/workflows/doc-changes.yml +0 -0
  72. {lamindb-0.76.0 → lamindb-0.76.1}/.gitignore +0 -0
  73. {lamindb-0.76.0 → lamindb-0.76.1}/.gitmodules +0 -0
  74. {lamindb-0.76.0 → lamindb-0.76.1}/CONTRIBUTING.md +0 -0
  75. {lamindb-0.76.0 → lamindb-0.76.1}/LICENSE +0 -0
  76. {lamindb-0.76.0 → lamindb-0.76.1}/README.md +0 -0
  77. {lamindb-0.76.0 → lamindb-0.76.1}/docs/api.md +0 -0
  78. {lamindb-0.76.0 → lamindb-0.76.1}/docs/arrays.ipynb +0 -0
  79. {lamindb-0.76.0 → lamindb-0.76.1}/docs/bio-registries.ipynb +0 -0
  80. {lamindb-0.76.0 → lamindb-0.76.1}/docs/bionty.md +0 -0
  81. {lamindb-0.76.0 → lamindb-0.76.1}/docs/changelog.md +0 -0
  82. {lamindb-0.76.0 → lamindb-0.76.1}/docs/curate-any.ipynb +0 -0
  83. {lamindb-0.76.0 → lamindb-0.76.1}/docs/curate-df.ipynb +0 -0
  84. {lamindb-0.76.0 → lamindb-0.76.1}/docs/curate.md +0 -0
  85. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/acid.ipynb +0 -0
  86. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/delete.ipynb +0 -0
  87. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/import-schema.ipynb +0 -0
  88. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/reference-field.ipynb +0 -0
  89. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/test_notebooks.py +0 -0
  90. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq/visibility.ipynb +0 -0
  91. {lamindb-0.76.0 → lamindb-0.76.1}/docs/faq.md +0 -0
  92. {lamindb-0.76.0 → lamindb-0.76.1}/docs/guide.md +0 -0
  93. {lamindb-0.76.0 → lamindb-0.76.1}/docs/includes/features-lamindb.md +0 -0
  94. {lamindb-0.76.0 → lamindb-0.76.1}/docs/includes/features-laminhub.md +0 -0
  95. {lamindb-0.76.0 → lamindb-0.76.1}/docs/includes/installation.md +0 -0
  96. {lamindb-0.76.0 → lamindb-0.76.1}/docs/index.md +0 -0
  97. {lamindb-0.76.0 → lamindb-0.76.1}/docs/lamindb.md +0 -0
  98. {lamindb-0.76.0 → lamindb-0.76.1}/docs/query-search.md +0 -0
  99. {lamindb-0.76.0 → lamindb-0.76.1}/docs/readfcs.md +0 -0
  100. {lamindb-0.76.0 → lamindb-0.76.1}/docs/rest.md +0 -0
  101. {lamindb-0.76.0 → lamindb-0.76.1}/docs/schemas.ipynb +0 -0
  102. {lamindb-0.76.0 → lamindb-0.76.1}/docs/setup.ipynb +0 -0
  103. {lamindb-0.76.0 → lamindb-0.76.1}/docs/signup-login.md +0 -0
  104. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/add-replace-cache.ipynb +0 -0
  105. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/anndata-accessor.ipynb +0 -0
  106. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  107. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/test-files/iris.csv +0 -0
  108. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/test-files/iris.data +0 -0
  109. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/test-files/new_iris.csv +0 -0
  110. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/test_notebooks.py +0 -0
  111. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  112. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/upload.ipynb +0 -0
  113. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage/vitessce.ipynb +0 -0
  114. {lamindb-0.76.0 → lamindb-0.76.1}/docs/storage.md +0 -0
  115. {lamindb-0.76.0 → lamindb-0.76.1}/docs/test_notebooks.py +0 -0
  116. {lamindb-0.76.0 → lamindb-0.76.1}/docs/wetlab.md +0 -0
  117. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_can_validate.py +0 -0
  118. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_collection.py +0 -0
  119. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_feature.py +0 -0
  120. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_feature_set.py +0 -0
  121. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_filter.py +0 -0
  122. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_from_values.py +0 -0
  123. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_is_versioned.py +0 -0
  124. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_parents.py +0 -0
  125. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_run.py +0 -0
  126. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_save.py +0 -0
  127. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_storage.py +0 -0
  128. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_transform.py +0 -0
  129. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_ulabel.py +0 -0
  130. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_utils.py +0 -0
  131. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/_view.py +0 -0
  132. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_feature_manager.py +0 -0
  133. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_label_manager.py +0 -0
  134. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_sync_git.py +0 -0
  135. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/_track_environment.py +0 -0
  136. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/datasets/__init__.py +0 -0
  137. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/datasets/_fake.py +0 -0
  138. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/fields.py +0 -0
  139. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/schema.py +0 -0
  140. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/__init__.py +0 -0
  141. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/_anndata_accessor.py +0 -0
  142. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/_anndata_sizes.py +0 -0
  143. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/_backed_access.py +0 -0
  144. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/_zarr.py +0 -0
  145. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/objects.py +0 -0
  146. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/storage/paths.py +0 -0
  147. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/subsettings/__init__.py +0 -0
  148. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/subsettings/_creation_settings.py +0 -0
  149. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/subsettings/_transform_settings.py +0 -0
  150. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/core/types.py +0 -0
  151. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/integrations/__init__.py +0 -0
  152. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/integrations/_vitessce.py +0 -0
  153. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/setup/__init__.py +0 -0
  154. {lamindb-0.76.0 → lamindb-0.76.1}/lamindb/setup/core/__init__.py +0 -0
  155. {lamindb-0.76.0 → lamindb-0.76.1}/noxfile.py +0 -0
  156. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/.github/workflows/build.yml +0 -0
  157. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
  158. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
  159. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/.gitignore +0 -0
  160. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/.pre-commit-config.yaml +0 -0
  161. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/LICENSE +0 -0
  162. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/README.md +0 -0
  163. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/__init__.py +0 -0
  164. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/_bionty.py +0 -0
  165. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/__init__.py +0 -0
  166. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/_display_sources.py +0 -0
  167. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/_ontology.py +0 -0
  168. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/_public_ontology.py +0 -0
  169. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/_settings.py +0 -0
  170. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/_sync_sources.py +0 -0
  171. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/dev/__init__.py +0 -0
  172. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
  173. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/dev/_io.py +0 -0
  174. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/dev/_md5.py +0 -0
  175. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/__init__.py +0 -0
  176. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
  177. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
  178. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
  179. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
  180. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
  181. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
  182. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_disease.py +0 -0
  183. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_drug.py +0 -0
  184. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
  185. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
  186. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_gene.py +0 -0
  187. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_organism.py +0 -0
  188. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
  189. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
  190. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_protein.py +0 -0
  191. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
  192. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
  193. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
  194. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
  195. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
  196. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
  197. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
  198. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
  199. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/base/sources.yaml +0 -0
  200. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/core/__init__.py +0 -0
  201. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/core/_add_ontology.py +0 -0
  202. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/core/_bionty.py +0 -0
  203. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/core/_settings.py +0 -0
  204. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/ids.py +0 -0
  205. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  206. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
  207. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
  208. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
  209. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
  210. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
  211. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
  212. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
  213. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
  214. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
  215. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
  216. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
  217. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
  218. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
  219. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
  220. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/migrations/__init__.py +0 -0
  221. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/bionty/models.py +0 -0
  222. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/developer/updating_source.md +0 -0
  223. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/comparison.md +0 -0
  224. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/concepts.md +0 -0
  225. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/config.md +0 -0
  226. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/extend.md +0 -0
  227. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/ontology.ipynb +0 -0
  228. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/search.ipynb +0 -0
  229. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/sources.ipynb +0 -0
  230. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/test_notebooks.py +0 -0
  231. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide/validate.ipynb +0 -0
  232. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/guide.md +0 -0
  233. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/index.md +0 -0
  234. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/docs/reference.md +0 -0
  235. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/lamin-project.yaml +0 -0
  236. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/noxfile.py +0 -0
  237. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/pyproject.toml +0 -0
  238. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
  239. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/dev/test_io.py +0 -0
  240. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
  241. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_biosample.py +0 -0
  242. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_cellline.py +0 -0
  243. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
  244. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_celltype.py +0 -0
  245. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
  246. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_disease.py +0 -0
  247. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_drug.py +0 -0
  248. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
  249. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
  250. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_gene.py +0 -0
  251. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_organism.py +0 -0
  252. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_pathway.py +0 -0
  253. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_phenotype.py +0 -0
  254. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_protein.py +0 -0
  255. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/entities/test_tissue.py +0 -0
  256. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/test_bionty.py +0 -0
  257. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/test_lamindb.py +0 -0
  258. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/test_md5.py +0 -0
  259. {lamindb-0.76.0 → lamindb-0.76.1}/sub/bionty/tests/test_ontology.py +0 -0
  260. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
  261. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/.gitignore +0 -0
  262. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  263. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/README.md +0 -0
  264. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  265. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  266. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/lamin_cli/_get.py +0 -0
  267. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  268. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/pyproject.toml +0 -0
  269. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/conftest.py +0 -0
  270. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  271. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  272. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_cli.py +0 -0
  273. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_get.py +0 -0
  274. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_migrate.py +0 -0
  275. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  276. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamin-cli/tests/test_save_files.py +0 -0
  277. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  278. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
  279. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/.gitignore +0 -0
  280. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  281. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/LICENSE +0 -0
  282. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/README.md +0 -0
  283. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/changelog.md +0 -0
  284. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  285. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  286. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  287. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  288. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  289. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  290. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  291. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  292. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  293. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  294. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  295. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  296. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  297. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  298. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  299. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  300. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  301. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  302. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/index.md +0 -0
  303. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
  304. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/docs/reference.md +0 -0
  305. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  306. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  307. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  308. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  309. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  310. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  311. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  312. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  313. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  314. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  315. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  316. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  317. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
  318. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  319. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  320. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  321. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
  322. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  323. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  324. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  325. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  326. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  327. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  328. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
  329. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  330. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  331. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  332. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  333. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  334. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  335. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  336. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  337. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  338. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  339. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  340. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
  341. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/noxfile.py +0 -0
  342. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/pyproject.toml +0 -0
  343. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  344. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  345. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  346. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  347. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  348. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  349. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  350. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
  351. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  352. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  353. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
  354. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  355. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  356. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  357. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  358. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  359. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  360. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  361. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  362. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
  363. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/.gitignore +0 -0
  364. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  365. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/CHANGELOG.md +0 -0
  366. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/LICENSE +0 -0
  367. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/README.md +0 -0
  368. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  369. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
  370. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
  371. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
  372. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
  373. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
  374. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
  375. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  376. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
  377. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
  378. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
  379. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
  380. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
  381. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
  382. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
  383. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
  384. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
  385. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
  386. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
  387. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
  388. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
  389. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0056_rename_ulabel_ref_is_name_artifactulabel_label_ref_is_name_and_more.py +0 -0
  390. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
  391. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
  392. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
  393. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
  394. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
  395. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
  396. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
  397. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  398. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  399. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/types.py +0 -0
  400. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/lnschema_core/users.py +0 -0
  401. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/noxfile.py +0 -0
  402. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/pyproject.toml +0 -0
  403. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/tests/conftest.py +0 -0
  404. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/tests/test_integrity.py +0 -0
  405. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/tests/test_models.py +0 -0
  406. {lamindb-0.76.0 → lamindb-0.76.1}/sub/lnschema-core/tests/test_types.py +0 -0
  407. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/.github/workflows/build.yml +0 -0
  408. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
  409. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/.gitignore +0 -0
  410. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/.pre-commit-config.yaml +0 -0
  411. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/README.md +0 -0
  412. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/changelog.md +0 -0
  413. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/guide/get-started.ipynb +0 -0
  414. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +0 -0
  415. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/guide.md +0 -0
  416. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/index.md +0 -0
  417. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/docs/reference.md +0 -0
  418. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/noxfile.py +0 -0
  419. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/pyproject.toml +0 -0
  420. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/tests/test_integrity.py +0 -0
  421. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/tests/test_notebooks.py +0 -0
  422. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/__init__.py +0 -0
  423. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
  424. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
  425. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
  426. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
  427. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +0 -0
  428. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
  429. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  430. {lamindb-0.76.0 → lamindb-0.76.1}/sub/wetlab/wetlab/models.py +0 -0
  431. {lamindb-0.76.0 → lamindb-0.76.1}/tests/conftest.py +0 -0
  432. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_artifact_folders.py +0 -0
  433. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_cache.py +0 -0
  434. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_can_validate.py +0 -0
  435. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_data.py +0 -0
  436. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_db.py +0 -0
  437. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_delete.py +0 -0
  438. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_feature.py +0 -0
  439. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_feature_set.py +0 -0
  440. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_from_values.py +0 -0
  441. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_label_manager.py +0 -0
  442. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_load.py +0 -0
  443. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_manager.py +0 -0
  444. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_parents.py +0 -0
  445. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_run.py +0 -0
  446. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_save.py +0 -0
  447. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_search.py +0 -0
  448. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_settings.py +0 -0
  449. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_storage.py +0 -0
  450. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_transfer.py +0 -0
  451. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_transform.py +0 -0
  452. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_uid.py +0 -0
  453. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_ulabel.py +0 -0
  454. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_view.py +0 -0
  455. {lamindb-0.76.0 → lamindb-0.76.1}/tests/test_visibility.py +0 -0
@@ -51,5 +51,5 @@ repos:
51
51
  additional_dependencies: ["types-requests", "types-attrs"]
52
52
  exclude: |
53
53
  (?x)(
54
- test_notebooks.py
54
+ test_notebooks.py|script-to-test-versioning.py
55
55
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.76.0
3
+ Version: 0.76.1
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.8
@@ -9,10 +9,10 @@ Classifier: Programming Language :: Python :: 3.8
9
9
  Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
- Requires-Dist: lnschema_core==0.73.0
13
- Requires-Dist: lamindb_setup==0.76.4
12
+ Requires-Dist: lnschema_core==0.73.1
13
+ Requires-Dist: lamindb_setup==0.76.5
14
14
  Requires-Dist: lamin_utils==0.13.2
15
- Requires-Dist: lamin_cli==0.16.1
15
+ Requires-Dist: lamin_cli==0.16.2
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -24,7 +24,7 @@ Requires-Dist: pandas
24
24
  Requires-Dist: graphviz
25
25
  Requires-Dist: psycopg2-binary
26
26
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
27
- Requires-Dist: bionty==0.48.1 ; extra == "bionty"
27
+ Requires-Dist: bionty==0.48.2 ; 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"
@@ -71,9 +71,8 @@
71
71
  "import pytest\n",
72
72
  "\n",
73
73
  "ln.settings.verbosity = \"hint\"\n",
74
- "ln.settings.transform.stem_uid = \"ANW20Fr4eZgM\"\n",
75
- "ln.settings.transform.version = \"1\"\n",
76
- "ln.track()"
74
+ "ln.context.uid = \"ANW20Fr4eZgM0000\"\n",
75
+ "ln.context.track()"
77
76
  ]
78
77
  },
79
78
  {
@@ -398,7 +397,7 @@
398
397
  },
399
398
  "outputs": [],
400
399
  "source": [
401
- "ln.track(new_run=True)\n",
400
+ "ln.context.track(new_run=True)\n",
402
401
  "artifact3 = ln.Artifact(filepath, description=\"My fcs artifact\")\n",
403
402
  "assert artifact3.id == artifact2.id\n",
404
403
  "assert artifact3.run != artifact2.run\n",
@@ -37,9 +37,8 @@
37
37
  "# !pip install 'lamindb[jupyter,aws]'\n",
38
38
  "import lamindb as ln\n",
39
39
  "\n",
40
- "ln.settings.transform.stem_uid = \"l9lFf83aPwRc\"\n",
41
- "ln.settings.transform.version = \"1\"\n",
42
- "ln.track()"
40
+ "ln.context.uid = \"l9lFf83aPwRc0000\"\n",
41
+ "ln.context.track()"
43
42
  ]
44
43
  },
45
44
  {
@@ -119,9 +119,8 @@
119
119
  "metadata": {},
120
120
  "outputs": [],
121
121
  "source": [
122
- "ln.settings.transform.stem_uid = \"WIwaNDvlEkwS\"\n",
123
- "ln.settings.transform.version = \"1\"\n",
124
- "ln.track()"
122
+ "ln.context.uid = \"WIwaNDvlEkwS0000\"\n",
123
+ "ln.context.track()"
125
124
  ]
126
125
  },
127
126
  {
@@ -56,7 +56,7 @@
56
56
  "outputs": [],
57
57
  "source": [
58
58
  "with pytest.raises(ln._InstanceNotSetupError):\n",
59
- " ln.track()"
59
+ " ln.context.track()"
60
60
  ]
61
61
  },
62
62
  {
@@ -85,9 +85,8 @@
85
85
  "metadata": {},
86
86
  "outputs": [],
87
87
  "source": [
88
- "ln.settings.transform.stem_uid = \"2lhqA4uTKSFP\"\n",
89
- "ln.settings.transform.version = \"0\"\n",
90
- "ln.track()"
88
+ "ln.context.uid = \"2lhqA4uTKSFP0000\"\n",
89
+ "ln.context.track()"
91
90
  ]
92
91
  },
93
92
  {
@@ -53,7 +53,7 @@
53
53
  "metadata": {},
54
54
  "outputs": [],
55
55
  "source": [
56
- "ln.track(transform=ln.Transform(name=\"Dummpy pipeline\"))\n",
56
+ "ln.context.track(transform=ln.Transform(name=\"Dummpy pipeline\"))\n",
57
57
  "ln.Artifact(ln.core.datasets.file_jpg_paradisi05(), description=\"My image\").save()\n",
58
58
  "ln.Artifact(ln.core.datasets.file_mini_csv(), description=\"My csv\").save()"
59
59
  ]
@@ -63,7 +63,7 @@
63
63
  "cell_type": "markdown",
64
64
  "metadata": {},
65
65
  "source": [
66
- "Call `ln.track()`:"
66
+ "Call `ln.context.track()`:"
67
67
  ]
68
68
  },
69
69
  {
@@ -72,9 +72,8 @@
72
72
  "metadata": {},
73
73
  "outputs": [],
74
74
  "source": [
75
- "ln.settings.transform.stem_uid = \"Rx2s9aPTMQLY\"\n",
76
- "ln.settings.transform.version = \"1\"\n",
77
- "ln.track()"
75
+ "ln.context.uid = \"Rx2s9aPTMQLY0000\"\n",
76
+ "ln.context.track()"
78
77
  ]
79
78
  },
80
79
  {
@@ -126,7 +125,7 @@
126
125
  "metadata": {},
127
126
  "outputs": [],
128
127
  "source": [
129
- "ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all()"
128
+ "ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all()"
130
129
  ]
131
130
  },
132
131
  {
@@ -139,7 +138,7 @@
139
138
  },
140
139
  "outputs": [],
141
140
  "source": [
142
- "assert len(ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all()) == 0"
141
+ "assert len(ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all()) == 0"
143
142
  ]
144
143
  },
145
144
  {
@@ -181,7 +180,7 @@
181
180
  "metadata": {},
182
181
  "outputs": [],
183
182
  "source": [
184
- "for input in ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all():\n",
183
+ "for input in ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all():\n",
185
184
  " print(input)"
186
185
  ]
187
186
  },
@@ -195,7 +194,7 @@
195
194
  },
196
195
  "outputs": [],
197
196
  "source": [
198
- "assert len(ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all()) == 1"
197
+ "assert len(ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all()) == 1"
199
198
  ]
200
199
  },
201
200
  {
@@ -247,7 +246,7 @@
247
246
  "metadata": {},
248
247
  "outputs": [],
249
248
  "source": [
250
- "for input in ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all():\n",
249
+ "for input in ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all():\n",
251
250
  " print(input)"
252
251
  ]
253
252
  },
@@ -261,7 +260,7 @@
261
260
  },
262
261
  "outputs": [],
263
262
  "source": [
264
- "assert len(ln.Run.filter(id=ln.core.run_context.run.id).one().input_artifacts.all()) == 2"
263
+ "assert len(ln.Run.filter(id=ln.context.run.id).one().input_artifacts.all()) == 2"
265
264
  ]
266
265
  },
267
266
  {
@@ -60,7 +60,7 @@
60
60
  "pip install 'lamindb[jupyter,bionty]'\n",
61
61
  "```\n",
62
62
  "\n",
63
- "Initialize a LaminDB instance mounting plugin {py:mod}`bionty` for biological types."
63
+ "Initialize a LaminDB instance mounting plugin {py:mod}`bionty`."
64
64
  ]
65
65
  },
66
66
  {
@@ -103,13 +103,11 @@
103
103
  "cell_type": "markdown",
104
104
  "metadata": {},
105
105
  "source": [
106
- "### Track\n",
106
+ "### Track data transformations\n",
107
107
  "\n",
108
- "Call {meth}`~lamindb.track` to track code along with its inputs and outputs.\n",
108
+ "When you first call {meth}`~lamindb.core.Context.track`, it auto-generates a `uid` to identify a notebook or script.\n",
109
109
  "\n",
110
- "When you first call `ln.track()`, it raises an exception and creates a `stem_uid` & `version` to identify a notebook or script in your database.\n",
111
- "\n",
112
- "When you call it a second time, `ln.track()` saves transform and run records in their registries. The {class}`~lamindb.Transform` registry allows you to find your notebooks, scripts and pipelines. The {class}`~lamindb.Run` registry allows you to find their runs."
110
+ "When you call it a second time, it saves transform and run records: {class}`~lamindb.Transform` stores your notebooks, script, functions, and pipelines and {class}`~lamindb.Run` stores runs."
113
111
  ]
114
112
  },
115
113
  {
@@ -122,14 +120,10 @@
122
120
  },
123
121
  "outputs": [],
124
122
  "source": [
125
- "ln.settings.transform.stem_uid = \"FPnfDtJz8qbE\" # <-- auto-generated by ln.track()\n",
126
- "ln.settings.transform.version = \"1\" # <-- auto-generated by ln.track()\n",
127
- "\n",
128
- "# track the execution of your notebook or script\n",
129
- "run = ln.track()\n",
123
+ "ln.context.uid = \"FPnfDtJz8qbE0000\" # <-- auto-generated by ln.context.track()\n",
130
124
  "\n",
131
- "# see your currently running transform\n",
132
- "run.transform"
125
+ "# track the execution of your notebook or script with inputs & outputs\n",
126
+ "ln.context.track()"
133
127
  ]
134
128
  },
135
129
  {
@@ -142,21 +136,13 @@
142
136
  "\n",
143
137
  ":::\n",
144
138
  "\n",
145
- ":::{dropdown} Are the global identifiers `stem_uid` and `version` really necessary?\n",
139
+ ":::{dropdown} Why is the global `ln.context.uid` necessary?\n",
146
140
  "\n",
147
- "Yes, if you want to track data lineage outside of workflow managers.\n",
141
+ "To tie a piece of code to a record in a database in a way that survives name and content changes, you need to attach the code to an immutable identifier, e.g., LaminDB's `uid`.\n",
148
142
  "\n",
149
- "To tie a piece of code to a record in a database in a way that survives name changes (notebook file name, script name, pipeline name) and content changes, you need to attach the code to an immutable identifier.\n",
143
+ "git, by comparison, identifies code by its content hash & name. If you rename a notebook or script file and change the content, you lose the identity of the file. Notebook platforms like Google Colab and DeepNote support renaming and changing content of a given notebook, but they do not support versioning (every notebook version comes with the same [notebook id](https://lamin.ai/blog/nbproject#metadata-tracking) without versioning appearing in its metadata).\n",
150
144
  "\n",
151
- "Content changes need to correlate with the identifier, but shouldn't give rise to an entirely new identifier. To implement this behavior we code hashes with user input for `version` and create a universal identifier as follows:\n",
152
- "\n",
153
- "```python\n",
154
- "stem_uid = random_base62(n_char) # a random base62 sequence of length n_char\n",
155
- "version_uid = encode_base62(md5_hash(version))[:4] # version is, e.g., \"1\" or \"2.1.0\" or \"2022-03-01\"\n",
156
- "uid = f\"{stem_uid}{version_uid}\" # concatenate the stem_uid & version_uid\n",
157
- "```\n",
158
- "\n",
159
- "git, by comparison, identifies code by its content hash alone. Notebook platforms like Google Colab and DeepNote [do not encode versions into their notebook ids](https://lamin.ai/blog/nbproject#metadata-tracking). \n",
145
+ "To enable versioning, LaminDB auto-generates `uid` values so that different versions of a notebook or script are grouped by a random \"stem uid\" `suid`, consisting in the same first 12 characters of the `uid`. The remaining 4 characters encode a revision in a `ruid`, hence, `uid = f\"{suid}{ruid}\"`. You can optionally label any given version with a semantic tag via the `transform.version` field.\n",
160
146
  "\n",
161
147
  ":::"
162
148
  ]
@@ -424,10 +410,13 @@
424
410
  "metadata": {},
425
411
  "outputs": [],
426
412
  "source": [
427
- "# get an entity by uid (here, the current notebook)\n",
413
+ "# get a single record by uid (here, the current notebook)\n",
428
414
  "transform = ln.Transform.get(\"FPnfDtJz8qbE\")\n",
429
415
  "\n",
430
- "# filter by description\n",
416
+ "# get a single record by matching a field\n",
417
+ "transform = ln.Transform.get(name=\"Introduction\")\n",
418
+ "\n",
419
+ "# get a set of records by filtering on description\n",
431
420
  "ln.Artifact.filter(description=\"my RNA-seq\").df()\n",
432
421
  "\n",
433
422
  "# query all artifacts ingested from the current notebook\n",
@@ -1073,7 +1062,7 @@
1073
1062
  "<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/KQmzmmLOeBN0C8Ykitjn.svg\" width=\"800\">\n",
1074
1063
  "\n",
1075
1064
  "\n",
1076
- "Both figures are based on mere calls to `ln.track()` in notebooks, pipelines & app."
1065
+ "Both figures are based on mere calls to `ln.context.track()` in notebooks, pipelines & app."
1077
1066
  ]
1078
1067
  },
1079
1068
  {
@@ -110,13 +110,34 @@
110
110
  "users_dict = ln.User.lookup().dict()"
111
111
  ]
112
112
  },
113
+ {
114
+ "cell_type": "markdown",
115
+ "id": "d54676dd",
116
+ "metadata": {},
117
+ "source": [
118
+ "## Query exactly one record"
119
+ ]
120
+ },
121
+ {
122
+ "cell_type": "code",
123
+ "execution_count": null,
124
+ "id": "463ff17c",
125
+ "metadata": {},
126
+ "outputs": [],
127
+ "source": [
128
+ "# by uid\n",
129
+ "ln.User.get(\"DzTjkKse\")\n",
130
+ "# by any expression involving fields\n",
131
+ "ln.User.get(handle=\"testuser1\")"
132
+ ]
133
+ },
113
134
  {
114
135
  "attachments": {},
115
136
  "cell_type": "markdown",
116
137
  "id": "45ac3b5c",
117
138
  "metadata": {},
118
139
  "source": [
119
- "## Filter by metadata"
140
+ "## Query sets of records"
120
141
  ]
121
142
  },
122
143
  {
@@ -148,7 +169,7 @@
148
169
  "\n",
149
170
  "- `.df()`: A pandas `DataFrame` with each record in a row.\n",
150
171
  "- `.all()`: A {class}`~lamindb.core.QuerySet`.\n",
151
- "- `.one()`: Exactly one record. Will raise an error if there is none.\n",
172
+ "- `.one()`: Exactly one record. Will raise an error if there is none. Is equivalent to the `.get()` method shown above.\n",
152
173
  "- `.one_or_none()`: Either one record or `None` if there is no query result."
153
174
  ]
154
175
  },
@@ -6,7 +6,7 @@
6
6
  "source": [
7
7
  "# Track notebooks & scripts\n",
8
8
  "\n",
9
- "Call {meth}`~lamindb.track` to track code along with its inputs and outputs.\n",
9
+ "Call {meth}`~lamindb.core.Context.track` to track code along with its inputs and outputs.\n",
10
10
  "\n",
11
11
  "```{note}\n",
12
12
  "\n",
@@ -39,9 +39,9 @@
39
39
  "cell_type": "markdown",
40
40
  "metadata": {},
41
41
  "source": [
42
- "When you first call `ln.track()`, it raises an exception and creates a `stem_uid` & `version` to identify a notebook or script in your database.\n",
42
+ "When you first call `ln.context.track()`, it raises an exception and creates a `stem_uid` & `version` to identify a notebook or script in your database.\n",
43
43
  "\n",
44
- "When you call it a second time, `ln.track()` saves transform and run records in their registries. The {class}`~lamindb.Transform` registry allows you to find your notebooks, scripts and pipelines. The {class}`~lamindb.Run` registry allows you to find their runs."
44
+ "When you call it a second time, `ln.context.track()` saves transform and run records in their registries. The {class}`~lamindb.Transform` registry allows you to find your notebooks, scripts and pipelines. The {class}`~lamindb.Run` registry allows you to find their runs."
45
45
  ]
46
46
  },
47
47
  {
@@ -52,9 +52,8 @@
52
52
  "source": [
53
53
  "import lamindb as ln\n",
54
54
  "\n",
55
- "ln.settings.transform.stem_uid = \"9priar0hoE5u\" # <-- auto-generated by ln.track()\n",
56
- "ln.settings.transform.version = \"1\" # <-- auto-generated by ln.track()\n",
57
- "ln.track()"
55
+ "ln.context.uid = \"9priar0hoE5u0000\"\n",
56
+ "ln.context.track()"
58
57
  ]
59
58
  },
60
59
  {
@@ -153,7 +152,7 @@
153
152
  "ln.settings.sync_git_repo = \"https://github.com/...\"\n",
154
153
  "ln.settings.transform.stem_uid = \"9priar0hoE5u\"\n",
155
154
  "ln.settings.transform.version = \"1\"\n",
156
- "run = ln.track()\n",
155
+ "ln.context.track()\n",
157
156
  "\n",
158
157
  "# load input artifacts\n",
159
158
  "artifact = ln.Artifact.filter(...).one()\n",
@@ -40,9 +40,8 @@
40
40
  "source": [
41
41
  "import lamindb as ln\n",
42
42
  "\n",
43
- "ln.settings.transform.stem_uid = \"ITeOtm7bhtdq\"\n",
44
- "ln.settings.transform.version = \"1\"\n",
45
- "ln.track()"
43
+ "ln.context.uid = \"ITeOtm7bhtdq0000\"\n",
44
+ "ln.context.track()"
46
45
  ]
47
46
  },
48
47
  {
@@ -132,12 +132,10 @@
132
132
  },
133
133
  "outputs": [],
134
134
  "source": [
135
- "# copy-pasted identifiers for your notebook or script\n",
136
- "ln.settings.transform.stem_uid = \"NJvdsWWbJlZS\" # <-- auto-generated by running ln.track()\n",
137
- "ln.settings.transform.version = \"1\" # <-- auto-generated by running ln.track()\n",
135
+ "ln.context.uid = \"NJvdsWWbJlZS0000\" # <-- auto-generated by ln.context.track()\n",
138
136
  "\n",
139
137
  "# track the execution of your notebook or script\n",
140
- "ln.track()"
138
+ "ln.context.track()"
141
139
  ]
142
140
  },
143
141
  {
@@ -145,7 +143,7 @@
145
143
  "cell_type": "markdown",
146
144
  "metadata": {},
147
145
  "source": [
148
- "By calling {func}`~lamindb.track`, the notebook is automatically linked as the source of all data that's about to be saved!"
146
+ "By calling {func}`~lamindb.core.Context.track`, the notebook is automatically linked as the source of all data that's about to be saved!"
149
147
  ]
150
148
  },
151
149
  {
@@ -169,7 +167,7 @@
169
167
  "\n",
170
168
  "```python\n",
171
169
  "transform = ln.Transform(name=\"My pipeline\", version=\"1.2.0\")\n",
172
- "ln.track(transform)\n",
170
+ "ln.context.track(transform)\n",
173
171
  "```\n",
174
172
  "\n",
175
173
  ":::\n",
@@ -182,7 +180,7 @@
182
180
  "\n",
183
181
  "A notebook that's run a single time on specific data is not a pipeline: it's a (versioned) **document** that produced insight or some other form of data representation (with parallels to an ELN in the wetlab).\n",
184
182
  "\n",
185
- "Because humans are in the loop, most mistakes happen when using notebooks: {func}`~lamindb.track` helps avoiding some.\n",
183
+ "Because humans are in the loop, most mistakes happen when using notebooks: {func}`~lamindb.core.Context.track` helps avoiding some.\n",
186
184
  "\n",
187
185
  "(An early blog post on this is [here](https://lamin.ai/blog/2022/nbproject).)\n",
188
186
  "\n",
@@ -391,7 +391,7 @@
391
391
  " return output_data\n",
392
392
  "\n",
393
393
  "transform = ln.Transform(name=\"Petal & sepal regressor\", type=\"pipeline\")\n",
394
- "run = ln.track(transform=transform)\n",
394
+ "ln.context.track(transform=transform)\n",
395
395
  "df = run_ml_model()"
396
396
  ]
397
397
  },
@@ -422,15 +422,6 @@
422
422
  "And this is the pipeline that produced the dataframe:"
423
423
  ]
424
424
  },
425
- {
426
- "cell_type": "code",
427
- "execution_count": null,
428
- "metadata": {},
429
- "outputs": [],
430
- "source": [
431
- "run"
432
- ]
433
- },
434
425
  {
435
426
  "cell_type": "code",
436
427
  "execution_count": null,
@@ -441,7 +432,7 @@
441
432
  },
442
433
  "outputs": [],
443
434
  "source": [
444
- "run.transform.view_lineage()"
435
+ "ln.context.transform.view_lineage()"
445
436
  ]
446
437
  },
447
438
  {
@@ -21,9 +21,8 @@ Key functionality:
21
21
  .. autosummary::
22
22
  :toctree: .
23
23
 
24
+ context
24
25
  connect
25
- track
26
- finish
27
26
  Curate
28
27
  view
29
28
  save
@@ -42,7 +41,7 @@ Modules & settings:
42
41
  """
43
42
 
44
43
  # denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
45
- __version__ = "0.76.0"
44
+ __version__ = "0.76.1"
46
45
 
47
46
  import os as _os
48
47
 
@@ -93,10 +92,9 @@ if _check_instance_setup(from_lamindb=True):
93
92
  integrations,
94
93
  )
95
94
  from ._curate import Curate
96
- from ._finish import finish
97
95
  from ._save import save
98
96
  from ._view import view
99
- from .core._run_context import run_context as _run_context
97
+ from .core._context import context
100
98
  from .core._settings import settings
101
99
 
102
100
  # schema modules
@@ -107,8 +105,8 @@ if _check_instance_setup(from_lamindb=True):
107
105
 
108
106
  _reload_schema_modules(_lamindb_setup.settings.instance)
109
107
 
110
- track = _run_context._track
108
+ track = context.track # backward compat
109
+ finish = context.finish # backward compat
111
110
  settings.__doc__ = """Global :class:`~lamindb.core.Settings`."""
111
+ context.__doc__ = """Global :class:`~lamindb.core.Context`."""
112
112
  from django.db.models import Q
113
-
114
- Annotate = Curate # backward compat
@@ -107,7 +107,7 @@ def process_pathlike(
107
107
  new_root = list(filepath.parents)[-1]
108
108
  # do not register remote storage locations on hub if the current instance
109
109
  # is not managed on the hub
110
- storage_settings = init_storage(
110
+ storage_settings, _ = init_storage(
111
111
  new_root, prevent_register_hub=not setup_settings.instance.is_on_hub
112
112
  )
113
113
  storage_record = register_storage_in_instance(storage_settings)
@@ -313,11 +313,11 @@ class DataFrameCurator:
313
313
 
314
314
  def clean_up_failed_runs(self):
315
315
  """Clean up previous failed runs that don't save any outputs."""
316
- from lamindb.core._run_context import run_context
316
+ from lamindb.core._context import context
317
317
 
318
- if run_context.transform is not None:
319
- Run.filter(transform=run_context.transform, output_artifacts=None).exclude(
320
- uid=run_context.run.uid
318
+ if context.run is not None:
319
+ Run.filter(transform=context.run.transform, output_artifacts=None).exclude(
320
+ uid=context.run.uid
321
321
  ).delete()
322
322
 
323
323
 
@@ -9,9 +9,6 @@ from typing import TYPE_CHECKING
9
9
  import lamindb_setup as ln_setup
10
10
  from lamin_utils import logger
11
11
  from lamindb_setup.core.hashing import hash_file
12
- from lnschema_core.types import TransformType
13
-
14
- from .core._run_context import is_run_from_ipython, run_context
15
12
 
16
13
  if TYPE_CHECKING:
17
14
  from pathlib import Path
@@ -21,51 +18,7 @@ if TYPE_CHECKING:
21
18
  from ._query_set import QuerySet
22
19
 
23
20
 
24
- class TrackNotCalled(SystemExit):
25
- pass
26
-
27
-
28
- class NotebookNotSaved(SystemExit):
29
- pass
30
-
31
-
32
- def get_seconds_since_modified(filepath) -> float:
33
- return datetime.now().timestamp() - filepath.stat().st_mtime
34
-
35
-
36
- def finish() -> None:
37
- """Mark a tracked run as finished.
38
-
39
- Saves source code and, for notebooks, a run report to your default storage location.
40
- """
41
- if run_context.run is None:
42
- raise TrackNotCalled("Please run `ln.track()` before `ln.finish()`")
43
- if run_context.path is None:
44
- if run_context.transform.type in {"script", "notebook"}:
45
- raise ValueError(
46
- f"Transform type is not allowed to be 'script' or 'notebook' but is {run_context.transform.type}."
47
- )
48
- run_context.run.finished_at = datetime.now(timezone.utc)
49
- run_context.run.save()
50
- # nothing else to do
51
- return None
52
- if is_run_from_ipython: # notebooks
53
- if (
54
- get_seconds_since_modified(run_context.path) > 3
55
- and os.getenv("LAMIN_TESTING") is None
56
- ):
57
- raise NotebookNotSaved(
58
- "Please save the notebook in your editor right before running `ln.finish()`"
59
- )
60
- save_run_context_core(
61
- run=run_context.run,
62
- transform=run_context.transform,
63
- filepath=run_context.path,
64
- finished_at=True,
65
- )
66
-
67
-
68
- def save_run_context_core(
21
+ def save_context_core(
69
22
  *,
70
23
  run: Run,
71
24
  transform: Transform,
@@ -76,6 +29,8 @@ def save_run_context_core(
76
29
  ) -> str | None:
77
30
  import lamindb as ln
78
31
 
32
+ from .core._context import context, is_run_from_ipython
33
+
79
34
  ln.settings.verbosity = "success"
80
35
 
81
36
  # for scripts, things are easy
@@ -182,7 +137,9 @@ def save_run_context_core(
182
137
  f"replaced transform._source_code_artifact: {transform._source_code_artifact}"
183
138
  )
184
139
  else:
185
- logger.warning("Please re-run `ln.track()` to make a new version")
140
+ logger.warning(
141
+ "Please re-run `ln.context.track()` to make a new version"
142
+ )
186
143
  return "rerun-the-notebook"
187
144
  else:
188
145
  logger.important("source code is already saved")
@@ -282,7 +239,7 @@ def save_run_context_core(
282
239
  logger.important(
283
240
  f"if you want to update your {thing} without re-running it, use `lamin save {name}`"
284
241
  )
285
- # because run & transform changed, update the global run_context
286
- run_context.run = run
287
- run_context.transform = transform
242
+ # because run & transform changed, update the global context
243
+ context._run = run
244
+ context._transform = transform
288
245
  return None
@@ -40,11 +40,11 @@ class QueryManager(models.Manager):
40
40
  self.source_field_name == "collection"
41
41
  and self.target_field_name == "artifact"
42
42
  ):
43
+ from lamindb.core._context import context
43
44
  from lamindb.core._data import WARNING_RUN_TRANSFORM, _track_run_input
44
- from lamindb.core._run_context import run_context
45
45
 
46
46
  if (
47
- run_context.run is None
47
+ context.run is None
48
48
  and not settings.creation.artifact_silence_missing_run_warning
49
49
  ):
50
50
  logger.warning(WARNING_RUN_TRANSFORM)