lamindb 1.5.0__tar.gz → 1.5.2__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 (587) hide show
  1. {lamindb-1.5.0 → lamindb-1.5.2}/.github/workflows/build.yml +2 -2
  2. {lamindb-1.5.0 → lamindb-1.5.2}/.pre-commit-config.yaml +2 -1
  3. {lamindb-1.5.0 → lamindb-1.5.2}/PKG-INFO +1 -1
  4. {lamindb-1.5.0 → lamindb-1.5.2}/docs/arrays.ipynb +15 -8
  5. {lamindb-1.5.0 → lamindb-1.5.2}/docs/curate.ipynb +1 -1
  6. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/anndata-accessor.ipynb +2 -2
  7. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/__init__.py +1 -1
  8. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_context.py +28 -15
  9. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_tiledbsoma.py +29 -13
  10. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/core.py +33 -43
  11. lamindb-1.5.2/lamindb/migrations/0093_alter_schemacomponent_unique_together.py +16 -0
  12. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_feature_manager.py +24 -8
  13. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/artifact.py +10 -11
  14. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/has_parents.py +67 -12
  15. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/query_set.py +3 -2
  16. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/record.py +3 -4
  17. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/schema.py +23 -28
  18. {lamindb-1.5.0 → lamindb-1.5.2}/noxfile.py +2 -6
  19. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/conftest.py +4 -4
  20. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_files.py +2 -2
  21. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_notebooks.py +1 -1
  22. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_scripts.py +1 -1
  23. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/conftest.py +4 -0
  24. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_collection.py +4 -13
  25. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_feature.py +1 -1
  26. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_load.py +10 -0
  27. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_curators_examples.py +16 -9
  28. {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  29. {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  30. {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
  31. {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
  32. {lamindb-1.5.0 → lamindb-1.5.2}/.github/workflows/doc-changes.yml +0 -0
  33. {lamindb-1.5.0 → lamindb-1.5.2}/.gitignore +0 -0
  34. {lamindb-1.5.0 → lamindb-1.5.2}/.gitmodules +0 -0
  35. {lamindb-1.5.0 → lamindb-1.5.2}/CONTRIBUTING.md +0 -0
  36. {lamindb-1.5.0 → lamindb-1.5.2}/LICENSE +0 -0
  37. {lamindb-1.5.0 → lamindb-1.5.2}/README.md +0 -0
  38. {lamindb-1.5.0 → lamindb-1.5.2}/docs/api.md +0 -0
  39. {lamindb-1.5.0 → lamindb-1.5.2}/docs/bio-registries.ipynb +0 -0
  40. {lamindb-1.5.0 → lamindb-1.5.2}/docs/bionty.md +0 -0
  41. {lamindb-1.5.0 → lamindb-1.5.2}/docs/changelog.md +0 -0
  42. {lamindb-1.5.0 → lamindb-1.5.2}/docs/clinicore.md +0 -0
  43. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/acid.ipynb +0 -0
  44. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/curate-any.ipynb +0 -0
  45. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/delete.ipynb +0 -0
  46. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/idempotency.ipynb +0 -0
  47. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/import-modules.ipynb +0 -0
  48. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/keep-artifacts-local.ipynb +0 -0
  49. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/pydantic-pandera.ipynb +0 -0
  50. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/reference-field.ipynb +0 -0
  51. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/search.ipynb +0 -0
  52. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/setup.ipynb +0 -0
  53. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/symbol-mapping.ipynb +0 -0
  54. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/test_notebooks.py +0 -0
  55. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/track-run-inputs.ipynb +0 -0
  56. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/validate-fields.ipynb +0 -0
  57. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/visibility.ipynb +0 -0
  58. {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq.md +0 -0
  59. {lamindb-1.5.0 → lamindb-1.5.2}/docs/guide.md +0 -0
  60. {lamindb-1.5.0 → lamindb-1.5.2}/docs/includes/installation.md +0 -0
  61. {lamindb-1.5.0 → lamindb-1.5.2}/docs/index.md +0 -0
  62. {lamindb-1.5.0 → lamindb-1.5.2}/docs/lamindb.md +0 -0
  63. {lamindb-1.5.0 → lamindb-1.5.2}/docs/query-search.md +0 -0
  64. {lamindb-1.5.0 → lamindb-1.5.2}/docs/registries.ipynb +0 -0
  65. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate-mudata.py +0 -0
  66. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_anndata_flexible.py +0 -0
  67. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_dataframe_flexible.py +0 -0
  68. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_dataframe_minimal_errors.py +0 -0
  69. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_spatialdata.py +0 -0
  70. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_mini_immuno_features_labels.py +0 -0
  71. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_mini_immuno_schema_flexible.py +0 -0
  72. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_schema_anndata_ensembl_gene_ids_and_valid_features_in_obs.py +0 -0
  73. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_schema_spatialdata.py +0 -0
  74. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_valid_features.py +0 -0
  75. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/ingest_mini_immuno_datasets.py +0 -0
  76. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-track-and-finish.py +0 -0
  77. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-track-with-params.py +0 -0
  78. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-workflow.py +0 -0
  79. {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/synced-with-git.py +0 -0
  80. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/add-replace-cache.ipynb +0 -0
  81. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  82. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/iris.csv +0 -0
  83. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/iris.data +0 -0
  84. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/new_iris.csv +0 -0
  85. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test_notebooks.py +0 -0
  86. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  87. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/upload.ipynb +0 -0
  88. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/vitessce.ipynb +0 -0
  89. {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage.md +0 -0
  90. {lamindb-1.5.0 → lamindb-1.5.2}/docs/test_notebooks.py +0 -0
  91. {lamindb-1.5.0 → lamindb-1.5.2}/docs/track.ipynb +0 -0
  92. {lamindb-1.5.0 → lamindb-1.5.2}/docs/transfer.ipynb +0 -0
  93. {lamindb-1.5.0 → lamindb-1.5.2}/docs/wetlab.md +0 -0
  94. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_finish.py +0 -0
  95. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_tracked.py +0 -0
  96. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_view.py +0 -0
  97. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/__init__.py +0 -0
  98. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/fields.py +0 -0
  99. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/ids.py +0 -0
  100. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/types.py +0 -0
  101. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/uids.py +0 -0
  102. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/users.py +0 -0
  103. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/__init__.py +0 -0
  104. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_compat.py +0 -0
  105. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_mapped_collection.py +0 -0
  106. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_settings.py +0 -0
  107. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_sync_git.py +0 -0
  108. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_track_environment.py +0 -0
  109. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/__init__.py +0 -0
  110. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_core.py +0 -0
  111. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_fake.py +0 -0
  112. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_small.py +0 -0
  113. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/mini_immuno.py +0 -0
  114. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/exceptions.py +0 -0
  115. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/loaders.py +0 -0
  116. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/__init__.py +0 -0
  117. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_anndata_accessor.py +0 -0
  118. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_anndata_sizes.py +0 -0
  119. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_backed_access.py +0 -0
  120. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_polars_lazy_df.py +0 -0
  121. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
  122. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_valid_suffixes.py +0 -0
  123. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_zarr.py +0 -0
  124. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/objects.py +0 -0
  125. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/paths.py +0 -0
  126. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/__init__.py +0 -0
  127. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/_annotation_settings.py +0 -0
  128. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/_creation_settings.py +0 -0
  129. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/types.py +0 -0
  130. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/__init__.py +0 -0
  131. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_cellxgene_schemas/__init__.py +0 -0
  132. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_cellxgene_schemas/schema_versions.csv +0 -0
  133. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_legacy.py +0 -0
  134. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/errors.py +0 -0
  135. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/__init__.py +0 -0
  136. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/__init__.py +0 -0
  137. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/_anndata.py +0 -0
  138. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/_simple.py +0 -0
  139. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/integrations/__init__.py +0 -0
  140. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/integrations/_vitessce.py +0 -0
  141. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0069_squashed.py +0 -0
  142. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0070_lamindbv1_migrate_data.py +0 -0
  143. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0071_lamindbv1_migrate_schema.py +0 -0
  144. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0072_remove_user__branch_code_remove_user_aux_and_more.py +0 -0
  145. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0073_merge_ourprojects.py +0 -0
  146. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0074_lamindbv1_part4.py +0 -0
  147. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0075_lamindbv1_part5.py +0 -0
  148. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0076_lamindbv1_part6.py +0 -0
  149. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0077_lamindbv1_part6b.py +0 -0
  150. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0078_lamindbv1_part6c.py +0 -0
  151. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0079_alter_rundata_value_json_and_more.py +0 -0
  152. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0080_polish_lamindbv1.py +0 -0
  153. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0081_revert_textfield_collection.py +0 -0
  154. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0082_alter_feature_dtype.py +0 -0
  155. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0083_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
  156. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0084_alter_schemafeature_feature_and_more.py +0 -0
  157. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0085_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
  158. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0086_various.py +0 -0
  159. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0087_rename__schemas_m2m_artifact_feature_sets_and_more.py +0 -0
  160. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0088_schema_components.py +0 -0
  161. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0089_subsequent_runs.py +0 -0
  162. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0090_runproject_project_runs.py +0 -0
  163. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0090_squashed.py +0 -0
  164. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0091_alter_featurevalue_options_alter_space_options_and_more.py +0 -0
  165. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0092_alter_artifactfeaturevalue_artifact_and_more.py +0 -0
  166. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/__init__.py +0 -0
  167. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/__init__.py +0 -0
  168. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_describe.py +0 -0
  169. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_django.py +0 -0
  170. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_from_values.py +0 -0
  171. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_is_versioned.py +0 -0
  172. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_label_manager.py +0 -0
  173. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_relations.py +0 -0
  174. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/artifact_set.py +0 -0
  175. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/can_curate.py +0 -0
  176. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/collection.py +0 -0
  177. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/core.py +0 -0
  178. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/feature.py +0 -0
  179. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/flextable.py +0 -0
  180. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/project.py +0 -0
  181. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/query_manager.py +0 -0
  182. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/run.py +0 -0
  183. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/save.py +0 -0
  184. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/transform.py +0 -0
  185. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/ulabel.py +0 -0
  186. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/setup/__init__.py +0 -0
  187. {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/setup/core/__init__.py +0 -0
  188. {lamindb-1.5.0 → lamindb-1.5.2}/pyproject.toml +0 -0
  189. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/build.yml +0 -0
  190. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
  191. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
  192. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.gitignore +0 -0
  193. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.pre-commit-config.yaml +0 -0
  194. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/LICENSE +0 -0
  195. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/README.md +0 -0
  196. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/__init__.py +0 -0
  197. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_biorecord.py +0 -0
  198. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_organism.py +0 -0
  199. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_shared_docstrings.py +0 -0
  200. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_source.py +0 -0
  201. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/__init__.py +0 -0
  202. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_display_sources.py +0 -0
  203. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_ontology.py +0 -0
  204. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_public_ontology.py +0 -0
  205. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_settings.py +0 -0
  206. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/__init__.py +0 -0
  207. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_doc_util.py +0 -0
  208. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
  209. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_io.py +0 -0
  210. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/__init__.py +0 -0
  211. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
  212. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
  213. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
  214. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
  215. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
  216. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
  217. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_disease.py +0 -0
  218. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_drug.py +0 -0
  219. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
  220. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
  221. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_gene.py +0 -0
  222. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_organism.py +0 -0
  223. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
  224. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
  225. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_protein.py +0 -0
  226. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
  227. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
  228. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
  229. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
  230. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
  231. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
  232. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/sources.yaml +0 -0
  233. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/__init__.py +0 -0
  234. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_add_ontology.py +0 -0
  235. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_settings.py +0 -0
  236. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_source.py +0 -0
  237. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/ids.py +0 -0
  238. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
  239. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
  240. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
  241. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
  242. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
  243. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
  244. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
  245. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
  246. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
  247. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  248. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
  249. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  250. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0040_rename_feature_ref_is_symbol_artifactgene_feature_ref_is_name_and_more.py +0 -0
  251. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0041_alter_artifactcellline_artifact_and_more.py +0 -0
  252. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0042_lamindbv1.py +0 -0
  253. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0043_lamindbv2_part2.py +0 -0
  254. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0044_alter_cellline_space_alter_cellmarker_space_and_more.py +0 -0
  255. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0045_rename_aux_cellline__aux_rename_aux_cellmarker__aux_and_more.py +0 -0
  256. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0046_alter_cellline__aux_alter_cellmarker__aux_and_more.py +0 -0
  257. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0047_lamindbv1_part5.py +0 -0
  258. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0048_lamindbv1_part6.py +0 -0
  259. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0049_alter_schemacellmarker_cellmarker_and_more.py +0 -0
  260. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0050_alter_source_uid.py +0 -0
  261. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0050_squashed.py +0 -0
  262. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/__init__.py +0 -0
  263. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/models.py +0 -0
  264. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/uids.py +0 -0
  265. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/concepts.md +0 -0
  266. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/config.md +0 -0
  267. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/test_notebooks.py +0 -0
  268. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide.md +0 -0
  269. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/index.md +0 -0
  270. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/reference.md +0 -0
  271. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/noxfile.py +0 -0
  272. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/pyproject.toml +0 -0
  273. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/dev/test_handle_sources.py +0 -0
  274. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/dev/test_io.py +0 -0
  275. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_bfxpipeline.py +0 -0
  276. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_biosample.py +0 -0
  277. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_cellline.py +0 -0
  278. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_cellmarker.py +0 -0
  279. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_celltype.py +0 -0
  280. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_developmentalstage.py +0 -0
  281. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_disease.py +0 -0
  282. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_drug.py +0 -0
  283. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_ethnicity.py +0 -0
  284. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_experimentalfactor.py +0 -0
  285. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_gene.py +0 -0
  286. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_organism.py +0 -0
  287. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_pathway.py +0 -0
  288. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_phenotype.py +0 -0
  289. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_protein.py +0 -0
  290. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_tissue.py +0 -0
  291. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/test_bionty.py +0 -0
  292. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/test_ontology.py +0 -0
  293. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/conftest.py +0 -0
  294. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_models.py +0 -0
  295. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_organism_requirement.py +0 -0
  296. {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_source.py +0 -0
  297. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.github/workflows/build.yml +0 -0
  298. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.github/workflows/doc-changes.yml +0 -0
  299. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.gitignore +0 -0
  300. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.pre-commit-config.yaml +0 -0
  301. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/LICENSE +0 -0
  302. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/README.md +0 -0
  303. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/__init__.py +0 -0
  304. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/__init__.py +0 -0
  305. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_cxg_rest_api.py +0 -0
  306. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_features.py +0 -0
  307. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_gene.py +0 -0
  308. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_labels.py +0 -0
  309. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_ontology.py +0 -0
  310. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_organism.py +0 -0
  311. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/datasets.py +0 -0
  312. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/cellxgene-curate.ipynb +0 -0
  313. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/cellxgene.ipynb +0 -0
  314. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/changelog.md +0 -0
  315. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/index.md +0 -0
  316. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2023-12-15-LTS.ipynb +0 -0
  317. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2024-07-01-LTS.ipynb +0 -0
  318. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-07-25.ipynb +0 -0
  319. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-11-13.ipynb +0 -0
  320. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-12-06.ipynb +0 -0
  321. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2024-07-01-References.ipynb +0 -0
  322. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/files-meta.ipynb +0 -0
  323. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/files.ipynb +0 -0
  324. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/meta-human.ipynb +0 -0
  325. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/meta-mouse.ipynb +0 -0
  326. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks.md +0 -0
  327. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/lamin-project.yaml +0 -0
  328. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/noxfile.py +0 -0
  329. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/pyproject.toml +0 -0
  330. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/scripts/ensembl_helpers.py +0 -0
  331. {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/tests/test_notebooks.py +0 -0
  332. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.github/workflows/build.yml +0 -0
  333. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.github/workflows/doc-changes.yml +0 -0
  334. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.gitignore +0 -0
  335. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.pre-commit-config.yaml +0 -0
  336. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/LICENSE +0 -0
  337. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/README.md +0 -0
  338. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/__init__.py +0 -0
  339. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0001_initial.py +0 -0
  340. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0002_biosample_patient_biosample_project.py +0 -0
  341. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0003_alter_project_uid.py +0 -0
  342. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0004_remove_biosample_project_clinicaltrial_and_more.py +0 -0
  343. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0005_alter_biosample_created_by_alter_biosample_run_and_more.py +0 -0
  344. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0006_artifactbiosample_artifactclinicaltrial_and_more.py +0 -0
  345. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0007_alter_artifactbiosample_artifact_and_more.py +0 -0
  346. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0008_lamindbv1.py +0 -0
  347. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0009_alter_biosample_space_alter_clinicaltrial_space_and_more.py +0 -0
  348. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0010_rename_aux_biosample__aux_and_more.py +0 -0
  349. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0011_alter_biosample__aux_alter_clinicaltrial__aux_and_more.py +0 -0
  350. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0012_lamindbv1_part6.py +0 -0
  351. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0013_alter_biosample_artifacts.py +0 -0
  352. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/__init__.py +0 -0
  353. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/models.py +0 -0
  354. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/changelog.md +0 -0
  355. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/guide.md +0 -0
  356. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/index.md +0 -0
  357. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/quickstart.ipynb +0 -0
  358. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/reference.md +0 -0
  359. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/noxfile.py +0 -0
  360. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/pyproject.toml +0 -0
  361. {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/tests/test_notebooks.py +0 -0
  362. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.github/workflows/build.yml +0 -0
  363. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
  364. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.gitignore +0 -0
  365. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  366. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/LICENSE +0 -0
  367. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/README.md +0 -0
  368. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
  369. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  370. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  371. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_load.py +0 -0
  372. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  373. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_save.py +0 -0
  374. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_settings.py +0 -0
  375. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/compute/__init__.py +0 -0
  376. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/compute/modal.py +0 -0
  377. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/noxfile.py +0 -0
  378. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/pyproject.toml +0 -0
  379. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_cli.py +0 -0
  380. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_load.py +0 -0
  381. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_migrate.py +0 -0
  382. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_multi_process.py +0 -0
  383. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_parse_uid_from_code.py +0 -0
  384. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_r_code.py +0 -0
  385. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/modal/test_modal.py +0 -0
  386. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  387. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  388. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  389. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  390. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  391. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  392. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-with-params.py +0 -0
  393. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track.R +0 -0
  394. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track.qmd +0 -0
  395. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  396. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
  397. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.gitignore +0 -0
  398. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  399. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/LICENSE +0 -0
  400. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/README.md +0 -0
  401. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/changelog.md +0 -0
  402. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  403. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  404. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  405. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  406. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  407. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  408. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  409. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
  410. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  411. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  412. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  413. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  414. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  415. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  416. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +0 -0
  417. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  418. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  419. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  420. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  421. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/index.md +0 -0
  422. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/notebooks.md +0 -0
  423. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/reference.md +0 -0
  424. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/__init__.py +0 -0
  425. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  426. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  427. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  428. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  429. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  430. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_disconnect.py +0 -0
  431. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  432. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
  433. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  434. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  435. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  436. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  437. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  438. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  439. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
  440. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  441. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  442. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  443. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  444. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_aws_options.py +0 -0
  445. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  446. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  447. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  448. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  449. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
  450. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  451. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  452. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
  453. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  454. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
  455. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  456. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  457. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
  458. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  459. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  460. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  461. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  462. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  463. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  464. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  465. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  466. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
  467. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/noxfile.py +0 -0
  468. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/pyproject.toml +0 -0
  469. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +0 -0
  470. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
  471. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  472. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  473. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_edge_request.py +0 -0
  474. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
  475. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  476. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +0 -0
  477. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  478. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  479. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  480. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  481. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/scripts/script-connect-fine-grained-access.py +0 -0
  482. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  483. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
  484. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  485. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_aws_options_manager.py +0 -0
  486. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  487. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
  488. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  489. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  490. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
  491. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  492. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  493. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  494. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_settings.py +0 -0
  495. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  496. {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  497. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.github/workflows/build.yml +0 -0
  498. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
  499. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.gitignore +0 -0
  500. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.pre-commit-config.yaml +0 -0
  501. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/README.md +0 -0
  502. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/changelog.md +0 -0
  503. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/get-started.md +0 -0
  504. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/pert-curator.ipynb +0 -0
  505. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/pert-registries.ipynb +0 -0
  506. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide.md +0 -0
  507. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/index.md +0 -0
  508. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/reference.md +0 -0
  509. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/noxfile.py +0 -0
  510. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/pyproject.toml +0 -0
  511. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/tests/test_integrity.py +0 -0
  512. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/tests/test_notebooks.py +0 -0
  513. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/__init__.py +0 -0
  514. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0025_squashed.py +0 -0
  515. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0026_alter_biosample_artifacts_alter_techsample_artifacts.py +0 -0
  516. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0027_rename_treatment_add_donor.py +0 -0
  517. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0028_remove_combinationperturbation_compounds_and_more.py +0 -0
  518. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0029_artifactbiologic_biologic_artifactbiologic_biologic.py +0 -0
  519. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0030_lamindbv1.py +0 -0
  520. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0031_alter_biologic_space_alter_biosample_space_and_more.py +0 -0
  521. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0032_rename_aux_biologic__aux_rename_aux_biosample__aux_and_more.py +0 -0
  522. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0033_alter_biologic__aux_alter_biosample__aux_and_more.py +0 -0
  523. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0034_lamindbv1_part6.py +0 -0
  524. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0034_squashed.py +0 -0
  525. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0035_alter_biologic_targets_alter_compound_name_and_more.py +0 -0
  526. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  527. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/models.py +0 -0
  528. {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/types.py +0 -0
  529. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/_dataset_fixtures.py +0 -0
  530. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/basic-r-notebook.Rmd.cleaned.html +0 -0
  531. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/basic-r-notebook.Rmd.html +0 -0
  532. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
  533. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/no-title.ipynb +0 -0
  534. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  535. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  536. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
  537. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
  538. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
  539. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate4/script-to-test-versioning.py +0 -0
  540. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/script-to-test-filename-change.py +0 -0
  541. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/script-to-test-versioning.py +0 -0
  542. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_artifact.py +0 -0
  543. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_artifact_folders.py +0 -0
  544. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_cache.py +0 -0
  545. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_can_curate.py +0 -0
  546. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_data.py +0 -0
  547. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_db.py +0 -0
  548. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_delete.py +0 -0
  549. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_describe_and_df_calls.py +0 -0
  550. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_dtype.py +0 -0
  551. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_feature_label_manager.py +0 -0
  552. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_from_values.py +0 -0
  553. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_has_parents.py +0 -0
  554. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_integrity.py +0 -0
  555. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_manager.py +0 -0
  556. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_models.py +0 -0
  557. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_notebooks.py +0 -0
  558. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_queryset.py +0 -0
  559. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_record.py +0 -0
  560. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_run.py +0 -0
  561. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_save.py +0 -0
  562. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_schema.py +1 -1
  563. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_search.py +0 -0
  564. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_settings.py +0 -0
  565. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_track.py +0 -0
  566. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_tracked.py +0 -0
  567. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_transform.py +0 -0
  568. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_ulabel.py +0 -0
  569. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_versioning.py +0 -0
  570. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_view.py +0 -0
  571. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_visibility.py +0 -0
  572. {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_zflextables.py +0 -0
  573. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/conftest.py +0 -0
  574. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_cat_managers.py +0 -0
  575. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_curators_general.py +0 -0
  576. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_cxg_curator.py +0 -0
  577. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_dataframe_curators_accounting_example.py +0 -0
  578. {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_pert_curator.py +0 -0
  579. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/conftest.py +0 -0
  580. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/jwt_utils.py +0 -0
  581. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/check_lamin_dev.py +0 -0
  582. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/setup_access.py +0 -0
  583. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/setup_instance.py +0 -0
  584. {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/test_permissions.py +0 -0
  585. {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/conftest.py +0 -0
  586. {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/test_storage.py +0 -0
  587. {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/test_transfer.py +0 -0
@@ -106,8 +106,8 @@ jobs:
106
106
  if: ${{ matrix.group == 'tutorial' || matrix.group == 'guide' || matrix.group == 'biology' || matrix.group == 'faq'}}
107
107
  run: sudo apt-get -y install graphviz
108
108
 
109
- - run: nox -s lint
110
- if: ${{ matrix.group == 'tutorial' }}
109
+ # - run: nox -s lint
110
+ # if: ${{ matrix.group == 'tutorial' }}
111
111
 
112
112
  - run: nox -s "install_ci(group='${{ matrix.group }}')"
113
113
 
@@ -59,5 +59,6 @@ repos:
59
59
  script-to-test-versioning.py|
60
60
  tests/storage/conftest.py|
61
61
  tests/curators/conftest.py|
62
- tests/permissions/conftest.py
62
+ tests/permissions/conftest.py|
63
+ tests/curators/test_curators_examples.py
63
64
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lamindb
3
- Version: 1.5.0
3
+ Version: 1.5.2
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.10,<3.14
@@ -56,7 +56,14 @@
56
56
  "outputs": [],
57
57
  "source": [
58
58
  "!lamin login testuser1\n",
59
- "!lamin init --storage s3://lamindb-ci/test-array-notebook --name test-array-notebook"
59
+ "!lamin init --storage s3://lamindb-ci/test-arrays"
60
+ ]
61
+ },
62
+ {
63
+ "cell_type": "markdown",
64
+ "metadata": {},
65
+ "source": [
66
+ "Import lamindb and track this notebook."
60
67
  ]
61
68
  },
62
69
  {
@@ -91,8 +98,8 @@
91
98
  },
92
99
  "outputs": [],
93
100
  "source": [
94
- "ln.Artifact(\"s3://lamindb-ci/lndb-storage/pbmc68k.h5ad\").save()\n",
95
- "ln.Artifact(\"s3://lamindb-ci/lndb-storage/testfile.hdf5\").save()"
101
+ "ln.Artifact(\"s3://lamindb-ci/test-arrays/pbmc68k.h5ad\").save()\n",
102
+ "ln.Artifact(\"s3://lamindb-ci/test-arrays/testfile.hdf5\").save()"
96
103
  ]
97
104
  },
98
105
  {
@@ -171,7 +178,7 @@
171
178
  "metadata": {},
172
179
  "outputs": [],
173
180
  "source": [
174
- "artifact = ln.Artifact.get(key=\"lndb-storage/pbmc68k.h5ad\")"
181
+ "artifact = ln.Artifact.get(key=\"pbmc68k.h5ad\")"
175
182
  ]
176
183
  },
177
184
  {
@@ -320,7 +327,7 @@
320
327
  "metadata": {},
321
328
  "outputs": [],
322
329
  "source": [
323
- "artifact = ln.Artifact.get(key=\"lndb-storage/testfile.hdf5\")"
330
+ "artifact = ln.Artifact.get(key=\"testfile.hdf5\")"
324
331
  ]
325
332
  },
326
333
  {
@@ -550,13 +557,13 @@
550
557
  "outputs": [],
551
558
  "source": [
552
559
  "# clean up test instance\n",
553
- "!lamin delete --force test-array-notebook"
560
+ "!lamin delete --force test-arrays"
554
561
  ]
555
562
  }
556
563
  ],
557
564
  "metadata": {
558
565
  "kernelspec": {
559
- "display_name": "Python 3 (ipykernel)",
566
+ "display_name": "py312",
560
567
  "language": "python",
561
568
  "name": "python3"
562
569
  },
@@ -570,7 +577,7 @@
570
577
  "name": "python",
571
578
  "nbconvert_exporter": "python",
572
579
  "pygments_lexer": "ipython3",
573
- "version": "3.10.16"
580
+ "version": "3.12.8"
574
581
  },
575
582
  "nbproject": {
576
583
  "id": "YVUCtH4GfQOy",
@@ -308,7 +308,7 @@
308
308
  "id": "27",
309
309
  "metadata": {},
310
310
  "source": [
311
- "The {meth}`~lamindb.curators.Curator.validate` method validates that your dataset adheres to the criteria defined by the `schema`. It identifies which values are already validated (exist in the registries) and which are potentially problematic (do not yet exist in our registries)."
311
+ "The {meth}`~lamindb.curators.core.Curator.validate` method validates that your dataset adheres to the criteria defined by the `schema`. It identifies which values are already validated (exist in the registries) and which are potentially problematic (do not yet exist in our registries)."
312
312
  ]
313
313
  },
314
314
  {
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "outputs": [],
36
36
  "source": [
37
- "ln.Artifact(\"s3://lamindb-ci/lndb-storage/pbmc68k.h5ad\").save()"
37
+ "ln.Artifact(\"s3://lamindb-ci/test-anndata/pbmc68k.h5ad\").save()"
38
38
  ]
39
39
  },
40
40
  {
@@ -50,7 +50,7 @@
50
50
  "metadata": {},
51
51
  "outputs": [],
52
52
  "source": [
53
- "artifact = ln.Artifact.filter(key=\"lndb-storage/pbmc68k.h5ad\").one()"
53
+ "artifact = ln.Artifact.filter(key=\"pbmc68k.h5ad\").one()"
54
54
  ]
55
55
  },
56
56
  {
@@ -94,7 +94,7 @@ Low-level functionality.
94
94
 
95
95
  # ruff: noqa: I001
96
96
  # denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
97
- __version__ = "1.5.0"
97
+ __version__ = "1.5.2"
98
98
 
99
99
  import warnings
100
100
 
@@ -259,8 +259,8 @@ class Context:
259
259
  self,
260
260
  transform: str | Transform | None = None,
261
261
  *,
262
- project: str | None = None,
263
- space: str | None = None,
262
+ project: str | Project | None = None,
263
+ space: str | Space | None = None,
264
264
  params: dict | None = None,
265
265
  new_run: bool | None = None,
266
266
  path: str | None = None,
@@ -273,9 +273,10 @@ class Context:
273
273
 
274
274
  Args:
275
275
  transform: A transform (stem) `uid` (or record). If `None`, auto-creates a `transform` with its `uid`.
276
- project: A project `name` or `uid` for labeling entities created during the run.
277
- space: A space `name` or `uid` to identify where potentially sensitive entities are created during the run.
278
- This doesn't affect `Storage`, `ULabel`, `Feature`, `Schema`, `Param` and bionty entities as these provide mere structure that should typically be commonly accessible.
276
+ project: A project, its `name` or `uid` for labeling entities created during the run.
277
+ space: A restricted space, its `name` or `uid` for creating sensitive entities are created during the run.
278
+ The default is the common `"All"` space that every LaminDB instance has.
279
+ The `space` argument doesn't affect `Storage`, `ULabel`, `Feature`, `Schema`, `Param` and bionty entities as these provide structure that should typically be commonly accessible.
279
280
  If you want to manually move entities to a different space, set the `.space` field (:doc:`docs:access`).
280
281
  params: A dictionary of parameters to track for the run.
281
282
  new_run: If `False`, loads the latest run of transform
@@ -309,20 +310,32 @@ class Context:
309
310
  if project is None:
310
311
  project = os.environ.get("LAMIN_CURRENT_PROJECT")
311
312
  if project is not None:
312
- project_record = Project.filter(
313
- Q(name=project) | Q(uid=project)
314
- ).one_or_none()
315
- if project_record is None:
316
- raise InvalidArgument(
317
- f"Project '{project}' not found, either create it with `ln.Project(name='...').save()` or fix typos."
313
+ if isinstance(project, Project):
314
+ assert project._state.adding is False, ( # noqa: S101
315
+ "Project must be saved before passing it to track()"
318
316
  )
317
+ project_record = project
318
+ else:
319
+ project_record = Project.filter(
320
+ Q(name=project) | Q(uid=project)
321
+ ).one_or_none()
322
+ if project_record is None:
323
+ raise InvalidArgument(
324
+ f"Project '{project}' not found, either create it with `ln.Project(name='...').save()` or fix typos."
325
+ )
319
326
  self._project = project_record
320
327
  if space is not None:
321
- space_record = Space.filter(Q(name=space) | Q(uid=space)).one_or_none()
322
- if space_record is None:
323
- raise InvalidArgument(
324
- f"Space '{space}', please check on the hub UI whether you have the correct `uid` or `name`."
328
+ if isinstance(space, Space):
329
+ assert space._state.adding is False, ( # noqa: S101
330
+ "Space must be saved before passing it to track()"
325
331
  )
332
+ space_record = space
333
+ else:
334
+ space_record = Space.filter(Q(name=space) | Q(uid=space)).one_or_none()
335
+ if space_record is None:
336
+ raise InvalidArgument(
337
+ f"Space '{space}', please check on the hub UI whether you have the correct `uid` or `name`."
338
+ )
326
339
  self._space = space_record
327
340
  self._logging_message_track = ""
328
341
  self._logging_message_imports = ""
@@ -110,7 +110,7 @@ def save_tiledbsoma_experiment(
110
110
  ) -> Artifact:
111
111
  """Write `AnnData` to `tiledbsoma.Experiment`.
112
112
 
113
- Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an {class}`~lamindb.Artifact`.
113
+ Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an :class:`~lamindb.Artifact`.
114
114
 
115
115
  Populates a column `lamin_run_uid` column in `obs` with the current `run.uid`.
116
116
 
@@ -202,28 +202,44 @@ def save_tiledbsoma_experiment(
202
202
  context=ctx,
203
203
  )
204
204
 
205
+ prepare_experiment = False
205
206
  resize_experiment = False
206
207
  if registration_mapping is not None:
207
- if version.parse(soma.__version__) < version.parse("1.15.0rc4"):
208
+ soma_version_parsed = version.parse(soma.__version__)
209
+ if soma_version_parsed < version.parse("1.15.0rc4"):
208
210
  n_observations = len(registration_mapping.obs_axis.data)
209
211
  else:
210
212
  n_observations = registration_mapping.get_obs_shape()
211
- resize_experiment = True
213
+ prepare_experiment = soma_version_parsed >= version.parse("1.16.2")
214
+ resize_experiment = not prepare_experiment
212
215
  else: # happens only if not appending and only one adata passed
213
216
  assert len(adata_objects) == 1 # noqa: S101
214
217
  n_observations = adata_objects[0].n_obs
215
218
 
216
219
  logger.important(f"Writing the tiledbsoma store to {storepath_str}")
220
+ experiment_exists: bool | None = None
217
221
  for adata_obj in adata_objects:
218
- if resize_experiment and soma.Experiment.exists(storepath_str, context=ctx):
219
- # can only happen if registration_mapping is not None
220
- soma_io.resize_experiment(
221
- storepath_str,
222
- nobs=n_observations,
223
- nvars=registration_mapping.get_var_shapes(),
224
- context=ctx,
225
- )
226
- resize_experiment = False
222
+ # do not recheck if True
223
+ if not experiment_exists and (resize_experiment or prepare_experiment):
224
+ experiment_exists = soma.Experiment.exists(storepath_str, context=ctx)
225
+ if experiment_exists:
226
+ # both can only happen if registration_mapping is not None
227
+ if resize_experiment:
228
+ soma_io.resize_experiment(
229
+ storepath_str,
230
+ nobs=n_observations,
231
+ nvars=registration_mapping.get_var_shapes(),
232
+ context=ctx,
233
+ )
234
+ resize_experiment = False
235
+ elif prepare_experiment:
236
+ registration_mapping.prepare_experiment(storepath_str, context=ctx)
237
+ prepare_experiment = False
238
+ registration_mapping_write = (
239
+ registration_mapping.subset_for_anndata(adata_obj)
240
+ if hasattr(registration_mapping, "subset_for_anndata")
241
+ else registration_mapping
242
+ )
227
243
  soma_io.from_anndata(
228
244
  storepath_str,
229
245
  adata_obj,
@@ -231,7 +247,7 @@ def save_tiledbsoma_experiment(
231
247
  context=ctx,
232
248
  obs_id_name=obs_id_name,
233
249
  var_id_name=var_id_name,
234
- registration_mapping=registration_mapping,
250
+ registration_mapping=registration_mapping_write,
235
251
  **kwargs,
236
252
  )
237
253
 
@@ -305,6 +305,8 @@ class SlotsCurator(Curator):
305
305
  for slot, curator in self._slots.items():
306
306
  logger.info(f"validating slot {slot} ...")
307
307
  curator.validate()
308
+ # set _is_validated to True as no slot raised an error
309
+ self._is_validated = True
308
310
 
309
311
  @doc_args(SAVE_ARTIFACT_DOCSTRING)
310
312
  def save_artifact(
@@ -510,7 +512,7 @@ class DataFrameCurator(Curator):
510
512
  categoricals=categoricals,
511
513
  index=schema.index,
512
514
  slot=slot,
513
- schema_maximal_set=schema.maximal_set,
515
+ maximal_set=schema.maximal_set,
514
516
  )
515
517
 
516
518
  @property
@@ -836,7 +838,7 @@ class SpatialDataCurator(SlotsCurator):
836
838
  sub_slot = split_result[1]
837
839
  data_object = self._dataset.attrs[split_result[1]]
838
840
  data_object = pd.DataFrame([data_object])
839
- self._slots[slot] = DataFrameCurator(data_object, slot_schema)
841
+ self._slots[slot] = DataFrameCurator(data_object, slot_schema, slot)
840
842
  _assign_var_fields_categoricals_multimodal(
841
843
  modality=table_key,
842
844
  slot_type=sub_slot,
@@ -850,27 +852,20 @@ class SpatialDataCurator(SlotsCurator):
850
852
 
851
853
 
852
854
  class CatVector:
853
- """Categorical vector for `DataFrame`.
854
-
855
- Args:
856
- values_getter: A callable or iterable that returns the values to validate.
857
- field: The field to validate against.
858
- key: The name of the column to validate. Only used for logging.
859
- values_setter: A callable that sets the values.
860
- source: The source to validate against.
861
- """
855
+ """Vector with categorical values."""
862
856
 
863
857
  def __init__(
864
858
  self,
865
- values_getter: Callable | Iterable[str],
866
- field: FieldAttr,
867
- key: str,
868
- values_setter: Callable | None = None,
869
- source: Record | None = None,
859
+ values_getter: Callable
860
+ | Iterable[str], # A callable or iterable that returns the values to validate.
861
+ field: FieldAttr, # The field to validate against.
862
+ key: str, # The name of the vector to validate. Only used for logging.
863
+ values_setter: Callable | None = None, # A callable that sets the values.
864
+ source: Record | None = None, # The ontology source to validate against.
870
865
  feature: Feature | None = None,
871
866
  cat_manager: DataFrameCatManager | None = None,
872
867
  subtype_str: str = "",
873
- maximal_set: bool = False, # Passed during validation. Whether unvalidated categoricals cause validation failure.
868
+ maximal_set: bool = True, # whether unvalidated categoricals cause validation failure.
874
869
  ) -> None:
875
870
  self._values_getter = values_getter
876
871
  self._values_setter = values_setter
@@ -912,18 +907,20 @@ class CatVector:
912
907
  @property
913
908
  def is_validated(self) -> bool:
914
909
  """Whether the vector is validated."""
915
- # ensembl gene IDs pass even if they were not validated
916
- # this is a simple solution to the ensembl gene version problem
917
- if self._field.field.attname == "ensembl_gene_id":
918
- # if none of the ensembl gene ids were validated, we are probably not looking at ensembl gene IDs
919
- if len(self.values) == len(self._non_validated):
920
- return False
921
- # if maximal set, we do not allow additional unvalidated genes
922
- elif len(self._non_validated) != 0 and self._maximal_set:
923
- return False
924
- return True
925
- else:
926
- return len(self._non_validated) == 0
910
+ # if nothing was validated, something likely is fundamentally wrong
911
+ # should probably add a setting `at_least_one_validated`
912
+ result = True
913
+ if len(self.values) > 0 and len(self.values) == len(self._non_validated):
914
+ result = False
915
+ # len(self._non_validated) != 0
916
+ # if maximal_set is True, return False
917
+ # if maximal_set is False, return True
918
+ # len(self._non_validated) == 0
919
+ # return True
920
+ if len(self._non_validated) != 0:
921
+ if self._maximal_set:
922
+ result = False
923
+ return result
927
924
 
928
925
  def _replace_synonyms(self) -> list[str]:
929
926
  """Replace synonyms in the vector with standardized values."""
@@ -1078,11 +1075,6 @@ class CatVector:
1078
1075
  field_name = self._field.field.name
1079
1076
  model_field = f"{registry.__name__}.{field_name}"
1080
1077
 
1081
- def _log_mapping_info():
1082
- logger.indent = ""
1083
- logger.info(f'mapping "{self._key}" on {colors.italic(model_field)}')
1084
- logger.indent = " "
1085
-
1086
1078
  kwargs_current = get_current_filter_kwargs(
1087
1079
  registry, {"organism": self._organism, "source": self._source}
1088
1080
  )
@@ -1121,7 +1113,6 @@ class CatVector:
1121
1113
  non_validated = [i for i in non_validated if i not in values_validated]
1122
1114
  n_non_validated = len(non_validated)
1123
1115
  if n_non_validated == 0:
1124
- logger.indent = ""
1125
1116
  logger.success(
1126
1117
  f'"{self._key}" is validated against {colors.italic(model_field)}'
1127
1118
  )
@@ -1143,14 +1134,12 @@ class CatVector:
1143
1134
  warning_message += f" → fix typos, remove non-existent values, or save terms via: {colors.cyan(non_validated_hint_print)}"
1144
1135
  if self._subtype_query_set is not None:
1145
1136
  warning_message += f"\n → a valid label for subtype '{self._subtype_str}' has to be one of {self._subtype_query_set.list('name')}"
1146
- if logger.indent == "":
1147
- _log_mapping_info()
1137
+ logger.info(f'mapping "{self._key}" on {colors.italic(model_field)}')
1148
1138
  logger.warning(warning_message)
1149
1139
  if self._cat_manager is not None:
1150
1140
  self._cat_manager._validate_category_error_messages = strip_ansi_codes(
1151
1141
  warning_message
1152
1142
  )
1153
- logger.indent = ""
1154
1143
  return non_validated, syn_mapper
1155
1144
 
1156
1145
  def validate(self) -> None:
@@ -1218,7 +1207,7 @@ class DataFrameCatManager:
1218
1207
  sources: dict[str, Record] | None = None,
1219
1208
  index: Feature | None = None,
1220
1209
  slot: str | None = None,
1221
- schema_maximal_set: bool = False,
1210
+ maximal_set: bool = False,
1222
1211
  ) -> None:
1223
1212
  self._non_validated = None
1224
1213
  self._index = index
@@ -1235,7 +1224,7 @@ class DataFrameCatManager:
1235
1224
  self._validate_category_error_messages: str = ""
1236
1225
  self._cat_vectors: dict[str, CatVector] = {}
1237
1226
  self._slot = slot
1238
- self._maximal_set = schema_maximal_set
1227
+ self._maximal_set = maximal_set
1239
1228
 
1240
1229
  if columns_names is None:
1241
1230
  columns_names = []
@@ -1280,7 +1269,6 @@ class DataFrameCatManager:
1280
1269
  feature=feature,
1281
1270
  cat_manager=self,
1282
1271
  subtype_str=subtype_str,
1283
- maximal_set=self._maximal_set,
1284
1272
  )
1285
1273
  if index is not None and index.dtype.startswith("cat"):
1286
1274
  result = parse_dtype(index.dtype)[0]
@@ -1292,7 +1280,6 @@ class DataFrameCatManager:
1292
1280
  key=key,
1293
1281
  feature=index,
1294
1282
  cat_manager=self,
1295
- maximal_set=self._maximal_set,
1296
1283
  )
1297
1284
 
1298
1285
  @property
@@ -1330,7 +1317,7 @@ class DataFrameCatManager:
1330
1317
 
1331
1318
  validated = True
1332
1319
  for key, cat_vector in self._cat_vectors.items():
1333
- logger.info(f"validating column {key}")
1320
+ logger.info(f"validating vector {key}")
1334
1321
  cat_vector.validate()
1335
1322
  validated &= cat_vector.is_validated
1336
1323
  self._is_validated = validated
@@ -1493,6 +1480,9 @@ def annotate_artifact(
1493
1480
  else "columns"
1494
1481
  )
1495
1482
  features = slot_curator.cat._cat_vectors[name].records
1483
+ if features is None:
1484
+ logger.warning(f"no features found for slot {slot}")
1485
+ continue
1496
1486
  itype = parse_cat_dtype(artifact.schema.slots[slot].itype, is_itype=True)[
1497
1487
  "field"
1498
1488
  ]
@@ -0,0 +1,16 @@
1
+ # Generated by Django 5.2 on 2025-05-07 12:16
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("lamindb", "0092_alter_artifactfeaturevalue_artifact_and_more"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterUniqueTogether(
13
+ name="schemacomponent",
14
+ unique_together={("composite", "slot"), ("composite", "slot", "component")},
15
+ ),
16
+ ]
@@ -49,7 +49,7 @@ from ._label_manager import _get_labels, describe_labels
49
49
  from ._relations import (
50
50
  dict_related_model_to_related_name,
51
51
  )
52
- from .feature import Feature, FeatureValue
52
+ from .feature import Feature, FeatureValue, parse_dtype
53
53
  from .record import Record
54
54
  from .run import Param, ParamManager, ParamManagerRun, ParamValue, Run
55
55
  from .ulabel import ULabel
@@ -649,13 +649,22 @@ def filter_base(cls, _skip_validation: bool = True, **expression) -> QuerySet:
649
649
  if cls == FeatureManager:
650
650
  from .artifact import ArtifactFeatureValue
651
651
 
652
- return Artifact.objects.exclude(
653
- id__in=Subquery(
654
- ArtifactFeatureValue.objects.filter(
655
- featurevalue__feature=feature
656
- ).values("artifact_id")
652
+ if value: # True
653
+ return Artifact.objects.exclude(
654
+ id__in=Subquery(
655
+ ArtifactFeatureValue.objects.filter(
656
+ featurevalue__feature=feature
657
+ ).values("artifact_id")
658
+ )
659
+ )
660
+ else:
661
+ return Artifact.objects.exclude(
662
+ id__in=Subquery(
663
+ ArtifactFeatureValue.objects.filter(
664
+ featurevalue__feature=feature
665
+ ).values("artifact_id")
666
+ )
657
667
  )
658
- )
659
668
  if comparator in {"__startswith", "__contains"}:
660
669
  logger.important(
661
670
  f"currently not supporting `{comparator}`, using `__icontains` instead"
@@ -667,7 +676,14 @@ def filter_base(cls, _skip_validation: bool = True, **expression) -> QuerySet:
667
676
  elif isinstance(value, (str, Record, bool)):
668
677
  if comparator == "__isnull":
669
678
  if cls == FeatureManager:
670
- return Artifact.objects.exclude(links_ulabel__feature=feature)
679
+ result = parse_dtype(feature.dtype)[0]
680
+ kwargs = {
681
+ f"links_{result['registry'].__name__.lower()}__feature": feature
682
+ }
683
+ if value: # True
684
+ return Artifact.objects.exclude(**kwargs)
685
+ else:
686
+ return Artifact.objects.filter(**kwargs)
671
687
  else:
672
688
  # because SQL is sensitive to whether querying with __in or not
673
689
  # and might return multiple equivalent records for the latter
@@ -17,7 +17,6 @@ from django.db.models import CASCADE, PROTECT, Q
17
17
  from lamin_utils import colors, logger
18
18
  from lamindb_setup import settings as setup_settings
19
19
  from lamindb_setup._init_instance import register_storage_in_instance
20
- from lamindb_setup.core import doc_args
21
20
  from lamindb_setup.core._settings_storage import init_storage
22
21
  from lamindb_setup.core.hashing import HASH_LENGTH, hash_dir, hash_file
23
22
  from lamindb_setup.core.types import UPathStr
@@ -99,8 +98,6 @@ WARNING_RUN_TRANSFORM = "no run & transform got linked, call `ln.track()` & re-r
99
98
 
100
99
  WARNING_NO_INPUT = "run input wasn't tracked, call `ln.track()` and re-run"
101
100
 
102
- DEBUG_KWARGS_DOC = "**kwargs: Internal arguments for debugging."
103
-
104
101
  try:
105
102
  from ..core.storage._zarr import identify_zarr_type
106
103
  except ImportError:
@@ -914,7 +911,7 @@ def add_labels(
914
911
  for registry_name, records in records_by_registry.items():
915
912
  if not from_curator and feature.name in internal_features:
916
913
  raise ValidationError(
917
- "Cannot manually annotate internal feature with label. Please use ln.Curator"
914
+ "Cannot manually annotate a feature measured *within* the dataset. Please use a Curator."
918
915
  )
919
916
  if registry_name not in feature.dtype:
920
917
  if not feature.dtype.startswith("cat"):
@@ -1236,7 +1233,7 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
1236
1233
  default=None,
1237
1234
  related_name="validated_artifacts",
1238
1235
  )
1239
- """The schema that validated this artifact in a :class:`~lamindb.curators.Curator`."""
1236
+ """The schema that validated this artifact in a :class:`~lamindb.curators.core.Curator`."""
1240
1237
  feature_sets: Schema = models.ManyToManyField(
1241
1238
  Schema, related_name="artifacts", through="ArtifactSchema"
1242
1239
  )
@@ -2363,6 +2360,11 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
2363
2360
 
2364
2361
  if hasattr(self, "_memory_rep") and self._memory_rep is not None:
2365
2362
  access_memory = self._memory_rep
2363
+ # SpatialData objects zarr stores are moved when saved
2364
+ # SpatialData's __repr__ method attempts to access information from the old path
2365
+ # Therefore, we need to update the in-memory path to the now moved Artifact storage path
2366
+ if access_memory.__class__.__name__ == "SpatialData":
2367
+ access_memory.path = self._cache_path
2366
2368
  else:
2367
2369
  filepath, cache_key = filepath_cache_key_from_artifact(
2368
2370
  self, using_key=settings._using_key
@@ -2395,9 +2397,9 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
2395
2397
  access_memory = load_to_memory(cache_path, **kwargs)
2396
2398
  # only call if load is successfull
2397
2399
  _track_run_input(self, is_run_input)
2400
+
2398
2401
  return access_memory
2399
2402
 
2400
- @doc_args(DEBUG_KWARGS_DOC)
2401
2403
  def cache(
2402
2404
  self, *, is_run_input: bool | None = None, mute: bool = False, **kwargs
2403
2405
  ) -> Path:
@@ -2410,7 +2412,6 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
2410
2412
  Args:
2411
2413
  mute: Silence logging of caching progress.
2412
2414
  is_run_input: Whether to track this artifact as run input.
2413
- {}
2414
2415
 
2415
2416
  Example::
2416
2417
 
@@ -2560,13 +2561,11 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
2560
2561
  if delete_msg != "did-not-delete":
2561
2562
  logger.success(f"deleted {colors.yellow(f'{path}')}")
2562
2563
 
2563
- @doc_args(DEBUG_KWARGS_DOC)
2564
2564
  def save(self, upload: bool | None = None, **kwargs) -> Artifact:
2565
2565
  """Save to database & storage.
2566
2566
 
2567
2567
  Args:
2568
2568
  upload: Trigger upload to cloud storage in instances with hybrid storage mode.
2569
- {}
2570
2569
 
2571
2570
  Example::
2572
2571
 
@@ -2763,8 +2762,8 @@ def _track_run_input(
2763
2762
  # record is on another db
2764
2763
  # we have to save the record into the current db with
2765
2764
  # the run being attached to a transfer transform
2766
- logger.important(
2767
- f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}') as input"
2765
+ logger.info(
2766
+ f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}...') as input"
2768
2767
  )
2769
2768
  data.save()
2770
2769
  is_valid = True