lamindb 0.57.1__tar.gz → 0.58.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. {lamindb-0.57.1 → lamindb-0.58.0}/PKG-INFO +5 -5
  2. {lamindb-0.57.1 → lamindb-0.58.0}/docs/bio-registries.ipynb +53 -7
  3. {lamindb-0.57.1 → lamindb-0.58.0}/docs/changelog.md +12 -0
  4. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/acid.ipynb +22 -35
  5. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/idempotency.ipynb +17 -9
  6. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/notebooks.ipynb +31 -49
  7. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/setup.ipynb +1 -1
  8. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/track-run-inputs.ipynb +13 -2
  9. lamindb-0.58.0/docs/faq/validator.ipynb +150 -0
  10. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq.md +1 -0
  11. {lamindb-0.57.1 → lamindb-0.58.0}/docs/features-lamindb.md +13 -13
  12. {lamindb-0.57.1 → lamindb-0.58.0}/docs/features-laminhub.md +11 -12
  13. {lamindb-0.57.1 → lamindb-0.58.0}/docs/introduction.ipynb +37 -70
  14. {lamindb-0.57.1 → lamindb-0.58.0}/docs/meta.ipynb +5 -3
  15. {lamindb-0.57.1 → lamindb-0.58.0}/docs/tutorial.ipynb +1 -1
  16. {lamindb-0.57.1 → lamindb-0.58.0}/docs/tutorial2.ipynb +1 -1
  17. {lamindb-0.57.1 → lamindb-0.58.0}/docs/validate.ipynb +14 -0
  18. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/__init__.py +1 -1
  19. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_dataset.py +48 -15
  20. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_feature_set.py +7 -1
  21. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_file.py +22 -2
  22. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_parents.py +10 -5
  23. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_data.py +50 -22
  24. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/datasets/_core.py +8 -5
  25. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/_backed_access.py +10 -1
  26. {lamindb-0.57.1 → lamindb-0.58.0}/pyproject.toml +4 -4
  27. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/docs/changelog.md +1 -0
  28. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
  29. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/ids.py +1 -8
  30. lamindb-0.58.0/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +77 -0
  31. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/models.py +9 -4
  32. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/pyproject.toml +1 -1
  33. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
  34. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/models.py +50 -0
  35. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_parents.py +0 -6
  36. lamindb-0.57.1/sub/lnschema-bionty/tests/test_hash_id.py +0 -10
  37. {lamindb-0.57.1 → lamindb-0.58.0}/.github/workflows/build.yml +0 -0
  38. {lamindb-0.57.1 → lamindb-0.58.0}/.github/workflows/latest-changes.jinja2 +0 -0
  39. {lamindb-0.57.1 → lamindb-0.58.0}/.github/workflows/latest-changes.yml +0 -0
  40. {lamindb-0.57.1 → lamindb-0.58.0}/.gitignore +0 -0
  41. {lamindb-0.57.1 → lamindb-0.58.0}/.gitmodules +0 -0
  42. {lamindb-0.57.1 → lamindb-0.58.0}/.pre-commit-config.yaml +0 -0
  43. {lamindb-0.57.1 → lamindb-0.58.0}/LICENSE +0 -0
  44. {lamindb-0.57.1 → lamindb-0.58.0}/README.md +0 -0
  45. {lamindb-0.57.1 → lamindb-0.58.0}/docs/bionty.md +0 -0
  46. {lamindb-0.57.1 → lamindb-0.58.0}/docs/data.ipynb +0 -0
  47. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/import-schema.ipynb +0 -0
  48. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/reference-field.ipynb +0 -0
  49. {lamindb-0.57.1 → lamindb-0.58.0}/docs/faq/test_notebooks.py +0 -0
  50. {lamindb-0.57.1 → lamindb-0.58.0}/docs/guide.md +0 -0
  51. {lamindb-0.57.1 → lamindb-0.58.0}/docs/index.md +0 -0
  52. {lamindb-0.57.1 → lamindb-0.58.0}/docs/installation.md +0 -0
  53. {lamindb-0.57.1 → lamindb-0.58.0}/docs/lamin-utils.md +0 -0
  54. {lamindb-0.57.1 → lamindb-0.58.0}/docs/lamindb.md +0 -0
  55. {lamindb-0.57.1 → lamindb-0.58.0}/docs/lnschema-bionty.md +0 -0
  56. {lamindb-0.57.1 → lamindb-0.58.0}/docs/nbproject.md +0 -0
  57. {lamindb-0.57.1 → lamindb-0.58.0}/docs/query-search.md +0 -0
  58. {lamindb-0.57.1 → lamindb-0.58.0}/docs/readfcs.md +0 -0
  59. {lamindb-0.57.1 → lamindb-0.58.0}/docs/reference.md +0 -0
  60. {lamindb-0.57.1 → lamindb-0.58.0}/docs/schemas.ipynb +0 -0
  61. {lamindb-0.57.1 → lamindb-0.58.0}/docs/setup.ipynb +0 -0
  62. {lamindb-0.57.1 → lamindb-0.58.0}/docs/signup-login.md +0 -0
  63. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/add-replace-stage.ipynb +0 -0
  64. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/anndata-accessor.ipynb +0 -0
  65. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/test-files/iris.csv +0 -0
  66. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/test-files/iris.data +0 -0
  67. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/test-files/new_iris.csv +0 -0
  68. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/test_notebooks.py +0 -0
  69. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage/upload.ipynb +0 -0
  70. {lamindb-0.57.1 → lamindb-0.58.0}/docs/storage.md +0 -0
  71. {lamindb-0.57.1 → lamindb-0.58.0}/docs/test_notebooks.py +0 -0
  72. {lamindb-0.57.1 → lamindb-0.58.0}/docs/transfer.ipynb +0 -0
  73. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_delete.py +0 -0
  74. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_feature.py +0 -0
  75. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_filter.py +0 -0
  76. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_from_values.py +0 -0
  77. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_query_manager.py +0 -0
  78. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_query_set.py +0 -0
  79. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_registry.py +0 -0
  80. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_run.py +0 -0
  81. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_save.py +0 -0
  82. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_storage.py +0 -0
  83. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_transform.py +0 -0
  84. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_ulabel.py +0 -0
  85. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_utils.py +0 -0
  86. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_validate.py +0 -0
  87. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/_view.py +0 -0
  88. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/__init__.py +0 -0
  89. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_feature_manager.py +0 -0
  90. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_label_manager.py +0 -0
  91. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_priors.py +0 -0
  92. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_run_context.py +0 -0
  93. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/_settings.py +0 -0
  94. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/datasets/__init__.py +0 -0
  95. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/datasets/_fake.py +0 -0
  96. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/exceptions.py +0 -0
  97. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/fields.py +0 -0
  98. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/hashing.py +0 -0
  99. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/__init__.py +0 -0
  100. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/_anndata_sizes.py +0 -0
  101. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/_zarr.py +0 -0
  102. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/file.py +0 -0
  103. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/storage/object.py +0 -0
  104. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/types.py +0 -0
  105. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/dev/versioning.py +0 -0
  106. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/setup/__init__.py +0 -0
  107. {lamindb-0.57.1 → lamindb-0.58.0}/lamindb/setup/dev/__init__.py +0 -0
  108. {lamindb-0.57.1 → lamindb-0.58.0}/noxfile.py +0 -0
  109. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  110. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  111. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  112. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/.gitignore +0 -0
  113. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  114. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/LICENSE +0 -0
  115. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/README.md +0 -0
  116. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/changelog.md +0 -0
  117. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/index.md +0 -0
  118. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
  119. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-cache-management.ipynb +0 -0
  120. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-empty-init.ipynb +0 -0
  121. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-import-schema.ipynb +0 -0
  122. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-insufficient-user-info.ipynb +0 -0
  123. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-load-lock.ipynb +0 -0
  124. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test-sqlite-sync.ipynb +0 -0
  125. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-only/test_notebooks2.py +0 -0
  126. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/01-init-instance.ipynb +0 -0
  127. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/02-load-instance.ipynb +0 -0
  128. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/03-set-storage.ipynb +0 -0
  129. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/04-test-bionty.ipynb +0 -0
  130. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/test-multi-session.ipynb +0 -0
  131. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/prod-staging/test_notebooks.py +0 -0
  132. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/docs/reference.md +0 -0
  133. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/__init__.py +0 -0
  134. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/__main__.py +0 -0
  135. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  136. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_check_instance_setup.py +0 -0
  137. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  138. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  139. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  140. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_docstrings.py +0 -0
  141. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_export.py +0 -0
  142. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_info.py +0 -0
  143. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  144. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_init_vault.py +0 -0
  145. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_load_instance.py +0 -0
  146. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  147. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_notebook.py +0 -0
  148. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  149. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  150. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_set.py +0 -0
  151. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_settings.py +0 -0
  152. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  153. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  154. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/__init__.py +0 -0
  155. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_deprecated.py +0 -0
  156. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_docs.py +0 -0
  157. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_hub_client.py +0 -0
  158. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_hub_core.py +0 -0
  159. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_hub_crud.py +0 -0
  160. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_hub_utils.py +0 -0
  161. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_instance.py +0 -0
  162. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_load.py +0 -0
  163. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_save.py +0 -0
  164. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_storage.py +0 -0
  165. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_store.py +0 -0
  166. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_settings_user.py +0 -0
  167. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/_setup_bionty_sources.py +0 -0
  168. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/cloud_sqlite_locker.py +0 -0
  169. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/django.py +0 -0
  170. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/lamindb_setup/dev/upath.py +0 -0
  171. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/noxfile.py +0 -0
  172. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/pyproject.toml +0 -0
  173. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  174. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  175. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/conftest.py +0 -0
  176. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/test-notebooks/no-title.ipynb +0 -0
  177. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/test-notebooks/not-initialized.ipynb +0 -0
  178. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/test-notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  179. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/test-notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  180. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/notebooks/test.py +0 -0
  181. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-only/conftest.py +0 -0
  182. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-only/test_cli.py +0 -0
  183. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-only/test_django.py +0 -0
  184. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-only/test_switch_and_fallback_env.py +0 -0
  185. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_delete_instance.py +0 -0
  186. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_init_instance.py +0 -0
  187. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_load_instance.py +0 -0
  188. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_login.py +0 -0
  189. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_migrate.py +0 -0
  190. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/prod-staging/test_set_storage.py +0 -0
  191. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/test_load_persistent_instance.py +0 -0
  192. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lamindb-setup/tests/test_vault.py +0 -0
  193. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  194. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  195. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  196. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/.gitignore +0 -0
  197. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
  198. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/LICENSE +0 -0
  199. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/README.md +0 -0
  200. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/docs/index.md +0 -0
  201. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/docs/reference.md +0 -0
  202. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  203. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
  204. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/dev/__init__.py +0 -0
  205. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/dev/_settings.py +0 -0
  206. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -0
  207. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -0
  208. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -0
  209. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -0
  210. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -0
  211. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -0
  212. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -0
  213. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -0
  214. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -0
  215. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -0
  216. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -0
  217. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -0
  218. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -0
  219. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -0
  220. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -0
  221. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -0
  222. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -0
  223. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -0
  224. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -0
  225. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  226. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/noxfile.py +0 -0
  227. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  228. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  229. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  230. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  231. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/.gitignore +0 -0
  232. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  233. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/CHANGELOG.md +0 -0
  234. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/LICENSE +0 -0
  235. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/README.md +0 -0
  236. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  237. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
  238. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
  239. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
  240. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
  241. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
  242. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
  243. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
  244. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
  245. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
  246. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
  247. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
  248. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
  249. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
  250. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
  251. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
  252. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
  253. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
  254. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
  255. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
  256. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
  257. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
  258. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
  259. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
  260. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
  261. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
  262. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
  263. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  264. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  265. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/types.py +0 -0
  266. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
  267. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/noxfile.py +0 -0
  268. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/pyproject.toml +0 -0
  269. {lamindb-0.57.1 → lamindb-0.58.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
  270. {lamindb-0.57.1 → lamindb-0.58.0}/tests/conftest.py +0 -0
  271. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_cache.py +0 -0
  272. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_data.py +0 -0
  273. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_dataset.py +0 -0
  274. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_db.py +0 -0
  275. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_delete.py +0 -0
  276. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_feature.py +0 -0
  277. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_feature_manager.py +0 -0
  278. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_feature_set.py +0 -0
  279. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_file.py +0 -0
  280. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_from_values.py +0 -0
  281. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_hashing.py +0 -0
  282. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_label_manager.py +0 -0
  283. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_manager.py +0 -0
  284. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_queryset.py +0 -0
  285. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_registry.py +0 -0
  286. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_run.py +0 -0
  287. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_run_context.py +0 -0
  288. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_save.py +0 -0
  289. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_settings.py +0 -0
  290. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_storage.py +0 -0
  291. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_transfer.py +0 -0
  292. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_transform.py +0 -0
  293. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_ulabel.py +0 -0
  294. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_validate.py +0 -0
  295. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_versioning.py +0 -0
  296. {lamindb-0.57.1 → lamindb-0.58.0}/tests/test_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.57.1
3
+ Version: 0.58.0
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.8
@@ -8,14 +8,14 @@ Description-Content-Type: text/markdown
8
8
  Classifier: Programming Language :: Python :: 3.8
9
9
  Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
- Requires-Dist: lnschema_core==0.52.0
11
+ Requires-Dist: lnschema_core==0.52.1
12
12
  Requires-Dist: lamindb_setup==0.55.6
13
- Requires-Dist: lamin_utils==0.11.4
13
+ Requires-Dist: lamin_utils==0.11.5
14
14
  Requires-Dist: rapidfuzz
15
15
  Requires-Dist: pyarrow
16
16
  Requires-Dist: typing_extensions!=4.6.0
17
17
  Requires-Dist: python-dateutil
18
- Requires-Dist: anndata>=0.9.1,<=0.10.1
18
+ Requires-Dist: anndata>=0.8.0,<=0.10.2
19
19
  Requires-Dist: fsspec
20
20
  Requires-Dist: pandas
21
21
  Requires-Dist: graphviz
@@ -24,7 +24,7 @@ Requires-Dist: urllib3<2 ; extra == "aws"
24
24
  Requires-Dist: boto3==1.28.17 ; extra == "aws"
25
25
  Requires-Dist: aiobotocore==2.5.4 ; extra == "aws"
26
26
  Requires-Dist: fsspec[s3]==2023.9.0 ; extra == "aws"
27
- Requires-Dist: lnschema_bionty==0.33.0 ; extra == "bionty"
27
+ Requires-Dist: lnschema_bionty==0.34.0 ; extra == "bionty"
28
28
  Requires-Dist: pandas<2 ; extra == "dev"
29
29
  Requires-Dist: pre-commit ; extra == "dev"
30
30
  Requires-Dist: nox ; extra == "dev"
@@ -825,7 +825,31 @@
825
825
  "source": [
826
826
  "Sometimes, the default source doesn't contain the ontology term you are looking for.\n",
827
827
  "\n",
828
- "You can then specify to create a record from a non-default source:"
828
+ "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:"
829
+ ]
830
+ },
831
+ {
832
+ "cell_type": "code",
833
+ "execution_count": null,
834
+ "metadata": {
835
+ "tags": [
836
+ "hide-output"
837
+ ]
838
+ },
839
+ "outputs": [],
840
+ "source": [
841
+ "bionty_source = lb.BiontySource.filter(entity=\"Organism\", source=\"ncbitaxon\").one()\n",
842
+ "iris_setosa = lb.Organism.from_bionty(name=\"iris setosa\", bionty_source=bionty_source)\n",
843
+ "iris_setosa.save()"
844
+ ]
845
+ },
846
+ {
847
+ "cell_type": "code",
848
+ "execution_count": null,
849
+ "metadata": {},
850
+ "outputs": [],
851
+ "source": [
852
+ "iris_setosa"
829
853
  ]
830
854
  },
831
855
  {
@@ -834,9 +858,7 @@
834
858
  "metadata": {},
835
859
  "outputs": [],
836
860
  "source": [
837
- "bionty_source = lb.BiontySource.filter(entity=\"Phenotype\", source=\"pato\").one()\n",
838
- "age = lb.Phenotype.from_bionty(name=\"age\", bionty_source=bionty_source)\n",
839
- "age"
861
+ "iris_setosa.bionty_source"
840
862
  ]
841
863
  },
842
864
  {
@@ -845,7 +867,7 @@
845
867
  "metadata": {},
846
868
  "outputs": [],
847
869
  "source": [
848
- "age.bionty_source"
870
+ "iris_setosa.parents.df()"
849
871
  ]
850
872
  },
851
873
  {
@@ -855,16 +877,40 @@
855
877
  "Analogously, you can pass `bionty_source` to bulk-create records from a non-default source:"
856
878
  ]
857
879
  },
880
+ {
881
+ "cell_type": "code",
882
+ "execution_count": null,
883
+ "metadata": {
884
+ "tags": [
885
+ "hide-output"
886
+ ]
887
+ },
888
+ "outputs": [],
889
+ "source": [
890
+ "records = lb.Organism.from_values(\n",
891
+ " [\"iris setosa\", \"iris versicolor\", \"iris virginica\"], bionty_source=bionty_source\n",
892
+ ")\n",
893
+ "ln.save(records)"
894
+ ]
895
+ },
858
896
  {
859
897
  "cell_type": "code",
860
898
  "execution_count": null,
861
899
  "metadata": {},
862
900
  "outputs": [],
863
901
  "source": [
864
- "records = lb.Phenotype.from_values([\"age\", \"life span\"], bionty_source=bionty_source)\n",
865
902
  "records"
866
903
  ]
867
904
  },
905
+ {
906
+ "cell_type": "code",
907
+ "execution_count": null,
908
+ "metadata": {},
909
+ "outputs": [],
910
+ "source": [
911
+ "iris_setosa.parents.get(name=\"iris\").view_parents(with_children=True)"
912
+ ]
913
+ },
868
914
  {
869
915
  "cell_type": "code",
870
916
  "execution_count": null,
@@ -896,7 +942,7 @@
896
942
  "name": "python",
897
943
  "nbconvert_exporter": "python",
898
944
  "pygments_lexer": "ipython3",
899
- "version": "3.10.13"
945
+ "version": "3.9.16"
900
946
  },
901
947
  "nbproject": {
902
948
  "id": "s7F7PezA1HdQ",
@@ -5,8 +5,20 @@
5
5
  .. role:: small
6
6
  ```
7
7
 
8
+ ## 0.58
9
+
10
+ ### 0.58.0 {small}`2023-10-24`
11
+
12
+ - ⚡️ Speed up dataset creation in presence of millions of feature links [PR1248](https://github.com/laminlabs/lamindb/pull/1248) [@falexwolf](https://github.com/falexwolf)
13
+ - 📝 Add a faq for custom validator [PR1249](https://github.com/laminlabs/lamindb/pull/1249) [@sunnyosun](https://github.com/sunnyosun)
14
+ - ✨ Add `parents` to `Organism` [PR1245](https://github.com/laminlabs/lamindb/pull/1245) [@sunnyosun](https://github.com/sunnyosun)
15
+
8
16
  ## 0.57
9
17
 
18
+ ### 0.57.2 {small}`2023-10-23`
19
+
20
+ - ➕ Allow more anndata versions [PR1244](https://github.com/laminlabs/lamindb/pull/1244) [@Koncopd](https://github.com/Koncopd)
21
+
10
22
  ### 0.57.1 {small}`2023-10-20`
11
23
 
12
24
  - 🎨 Display uid instead of id in search result [PR1239](https://github.com/laminlabs/lamindb/pull/1239) [@sunnyosun](https://github.com/sunnyosun)
@@ -6,7 +6,7 @@
6
6
  "id": "41b33aca-1a7d-42b4-afa6-c9a5bccc060c",
7
7
  "metadata": {},
8
8
  "source": [
9
- "# Are LaminDB's operations ACID?"
9
+ "# Will data & metadata stay in sync?"
10
10
  ]
11
11
  },
12
12
  {
@@ -15,9 +15,15 @@
15
15
  "id": "2096971d",
16
16
  "metadata": {},
17
17
  "source": [
18
- "Yes, they are [ACID](https://en.wikipedia.org/wiki/ACID).\n",
19
- "\n",
20
- "Here, we walk through different errors that can occur while saving files & metadata records, and show that the LaminDB instance does not get corrupted by dangling metadata or files."
18
+ "Here, we walk through different errors that can occur while saving files & metadata records, and show that the LaminDB instance does not get corrupted by dangling metadata or files. You could say transactions across data & metadata are [ACID](https://en.wikipedia.org/wiki/ACID)."
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "markdown",
23
+ "id": "cf453c11",
24
+ "metadata": {},
25
+ "source": [
26
+ "## Setup"
21
27
  ]
22
28
  },
23
29
  {
@@ -29,7 +35,16 @@
29
35
  "source": [
30
36
  "from laminci.db import setup_local_test_postgres\n",
31
37
  "\n",
32
- "pgurl = setup_local_test_postgres()\n",
38
+ "pgurl = setup_local_test_postgres()"
39
+ ]
40
+ },
41
+ {
42
+ "cell_type": "code",
43
+ "execution_count": null,
44
+ "id": "71969f0c",
45
+ "metadata": {},
46
+ "outputs": [],
47
+ "source": [
33
48
  "!lamin init --db {pgurl} --storage ./test-acid"
34
49
  ]
35
50
  },
@@ -44,8 +59,7 @@
44
59
  "source": [
45
60
  "import pytest\n",
46
61
  "import lamindb as ln\n",
47
- "from upath import UPath\n",
48
- "from django.db.utils import IntegrityError"
62
+ "from upath import UPath"
49
63
  ]
50
64
  },
51
65
  {
@@ -157,15 +171,6 @@
157
171
  "## Save error during bulk creation"
158
172
  ]
159
173
  },
160
- {
161
- "attachments": {},
162
- "cell_type": "markdown",
163
- "id": "a19ab581",
164
- "metadata": {},
165
- "source": [
166
- "### Error during metadata save"
167
- ]
168
- },
169
174
  {
170
175
  "cell_type": "code",
171
176
  "execution_count": null,
@@ -175,7 +180,7 @@
175
180
  "source": [
176
181
  "filepath = ln.dev.datasets.file_jpg_paradisi05()\n",
177
182
  "file = ln.File(filepath, description=\"My image\")\n",
178
- "files = [file, \"this is not an Registry\"]"
183
+ "files = [file, \"this is not a record\"]"
179
184
  ]
180
185
  },
181
186
  {
@@ -219,15 +224,6 @@
219
224
  "assert len(files) == 0"
220
225
  ]
221
226
  },
222
- {
223
- "attachments": {},
224
- "cell_type": "markdown",
225
- "id": "1c6c06d5",
226
- "metadata": {},
227
- "source": [
228
- "## Error in one of the uploads"
229
- ]
230
- },
231
227
  {
232
228
  "attachments": {},
233
229
  "cell_type": "markdown",
@@ -237,15 +233,6 @@
237
233
  "If a list of data objects is passed to `ln.save()` and the upload of one of these data objects fails, the successful uploads are maintained and a `RuntimeError` is raised, listing the successfully uploaded data objects up until that point."
238
234
  ]
239
235
  },
240
- {
241
- "attachments": {},
242
- "cell_type": "markdown",
243
- "id": "f1738dfa",
244
- "metadata": {},
245
- "source": [
246
- "Need a proper test here!"
247
- ]
248
- },
249
236
  {
250
237
  "cell_type": "code",
251
238
  "execution_count": null,
@@ -6,7 +6,7 @@
6
6
  "id": "fe2d8275-0883-4ffe-9912-920b28efc9d2",
7
7
  "metadata": {},
8
8
  "source": [
9
- "# Are LaminDB's operations idempotent? (What happens if I save the same files & records twice?)"
9
+ "# What happens if I save the same files & records twice?"
10
10
  ]
11
11
  },
12
12
  {
@@ -15,9 +15,9 @@
15
15
  "id": "dda847ba-c174-4442-acfb-752d6a875645",
16
16
  "metadata": {},
17
17
  "source": [
18
- "LaminDB's operations are idempotent. This is essential for two reasons:\n",
19
- "- Avoid that re-running a workflow errors.\n",
20
- "- Avoid that re-running a workflow inserts duplicated data.\n",
18
+ "LaminDB's operations are idempotent in the sense defined in this document.\n",
19
+ "\n",
20
+ "This allows you to re-run a notebook or script without erroring or duplicating data. Similar behavior holds for human data entry.\n",
21
21
  "\n",
22
22
  "## Summary\n",
23
23
  "\n",
@@ -27,7 +27,7 @@
27
27
  "\n",
28
28
  "1. LaminDB will warn you if a record with similar `name` exists and display a table of similar existing records.\n",
29
29
  "2. You can then decide whether you'd like to save a record to the database or rather query an existing one from the table.\n",
30
- "3. If a name already has an exact match in a registry, LaminDB will return it instead of creating a new record.\n",
30
+ "3. If a name already has an exact match in a registry, LaminDB will return it instead of creating a new record. For versioned entities, also the version must be passed.\n",
31
31
  "\n",
32
32
  "If you set {attr}`~lamindb.dev.Settings.upon_create_search_names` to `False`, you'll directly populate the DB.\n",
33
33
  "\n",
@@ -251,7 +251,7 @@
251
251
  "id": "01bfec00",
252
252
  "metadata": {},
253
253
  "source": [
254
- "### Data artifacts"
254
+ "### Files"
255
255
  ]
256
256
  },
257
257
  {
@@ -260,7 +260,7 @@
260
260
  "id": "431fbcc4",
261
261
  "metadata": {},
262
262
  "source": [
263
- "#### `upon_file_create_if_hash_exists = \"warn_return_existing\"`"
263
+ "#### Warn upon trying to re-ingest an existing file"
264
264
  ]
265
265
  },
266
266
  {
@@ -380,7 +380,7 @@
380
380
  "id": "721bbe4e",
381
381
  "metadata": {},
382
382
  "source": [
383
- "#### `upon_file_create_if_hash_exists = \"error\"`"
383
+ "#### Error upon trying to re-ingest an existing file"
384
384
  ]
385
385
  },
386
386
  {
@@ -419,7 +419,15 @@
419
419
  "id": "cff06da7",
420
420
  "metadata": {},
421
421
  "source": [
422
- "#### `upon_file_create_if_hash_exists = \"warn_create_new\"`"
422
+ "#### Warn and create a new file"
423
+ ]
424
+ },
425
+ {
426
+ "cell_type": "markdown",
427
+ "id": "fd806cd8",
428
+ "metadata": {},
429
+ "source": [
430
+ "Lastly, let us discuss the following setting:"
423
431
  ]
424
432
  },
425
433
  {
@@ -10,7 +10,11 @@
10
10
  {
11
11
  "cell_type": "code",
12
12
  "execution_count": null,
13
- "metadata": {},
13
+ "metadata": {
14
+ "tags": [
15
+ "hide-output"
16
+ ]
17
+ },
14
18
  "outputs": [],
15
19
  "source": [
16
20
  "!lamin init --storage ./test-notebooks"
@@ -31,7 +35,7 @@
31
35
  "cell_type": "markdown",
32
36
  "metadata": {},
33
37
  "source": [
34
- "The following call will create a new run, if there is none in the database, yet."
38
+ "The following call will create a new run if there is none in the database."
35
39
  ]
36
40
  },
37
41
  {
@@ -43,40 +47,29 @@
43
47
  "ln.track()"
44
48
  ]
45
49
  },
46
- {
47
- "cell_type": "code",
48
- "execution_count": null,
49
- "metadata": {
50
- "tags": []
51
- },
52
- "outputs": [],
53
- "source": [
54
- "run_id = ln.dev.run_context.run.id"
55
- ]
56
- },
57
50
  {
58
51
  "cell_type": "markdown",
59
52
  "metadata": {},
60
53
  "source": [
61
- "Calling `ln.track()` when there is a new run in the database will load the latest run:"
54
+ "Let's store this run:"
62
55
  ]
63
56
  },
64
57
  {
65
58
  "cell_type": "code",
66
59
  "execution_count": null,
67
- "metadata": {},
60
+ "metadata": {
61
+ "tags": []
62
+ },
68
63
  "outputs": [],
69
64
  "source": [
70
- "ln.track()"
65
+ "run = ln.dev.run_context.run"
71
66
  ]
72
67
  },
73
68
  {
74
- "cell_type": "code",
75
- "execution_count": null,
69
+ "cell_type": "markdown",
76
70
  "metadata": {},
77
- "outputs": [],
78
71
  "source": [
79
- "ln.Run.filter().df()"
72
+ "If there is a run in the database, `ln.track()` will load the latest run:"
80
73
  ]
81
74
  },
82
75
  {
@@ -85,37 +78,32 @@
85
78
  "metadata": {},
86
79
  "outputs": [],
87
80
  "source": [
88
- "run_id"
81
+ "ln.track()"
89
82
  ]
90
83
  },
91
84
  {
92
- "cell_type": "code",
93
- "execution_count": null,
85
+ "cell_type": "markdown",
94
86
  "metadata": {},
95
- "outputs": [],
96
87
  "source": [
97
- "ln.run_context.run.id"
88
+ "Check whether this is in fact the case:"
98
89
  ]
99
90
  },
100
91
  {
101
92
  "cell_type": "code",
102
93
  "execution_count": null,
103
94
  "metadata": {
104
- "tags": [
105
- "hide-cell"
106
- ]
95
+ "tags": []
107
96
  },
108
97
  "outputs": [],
109
98
  "source": [
110
- "# this tests that we're still using the previous run\n",
111
- "assert run_id == ln.run_context.run.id"
99
+ "assert run.id == ln.run_context.run.id"
112
100
  ]
113
101
  },
114
102
  {
115
103
  "cell_type": "markdown",
116
104
  "metadata": {},
117
105
  "source": [
118
- "If you'd like to create a new run, pass `new_run=True`."
106
+ "If you'd like to force creating a new run, pass `new_run=True` (this is the default outside of notebooks)."
119
107
  ]
120
108
  },
121
109
  {
@@ -127,6 +115,13 @@
127
115
  "ln.track(new_run=True)"
128
116
  ]
129
117
  },
118
+ {
119
+ "cell_type": "markdown",
120
+ "metadata": {},
121
+ "source": [
122
+ "If you'd like to save a notebook including its execution report & source file, use the CLI: `lamin save <my-notebook.ipynb>`"
123
+ ]
124
+ },
130
125
  {
131
126
  "cell_type": "code",
132
127
  "execution_count": null,
@@ -137,15 +132,9 @@
137
132
  },
138
133
  "outputs": [],
139
134
  "source": [
140
- "assert run_id != ln.run_context.run.id"
141
- ]
142
- },
143
- {
144
- "cell_type": "code",
145
- "execution_count": null,
146
- "metadata": {},
147
- "outputs": [],
148
- "source": [
135
+ "# test new run id differs from previous run id.\n",
136
+ "assert run.id != ln.run_context.run.id\n",
137
+ "\n",
149
138
  "# test re-initialize notebook if it got renamed\n",
150
139
  "from lamindb.dev._run_context import reinitialize_notebook\n",
151
140
  "\n",
@@ -154,15 +143,8 @@
154
143
  "# outside of CI, will expect interactive user input\n",
155
144
  "transform, metadata = reinitialize_notebook(transform, ask_for_new_id=False)\n",
156
145
  "\n",
157
- "assert not transform.uid.startswith(\"FkCpHEubpD\")"
158
- ]
159
- },
160
- {
161
- "cell_type": "code",
162
- "execution_count": null,
163
- "metadata": {},
164
- "outputs": [],
165
- "source": [
146
+ "assert not transform.uid.startswith(\"FkCpHEubpD\")\n",
147
+ "\n",
166
148
  "!lamin delete --force test-notebooks\n",
167
149
  "!rm -r test-notebooks"
168
150
  ]
@@ -6,7 +6,7 @@
6
6
  "id": "261ca5e4-f46f-4361-9c3e-f944bbe14484",
7
7
  "metadata": {},
8
8
  "source": [
9
- "# What happens when importing lamindb and the instance it not yet setup?"
9
+ "# What happens when importing lamindb and the instance is not yet setup?"
10
10
  ]
11
11
  },
12
12
  {
@@ -16,10 +16,21 @@
16
16
  "Yes, if you switch {attr}`~lamindb.dev.Settings.track_run_inputs` to `False`."
17
17
  ]
18
18
  },
19
+ {
20
+ "cell_type": "markdown",
21
+ "metadata": {},
22
+ "source": [
23
+ "## Setup"
24
+ ]
25
+ },
19
26
  {
20
27
  "cell_type": "code",
21
28
  "execution_count": null,
22
- "metadata": {},
29
+ "metadata": {
30
+ "tags": [
31
+ "hide-output"
32
+ ]
33
+ },
23
34
  "outputs": [],
24
35
  "source": [
25
36
  "!lamin init --storage test-run-inputs"
@@ -140,7 +151,7 @@
140
151
  "cell_type": "markdown",
141
152
  "metadata": {},
142
153
  "source": [
143
- "## Manually track file as run input with `is_run_input=True`"
154
+ "## Manually track file as run input"
144
155
  ]
145
156
  },
146
157
  {