lamindb 0.76.16__tar.gz → 0.77.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 (597) hide show
  1. {lamindb-0.76.16 → lamindb-0.77.0}/.github/workflows/build.yml +1 -1
  2. {lamindb-0.76.16 → lamindb-0.77.0}/.gitignore +1 -0
  3. {lamindb-0.76.16 → lamindb-0.77.0}/PKG-INFO +5 -5
  4. {lamindb-0.76.16 → lamindb-0.77.0}/docs/bio-registries.ipynb +1 -1
  5. {lamindb-0.76.16 → lamindb-0.77.0}/docs/curate-any.ipynb +8 -8
  6. lamindb-0.77.0/docs/faq/validate-fields.ipynb +77 -0
  7. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq.md +1 -0
  8. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/upload.ipynb +13 -20
  9. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/__init__.py +2 -2
  10. lamindb-0.76.16/lamindb/_can_validate.py → lamindb-0.77.0/lamindb/_can_curate.py +7 -7
  11. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_curate.py +1 -1
  12. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_parents.py +8 -1
  13. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_query_set.py +8 -8
  14. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_record.py +74 -7
  15. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/__init__.py +4 -2
  16. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_context.py +11 -6
  17. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_django.py +2 -2
  18. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_label_manager.py +2 -2
  19. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/loaders.py +15 -5
  20. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_zarr.py +8 -1
  21. {lamindb-0.76.16 → lamindb-0.77.0}/noxfile.py +2 -1
  22. {lamindb-0.76.16 → lamindb-0.77.0}/pyproject.toml +4 -4
  23. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/.github/workflows/build.yml +33 -12
  24. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/__init__.py +1 -1
  25. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/_bionty.py +4 -0
  26. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/_public_ontology.py +2 -1
  27. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/dev/_handle_sources.py +8 -8
  28. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/dev/_io.py +5 -0
  29. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_bfxpipeline.py +1 -3
  30. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_biosample.py +1 -1
  31. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_cellline.py +1 -1
  32. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_cellmarker.py +1 -1
  33. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_celltype.py +1 -1
  34. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_developmentalstage.py +1 -1
  35. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_disease.py +1 -1
  36. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_drug.py +1 -1
  37. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_ethnicity.py +1 -1
  38. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_experimentalfactor.py +1 -1
  39. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_gene.py +64 -22
  40. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_organism.py +7 -5
  41. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_pathway.py +1 -1
  42. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_phenotype.py +1 -1
  43. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_protein.py +1 -1
  44. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_shared_docstrings.py +1 -9
  45. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +3 -4
  46. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +1 -3
  47. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/core/_add_ontology.py +3 -1
  48. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/core/_bionty.py +9 -4
  49. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0028_squashed.py +14 -21
  50. lamindb-0.77.0/sub/bionty/bionty/migrations/0041_alter_artifactcellline_artifact_and_more.py +2404 -0
  51. lamindb-0.77.0/sub/bionty/bionty/migrations/0041_squashed.py +3008 -0
  52. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/models.py +202 -228
  53. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/noxfile.py +2 -2
  54. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/pyproject.toml +1 -0
  55. lamindb-0.77.0/sub/bionty/tests/dev/test_io.py +43 -0
  56. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_gene.py +16 -15
  57. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/test_md5.py +1 -2
  58. lamindb-0.77.0/sub/bionty/tests/test_ontology.py +20 -0
  59. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/cellregistry/__init__.py +2 -0
  60. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/cellregistry/migrations/0001_initial.py +1 -1
  61. lamindb-0.77.0/sub/cellregistry/cellregistry/migrations/0002_alter_artifactcell_artifact_alter_artifactcell_cell_and_more.py +126 -0
  62. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/cellregistry/models.py +14 -17
  63. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/.gitignore +1 -1
  64. {lamindb-0.76.16/sub/omop → lamindb-0.77.0/sub/clinicore}/.pre-commit-config.yaml +7 -7
  65. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/__init__.py +2 -0
  66. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0001_initial.py +5 -5
  67. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0004_remove_biosample_project_clinicaltrial_and_more.py +1 -1
  68. lamindb-0.77.0/sub/clinicore/clinicore/migrations/0007_alter_artifactbiosample_artifact_and_more.py +865 -0
  69. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/models.py +82 -101
  70. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/pyproject.toml +1 -1
  71. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/.github/workflows/build.yml +3 -3
  72. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/findrefs/__init__.py +3 -1
  73. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/findrefs/migrations/0001_initial.py +1 -1
  74. lamindb-0.77.0/sub/findrefs/findrefs/migrations/0002_alter_artifactreference_artifact_and_more.py +190 -0
  75. lamindb-0.77.0/sub/findrefs/findrefs/models.py +87 -0
  76. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/pyproject.toml +1 -1
  77. lamindb-0.77.0/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  78. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/pyproject.toml +1 -1
  79. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_save_r_code.py +2 -0
  80. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  81. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/upath.py +7 -0
  82. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +8 -1
  83. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/__init__.py +6 -3
  84. lamindb-0.77.0/sub/lnschema-core/lnschema_core/fields.py +280 -0
  85. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +4 -43
  86. lamindb-0.77.0/sub/lnschema-core/lnschema_core/migrations/0069_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +1306 -0
  87. lamindb-0.77.0/sub/lnschema-core/lnschema_core/migrations/0069_squashed.py +1808 -0
  88. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/models.py +100 -90
  89. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/types.py +1 -1
  90. lamindb-0.77.0/sub/lnschema-core/lnschema_core/validation.py +60 -0
  91. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/.gitignore +1 -0
  92. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/changelog.md +1 -0
  93. lamindb-0.77.0/sub/omop/omop/migrations/0002_alter_caresite_options_alter_cdmsource_options_and_more.py +5222 -0
  94. lamindb-0.77.0/sub/omop/omop/models.py +1422 -0
  95. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/.github/workflows/build.yml +3 -3
  96. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/ourprojects/__init__.py +3 -1
  97. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/ourprojects/migrations/0001_initial.py +1 -1
  98. lamindb-0.77.0/sub/ourprojects/ourprojects/migrations/0002_alter_artifactproject_artifact_and_more.py +162 -0
  99. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/ourprojects/models.py +15 -15
  100. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/.pre-commit-config.yaml +7 -7
  101. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/guide/get-started.ipynb +2 -2
  102. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +12 -6
  103. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/pyproject.toml +2 -2
  104. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0018_squashed.py +8 -16
  105. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +4 -4
  106. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0022_remove_experiment_experiment_type_and_more.py +1 -1
  107. lamindb-0.77.0/sub/wetlab/wetlab/migrations/0025_alter_artifactbiosample_artifact_and_more.py +1461 -0
  108. lamindb-0.77.0/sub/wetlab/wetlab/migrations/0025_squashed.py +1806 -0
  109. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/models.py +161 -171
  110. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_artifact.py +2 -0
  111. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_parents.py +7 -2
  112. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_record.py +14 -0
  113. lamindb-0.76.16/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -1141
  114. lamindb-0.76.16/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -64
  115. lamindb-0.76.16/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -829
  116. lamindb-0.76.16/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -520
  117. lamindb-0.76.16/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -388
  118. lamindb-0.76.16/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -703
  119. lamindb-0.76.16/sub/bionty/tests/dev/test_io.py +0 -22
  120. lamindb-0.76.16/sub/bionty/tests/test_ontology.py +0 -11
  121. lamindb-0.76.16/sub/findrefs/findrefs/models.py +0 -72
  122. lamindb-0.76.16/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  123. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -1151
  124. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -87
  125. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -58
  126. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -32
  127. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -103
  128. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -25
  129. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -17
  130. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -38
  131. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -24
  132. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -40
  133. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -178
  134. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -33
  135. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -58
  136. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -191
  137. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -71
  138. lamindb-0.76.16/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -419
  139. lamindb-0.76.16/sub/omop/omop/models.py +0 -1503
  140. lamindb-0.76.16/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -375
  141. lamindb-0.76.16/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -38
  142. {lamindb-0.76.16 → lamindb-0.77.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  143. {lamindb-0.76.16 → lamindb-0.77.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  144. {lamindb-0.76.16 → lamindb-0.77.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  145. {lamindb-0.76.16 → lamindb-0.77.0}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
  146. {lamindb-0.76.16 → lamindb-0.77.0}/.github/workflows/doc-changes.yml +0 -0
  147. {lamindb-0.76.16 → lamindb-0.77.0}/.gitmodules +0 -0
  148. {lamindb-0.76.16 → lamindb-0.77.0}/.pre-commit-config.yaml +0 -0
  149. {lamindb-0.76.16 → lamindb-0.77.0}/CONTRIBUTING.md +0 -0
  150. {lamindb-0.76.16 → lamindb-0.77.0}/LICENSE +0 -0
  151. {lamindb-0.76.16 → lamindb-0.77.0}/README.md +0 -0
  152. {lamindb-0.76.16 → lamindb-0.77.0}/docs/api.md +0 -0
  153. {lamindb-0.76.16 → lamindb-0.77.0}/docs/arrays.ipynb +0 -0
  154. {lamindb-0.76.16 → lamindb-0.77.0}/docs/bionty.md +0 -0
  155. {lamindb-0.76.16 → lamindb-0.77.0}/docs/cellregistry.md +0 -0
  156. {lamindb-0.76.16 → lamindb-0.77.0}/docs/changelog.md +0 -0
  157. {lamindb-0.76.16 → lamindb-0.77.0}/docs/clinicore.md +0 -0
  158. {lamindb-0.76.16 → lamindb-0.77.0}/docs/curate-df.ipynb +0 -0
  159. {lamindb-0.76.16 → lamindb-0.77.0}/docs/curate-subclass.ipynb +0 -0
  160. {lamindb-0.76.16 → lamindb-0.77.0}/docs/curate.md +0 -0
  161. {lamindb-0.76.16 → lamindb-0.77.0}/docs/ehrcurator.py +0 -0
  162. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/acid.ipynb +0 -0
  163. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/delete.ipynb +0 -0
  164. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/idempotency.ipynb +0 -0
  165. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/import-schema.ipynb +0 -0
  166. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/keep-artifacts-local.ipynb +0 -0
  167. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/key.ipynb +0 -0
  168. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/reference-field.ipynb +0 -0
  169. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/search.ipynb +0 -0
  170. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/setup.ipynb +0 -0
  171. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/symbol-mapping.ipynb +0 -0
  172. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/test_notebooks.py +0 -0
  173. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/track-run-inputs.ipynb +0 -0
  174. {lamindb-0.76.16 → lamindb-0.77.0}/docs/faq/visibility.ipynb +0 -0
  175. {lamindb-0.76.16 → lamindb-0.77.0}/docs/findrefs.md +0 -0
  176. {lamindb-0.76.16 → lamindb-0.77.0}/docs/guide.md +0 -0
  177. {lamindb-0.76.16 → lamindb-0.77.0}/docs/includes/features-lamindb.md +0 -0
  178. {lamindb-0.76.16 → lamindb-0.77.0}/docs/includes/features-laminhub.md +0 -0
  179. {lamindb-0.76.16 → lamindb-0.77.0}/docs/includes/installation.md +0 -0
  180. {lamindb-0.76.16 → lamindb-0.77.0}/docs/index.md +0 -0
  181. {lamindb-0.76.16 → lamindb-0.77.0}/docs/introduction.ipynb +0 -0
  182. {lamindb-0.76.16 → lamindb-0.77.0}/docs/lamindb.md +0 -0
  183. {lamindb-0.76.16 → lamindb-0.77.0}/docs/laminr.md +0 -0
  184. {lamindb-0.76.16 → lamindb-0.77.0}/docs/omop.md +0 -0
  185. {lamindb-0.76.16 → lamindb-0.77.0}/docs/ourprojects.md +0 -0
  186. {lamindb-0.76.16 → lamindb-0.77.0}/docs/query-search.md +0 -0
  187. {lamindb-0.76.16 → lamindb-0.77.0}/docs/registries.ipynb +0 -0
  188. {lamindb-0.76.16 → lamindb-0.77.0}/docs/rest.md +0 -0
  189. {lamindb-0.76.16 → lamindb-0.77.0}/docs/schemas.ipynb +0 -0
  190. {lamindb-0.76.16 → lamindb-0.77.0}/docs/scripts/run-track-with-params.py +0 -0
  191. {lamindb-0.76.16 → lamindb-0.77.0}/docs/scripts/synced-with-git.py +0 -0
  192. {lamindb-0.76.16 → lamindb-0.77.0}/docs/setup.ipynb +0 -0
  193. {lamindb-0.76.16 → lamindb-0.77.0}/docs/signup-login.md +0 -0
  194. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/add-replace-cache.ipynb +0 -0
  195. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/anndata-accessor.ipynb +0 -0
  196. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  197. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/test-files/iris.csv +0 -0
  198. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/test-files/iris.data +0 -0
  199. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/test-files/new_iris.csv +0 -0
  200. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/test_notebooks.py +0 -0
  201. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  202. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage/vitessce.ipynb +0 -0
  203. {lamindb-0.76.16 → lamindb-0.77.0}/docs/storage.md +0 -0
  204. {lamindb-0.76.16 → lamindb-0.77.0}/docs/test_notebooks.py +0 -0
  205. {lamindb-0.76.16 → lamindb-0.77.0}/docs/track.ipynb +0 -0
  206. {lamindb-0.76.16 → lamindb-0.77.0}/docs/transfer.ipynb +0 -0
  207. {lamindb-0.76.16 → lamindb-0.77.0}/docs/tutorial.ipynb +0 -0
  208. {lamindb-0.76.16 → lamindb-0.77.0}/docs/tutorial2.ipynb +0 -0
  209. {lamindb-0.76.16 → lamindb-0.77.0}/docs/wetlab.md +0 -0
  210. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_artifact.py +0 -0
  211. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_collection.py +0 -0
  212. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_feature.py +0 -0
  213. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_feature_set.py +0 -0
  214. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_finish.py +0 -0
  215. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_from_values.py +0 -0
  216. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_is_versioned.py +0 -0
  217. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_query_manager.py +0 -0
  218. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_run.py +0 -0
  219. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_save.py +0 -0
  220. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_storage.py +0 -0
  221. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_transform.py +0 -0
  222. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_ulabel.py +0 -0
  223. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_utils.py +0 -0
  224. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/_view.py +0 -0
  225. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_data.py +0 -0
  226. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_feature_manager.py +0 -0
  227. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_mapped_collection.py +0 -0
  228. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_settings.py +0 -0
  229. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_sync_git.py +0 -0
  230. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/_track_environment.py +0 -0
  231. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/datasets/__init__.py +0 -0
  232. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/datasets/_core.py +0 -0
  233. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/datasets/_fake.py +0 -0
  234. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/exceptions.py +0 -0
  235. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/fields.py +0 -0
  236. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/schema.py +0 -0
  237. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/__init__.py +0 -0
  238. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_anndata_accessor.py +0 -0
  239. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_anndata_sizes.py +0 -0
  240. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_backed_access.py +0 -0
  241. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
  242. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_tiledbsoma.py +0 -0
  243. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/_valid_suffixes.py +0 -0
  244. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/objects.py +0 -0
  245. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/storage/paths.py +0 -0
  246. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/subsettings/__init__.py +0 -0
  247. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/subsettings/_creation_settings.py +0 -0
  248. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/subsettings/_transform_settings.py +0 -0
  249. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/types.py +0 -0
  250. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/core/versioning.py +0 -0
  251. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/integrations/__init__.py +0 -0
  252. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/integrations/_vitessce.py +0 -0
  253. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/setup/__init__.py +0 -0
  254. {lamindb-0.76.16 → lamindb-0.77.0}/lamindb/setup/core/__init__.py +0 -0
  255. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
  256. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
  257. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/.gitignore +0 -0
  258. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/.pre-commit-config.yaml +0 -0
  259. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/LICENSE +0 -0
  260. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/README.md +0 -0
  261. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/__init__.py +0 -0
  262. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/_display_sources.py +0 -0
  263. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/_ontology.py +0 -0
  264. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/_settings.py +0 -0
  265. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/_sync_sources.py +0 -0
  266. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/dev/__init__.py +0 -0
  267. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/dev/_md5.py +0 -0
  268. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/__init__.py +0 -0
  269. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
  270. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
  271. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
  272. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
  273. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
  274. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/base/sources.yaml +0 -0
  275. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/core/__init__.py +0 -0
  276. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/core/_settings.py +0 -0
  277. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/ids.py +0 -0
  278. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
  279. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
  280. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
  281. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
  282. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
  283. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
  284. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
  285. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
  286. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  287. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
  288. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
  289. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/0040_rename_feature_ref_is_symbol_artifactgene_feature_ref_is_name_and_more.py +0 -0
  290. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/bionty/migrations/__init__.py +0 -0
  291. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/guide/concepts.md +0 -0
  292. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/guide/config.md +0 -0
  293. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/guide/extend.md +0 -0
  294. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/guide/test_notebooks.py +0 -0
  295. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/guide.md +0 -0
  296. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/index.md +0 -0
  297. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/docs/reference.md +0 -0
  298. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/lamin-project.yaml +0 -0
  299. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
  300. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
  301. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_biosample.py +0 -0
  302. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_cellline.py +0 -0
  303. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
  304. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_celltype.py +0 -0
  305. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
  306. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_disease.py +0 -0
  307. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_drug.py +0 -0
  308. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
  309. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
  310. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_organism.py +0 -0
  311. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_pathway.py +0 -0
  312. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_phenotype.py +0 -0
  313. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_protein.py +0 -0
  314. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/entities/test_tissue.py +0 -0
  315. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/test_bionty.py +0 -0
  316. {lamindb-0.76.16 → lamindb-0.77.0}/sub/bionty/tests/test_lamindb.py +0 -0
  317. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/.github/workflows/build.yml +0 -0
  318. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/.github/workflows/doc-changes.yml +0 -0
  319. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/.gitignore +0 -0
  320. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/.pre-commit-config.yaml +0 -0
  321. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/LICENSE +0 -0
  322. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/README.md +0 -0
  323. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/cellregistry/migrations/__init__.py +0 -0
  324. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/noxfile.py +0 -0
  325. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/pyproject.toml +0 -0
  326. {lamindb-0.76.16 → lamindb-0.77.0}/sub/cellregistry/tests/test_integrity.py +0 -0
  327. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/.github/workflows/build.yml +0 -0
  328. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/.github/workflows/doc-changes.yml +0 -0
  329. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/LICENSE +0 -0
  330. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/README.md +0 -0
  331. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0002_biosample_patient_biosample_project.py +0 -0
  332. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0003_alter_project_uid.py +0 -0
  333. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0005_alter_biosample_created_by_alter_biosample_run_and_more.py +0 -0
  334. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/0006_artifactbiosample_artifactclinicaltrial_and_more.py +0 -0
  335. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/clinicore/migrations/__init__.py +0 -0
  336. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/docs/changelog.md +0 -0
  337. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/docs/guide.md +0 -0
  338. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/docs/index.md +0 -0
  339. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/docs/quickstart.ipynb +0 -0
  340. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/docs/reference.md +0 -0
  341. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/noxfile.py +0 -0
  342. {lamindb-0.76.16 → lamindb-0.77.0}/sub/clinicore/tests/test_notebooks.py +0 -0
  343. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/.github/workflows/doc-changes.yml +0 -0
  344. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/.gitignore +0 -0
  345. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/.pre-commit-config.yaml +0 -0
  346. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/LICENSE +0 -0
  347. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/README.md +0 -0
  348. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/findrefs/migrations/__init__.py +0 -0
  349. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/noxfile.py +0 -0
  350. {lamindb-0.76.16 → lamindb-0.77.0}/sub/findrefs/tests/test_integrity.py +0 -0
  351. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
  352. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/.gitignore +0 -0
  353. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  354. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/LICENSE +0 -0
  355. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/README.md +0 -0
  356. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
  357. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
  358. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/_load.py +0 -0
  359. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
  360. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/_save.py +0 -0
  361. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/lamin_cli/_settings.py +0 -0
  362. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/conftest.py +0 -0
  363. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  364. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  365. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  366. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
  367. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
  368. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
  369. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/run-track-with-params.py +0 -0
  370. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/run-track.R +0 -0
  371. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/scripts/run-track.qmd +0 -0
  372. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_cli.py +0 -0
  373. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_load.py +0 -0
  374. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_migrate.py +0 -0
  375. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_multi_process.py +0 -0
  376. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_parse_uid_from_code.py +0 -0
  377. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_save_files.py +0 -0
  378. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
  379. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  380. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  381. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
  382. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/.gitignore +0 -0
  383. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  384. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/LICENSE +0 -0
  385. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/README.md +0 -0
  386. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/changelog.md +0 -0
  387. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  388. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  389. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  390. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  391. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  392. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  393. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  394. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
  395. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  396. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  397. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  398. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  399. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  400. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  401. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +0 -0
  402. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  403. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  404. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  405. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  406. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/index.md +0 -0
  407. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
  408. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/docs/reference.md +0 -0
  409. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  410. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  411. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  412. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  413. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
  414. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  415. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  416. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
  417. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  418. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  419. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
  420. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  421. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  422. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  423. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
  424. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
  425. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  426. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  427. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
  428. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
  429. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
  430. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  431. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  432. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  433. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
  434. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  435. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  436. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
  437. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  438. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
  439. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  440. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  441. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
  442. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  443. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  444. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  445. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  446. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
  447. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  448. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  449. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
  450. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/noxfile.py +0 -0
  451. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/pyproject.toml +0 -0
  452. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +0 -0
  453. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
  454. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  455. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  456. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_edge_request.py +0 -0
  457. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  458. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +0 -0
  459. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  460. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  461. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  462. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
  463. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  464. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
  465. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  466. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/test_aws_credentials_manager.py +0 -0
  467. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  468. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
  469. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  470. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  471. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
  472. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  473. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  474. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  475. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  476. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
  477. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
  478. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
  479. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/.gitignore +0 -0
  480. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
  481. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/CHANGELOG.md +0 -0
  482. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/LICENSE +0 -0
  483. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/README.md +0 -0
  484. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  485. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
  486. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
  487. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
  488. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0056_rename_ulabel_ref_is_name_artifactulabel_label_ref_is_name_and_more.py +0 -0
  489. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
  490. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
  491. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
  492. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
  493. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
  494. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
  495. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
  496. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0064_alter_artifact_version_alter_collection_version_and_more.py +0 -0
  497. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0065_remove_collection_feature_sets_and_more.py +0 -0
  498. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0066_alter_artifact__feature_values_and_more.py +0 -0
  499. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0067_alter_featurevalue_unique_together_and_more.py +0 -0
  500. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/0068_alter_artifactulabel_unique_together_and_more.py +0 -0
  501. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  502. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  503. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
  504. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/noxfile.py +0 -0
  505. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/pyproject.toml +0 -0
  506. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/tests/conftest.py +0 -0
  507. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
  508. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/tests/test_models.py +0 -0
  509. {lamindb-0.76.16 → lamindb-0.77.0}/sub/lnschema-core/tests/test_types.py +0 -0
  510. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/.github/workflows/build.yml +0 -0
  511. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/.github/workflows/latest-changes.jinja2 +0 -0
  512. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/.github/workflows/latest-changes.yml +0 -0
  513. {lamindb-0.76.16/sub/clinicore → lamindb-0.77.0/sub/omop}/.pre-commit-config.yaml +0 -0
  514. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/LICENSE +0 -0
  515. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/README.md +0 -0
  516. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/guide.md +0 -0
  517. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/index.md +0 -0
  518. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/notes/inspectdb.ipynb +0 -0
  519. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/notes.md +0 -0
  520. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/quickstart.ipynb +0 -0
  521. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/docs/reference.md +0 -0
  522. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/lamin-project.yaml +0 -0
  523. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/noxfile.py +0 -0
  524. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/omop/__init__.py +0 -0
  525. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/omop/migrations/0001_initial.py +0 -0
  526. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/omop/migrations/__init__.py +0 -0
  527. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/pyproject.toml +0 -0
  528. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/tests/test_integrity.py +0 -0
  529. {lamindb-0.76.16 → lamindb-0.77.0}/sub/omop/tests/test_notebooks.py +0 -0
  530. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/.github/workflows/doc-changes.yml +0 -0
  531. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/.gitignore +0 -0
  532. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/.pre-commit-config.yaml +0 -0
  533. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/LICENSE +0 -0
  534. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/README.md +0 -0
  535. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/noxfile.py +0 -0
  536. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/ourprojects/migrations/__init__.py +0 -0
  537. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/pyproject.toml +0 -0
  538. {lamindb-0.76.16 → lamindb-0.77.0}/sub/ourprojects/tests/test_integrity.py +0 -0
  539. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/.github/workflows/build.yml +0 -0
  540. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
  541. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/.gitignore +0 -0
  542. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/README.md +0 -0
  543. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/changelog.md +0 -0
  544. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/guide.md +0 -0
  545. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/index.md +0 -0
  546. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/docs/reference.md +0 -0
  547. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/noxfile.py +0 -0
  548. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/tests/test_integrity.py +0 -0
  549. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/tests/test_notebooks.py +0 -0
  550. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/__init__.py +0 -0
  551. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
  552. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
  553. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0023_compoundtreatment_duration_and_more.py +0 -0
  554. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/0024_compound_chembl_id.py +0 -0
  555. {lamindb-0.76.16 → lamindb-0.77.0}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
  556. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/conftest.py +0 -0
  557. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
  558. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/notebooks/no-title.ipynb +0 -0
  559. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/notebooks/not-initialized.ipynb +0 -0
  560. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  561. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  562. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
  563. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
  564. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
  565. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/scripts/script-to-test-filename-change.py +0 -0
  566. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/scripts/script-to-test-versioning.py +0 -0
  567. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_artifact_folders.py +0 -0
  568. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_cache.py +0 -0
  569. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_can_validate.py +0 -0
  570. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_collection.py +0 -0
  571. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_context.py +0 -0
  572. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_curate.py +0 -0
  573. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_data.py +0 -0
  574. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_db.py +0 -0
  575. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_delete.py +0 -0
  576. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_feature.py +0 -0
  577. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_feature_manager.py +0 -0
  578. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_feature_set.py +0 -0
  579. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_from_values.py +0 -0
  580. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_label_manager.py +0 -0
  581. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_load.py +0 -0
  582. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_manager.py +0 -0
  583. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_notebooks.py +0 -0
  584. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_queryset.py +0 -0
  585. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_run.py +0 -0
  586. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_save.py +0 -0
  587. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_search.py +0 -0
  588. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_settings.py +0 -0
  589. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_transform.py +0 -0
  590. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_uid.py +0 -0
  591. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_ulabel.py +0 -0
  592. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_versioning.py +0 -0
  593. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_view.py +0 -0
  594. {lamindb-0.76.16 → lamindb-0.77.0}/tests/core/test_visibility.py +0 -0
  595. {lamindb-0.76.16 → lamindb-0.77.0}/tests/storage/conftest.py +0 -0
  596. {lamindb-0.76.16 → lamindb-0.77.0}/tests/storage/test_storage.py +0 -0
  597. {lamindb-0.76.16 → lamindb-0.77.0}/tests/storage/test_transfer.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  - "faq"
23
23
  - "storage"
24
24
  - "cli"
25
- timeout-minutes: 10
25
+ timeout-minutes: 15
26
26
 
27
27
  steps:
28
28
  - uses: actions/checkout@v4
@@ -58,6 +58,7 @@ default_storage_unit_core
58
58
  default_storage_unit_storage
59
59
  test.ipynb
60
60
  run-tests
61
+ test-django-validation/
61
62
 
62
63
  # General
63
64
  .DS_Store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.76.16
3
+ Version: 0.77.0
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.9,<3.13
@@ -9,9 +9,9 @@ Classifier: Programming Language :: Python :: 3.9
9
9
  Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3.12
12
- Requires-Dist: lnschema_core==0.76.2
13
- Requires-Dist: lamin_utils==0.13.7
14
- Requires-Dist: lamin_cli==0.21.2
12
+ Requires-Dist: lnschema_core==0.77.0
13
+ Requires-Dist: lamin_utils==0.13.8
14
+ Requires-Dist: lamin_cli==0.21.3
15
15
  Requires-Dist: lamindb_setup
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
@@ -22,7 +22,7 @@ Requires-Dist: fsspec
22
22
  Requires-Dist: graphviz
23
23
  Requires-Dist: psycopg2-binary
24
24
  Requires-Dist: lamindb_setup[aws] ; extra == "aws"
25
- Requires-Dist: bionty==0.52.1 ; extra == "bionty"
25
+ Requires-Dist: bionty==0.53.1 ; extra == "bionty"
26
26
  Requires-Dist: cellregistry ; extra == "cellregistry"
27
27
  Requires-Dist: clinicore ; extra == "clinicore"
28
28
  Requires-Dist: line_profiler ; extra == "dev"
@@ -304,7 +304,7 @@
304
304
  "source": [
305
305
  "We'd like to load the corresponding records in our in-house registry to annotate a dataset.\n",
306
306
  "\n",
307
- "To this end, you'll typically use {class}`~lamindb.core.CanValidate.from_values`, which will both validate & retrieve records that match the values."
307
+ "To this end, you'll typically use {class}`~lamindb.core.CanCurate.from_values`, which will both validate & retrieve records that match the values."
308
308
  ]
309
309
  },
310
310
  {
@@ -20,11 +20,11 @@
20
20
  "source": [
21
21
  ":::{dropdown} How do I validate based on a public ontology?\n",
22
22
  "\n",
23
- "LaminDB makes it easy to validate categorical variables based on registries that inherit from {class}`~lamindb.core.CanValidate`.\n",
23
+ "LaminDB makes it easy to validate categorical variables based on registries that inherit from {class}`~lamindb.core.CanCurate`.\n",
24
24
  "\n",
25
- "{class}`~lamindb.core.CanValidate` methods validate against the registries in your LaminDB instance.\n",
25
+ "{class}`~lamindb.core.CanCurate` methods validate against the registries in your LaminDB instance.\n",
26
26
  "In {doc}`./bio-registries`, you'll see how to extend standard validation to validation against _public references_ using a `ReferenceTable` ontology object: `public = Record.public()`.\n",
27
- "By default, {meth}`~lamindb.core.CanValidate.from_values` considers a match in a public reference a validated value for any {mod}`bionty` entity.\n",
27
+ "By default, {meth}`~lamindb.core.CanCurate.from_values` considers a match in a public reference a validated value for any {mod}`bionty` entity.\n",
28
28
  "\n",
29
29
  ":::"
30
30
  ]
@@ -92,7 +92,7 @@
92
92
  "cell_type": "markdown",
93
93
  "metadata": {},
94
94
  "source": [
95
- "{meth}`~lamindb.core.CanValidate.validate` validates passed values against reference values in a registry.\n",
95
+ "{meth}`~lamindb.core.CanCurate.validate` validates passed values against reference values in a registry.\n",
96
96
  "It returns a boolean vector indicating whether a value has an exact match in the reference values."
97
97
  ]
98
98
  },
@@ -109,11 +109,11 @@
109
109
  "cell_type": "markdown",
110
110
  "metadata": {},
111
111
  "source": [
112
- "When validation fails, you can call {meth}`~lamindb.core.CanValidate.inspect` to figure out what to do.\n",
112
+ "When validation fails, you can call {meth}`~lamindb.core.CanCurate.inspect` to figure out what to do.\n",
113
113
  "\n",
114
- "{meth}`~lamindb.core.CanValidate.inspect` applies the same definition of validation as {meth}`~lamindb.core.CanValidate.validate`, but returns a rich return value {class}`~lamindb.core.InspectResult`. Most importantly, it logs recommended curation steps that would render the data validated.\n",
114
+ "{meth}`~lamindb.core.CanCurate.inspect` applies the same definition of validation as {meth}`~lamindb.core.CanCurate.validate`, but returns a rich return value {class}`~lamindb.core.InspectResult`. Most importantly, it logs recommended curation steps that would render the data validated.\n",
115
115
  "\n",
116
- "Note: you can use {meth}`~lamindb.core.CanValidate.standardize` to standardize synonyms."
116
+ "Note: you can use {meth}`~lamindb.core.CanCurate.standardize` to standardize synonyms."
117
117
  ]
118
118
  },
119
119
  {
@@ -131,7 +131,7 @@
131
131
  "source": [
132
132
  "Following the suggestions to register new labels:\n",
133
133
  "\n",
134
- "Bulk creating records using {meth}`~lamindb.core.CanValidate.from_values` only returns validated records:\n",
134
+ "Bulk creating records using {meth}`~lamindb.core.CanCurate.from_values` only returns validated records:\n",
135
135
  "\n",
136
136
  "Note: Terms validated with public reference are also created with `.from_values`, see {doc}`/bio-registries` for details."
137
137
  ]
@@ -0,0 +1,77 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Django field validation\n",
8
+ "\n",
9
+ "[Django field validation](https://docs.djangoproject.com/en/5.1/ref/validators/) are enabled for models that inherit the `ValidateFields` class.\n",
10
+ "\n",
11
+ "For instance: [`findrefs.Reference`](https://docs.lamin.ai/findrefs.reference)"
12
+ ]
13
+ },
14
+ {
15
+ "cell_type": "code",
16
+ "execution_count": null,
17
+ "metadata": {},
18
+ "outputs": [],
19
+ "source": [
20
+ "# !pip install lamindb, findrefs\n",
21
+ "!lamin init --storage ./test-django-validation --schema findrefs"
22
+ ]
23
+ },
24
+ {
25
+ "cell_type": "code",
26
+ "execution_count": null,
27
+ "metadata": {},
28
+ "outputs": [],
29
+ "source": [
30
+ "import findrefs as fr\n",
31
+ "from lnschema_core.validation import FieldValidationError"
32
+ ]
33
+ },
34
+ {
35
+ "cell_type": "code",
36
+ "execution_count": null,
37
+ "metadata": {},
38
+ "outputs": [],
39
+ "source": [
40
+ "try:\n",
41
+ " fr.Reference(name=\"my ref\", doi=\"abc.ef\", url='myurl.com')\n",
42
+ "except FieldValidationError as e:\n",
43
+ " print(e)"
44
+ ]
45
+ },
46
+ {
47
+ "cell_type": "code",
48
+ "execution_count": null,
49
+ "metadata": {},
50
+ "outputs": [],
51
+ "source": [
52
+ "!lamin delete --force test-django-validation"
53
+ ]
54
+ }
55
+ ],
56
+ "metadata": {
57
+ "kernelspec": {
58
+ "display_name": "py310",
59
+ "language": "python",
60
+ "name": "python3"
61
+ },
62
+ "language_info": {
63
+ "codemirror_mode": {
64
+ "name": "ipython",
65
+ "version": 3
66
+ },
67
+ "file_extension": ".py",
68
+ "mimetype": "text/x-python",
69
+ "name": "python",
70
+ "nbconvert_exporter": "python",
71
+ "pygments_lexer": "ipython3",
72
+ "version": "3.10.13"
73
+ }
74
+ },
75
+ "nbformat": 4,
76
+ "nbformat_minor": 2
77
+ }
@@ -13,6 +13,7 @@ faq/key
13
13
  faq/visibility
14
14
  faq/delete
15
15
  faq/keep-artifacts-local
16
+ faq/validate-fields
16
17
  faq/symbol-mapping
17
18
  faq/search
18
19
  ```
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "cells": [
3
3
  {
4
- "attachments": {},
5
4
  "cell_type": "markdown",
6
5
  "id": "dd6bf8d1-ba40-4054-9f62-a402588f7a95",
7
6
  "metadata": {},
@@ -24,7 +23,6 @@
24
23
  ]
25
24
  },
26
25
  {
27
- "attachments": {},
28
26
  "cell_type": "markdown",
29
27
  "id": "bb95abe7",
30
28
  "metadata": {},
@@ -33,7 +31,6 @@
33
31
  ]
34
32
  },
35
33
  {
36
- "attachments": {},
37
34
  "cell_type": "markdown",
38
35
  "id": "b11215af-bb7f-4932-83ee-8f46f5583ed8",
39
36
  "metadata": {},
@@ -52,7 +49,6 @@
52
49
  ]
53
50
  },
54
51
  {
55
- "attachments": {},
56
52
  "cell_type": "markdown",
57
53
  "id": "7af3d05d-8dc3-455d-be1b-83e798621051",
58
54
  "metadata": {},
@@ -81,7 +77,6 @@
81
77
  ]
82
78
  },
83
79
  {
84
- "attachments": {},
85
80
  "cell_type": "markdown",
86
81
  "id": "622b8012-6a94-4a41-8a6b-4c178ed4cfa6",
87
82
  "metadata": {},
@@ -90,7 +85,6 @@
90
85
  ]
91
86
  },
92
87
  {
93
- "attachments": {},
94
88
  "cell_type": "markdown",
95
89
  "id": "8138a887-2de8-4ad9-ad8b-63324263fb7d",
96
90
  "metadata": {},
@@ -129,7 +123,6 @@
129
123
  ]
130
124
  },
131
125
  {
132
- "attachments": {},
133
126
  "cell_type": "markdown",
134
127
  "id": "ff0e34cd-8ebd-4196-a7bd-a667b2a360a1",
135
128
  "metadata": {},
@@ -151,7 +144,6 @@
151
144
  ]
152
145
  },
153
146
  {
154
- "attachments": {},
155
147
  "cell_type": "markdown",
156
148
  "id": "c552af90-b4b3-4465-aaec-662949d480b3",
157
149
  "metadata": {},
@@ -160,7 +152,6 @@
160
152
  ]
161
153
  },
162
154
  {
163
- "attachments": {},
164
155
  "cell_type": "markdown",
165
156
  "id": "6ac16f8b-3952-469b-9b6c-3a78c096467c",
166
157
  "metadata": {},
@@ -199,7 +190,6 @@
199
190
  ]
200
191
  },
201
192
  {
202
- "attachments": {},
203
193
  "cell_type": "markdown",
204
194
  "id": "8bd5da59-c616-4e49-9f02-f4814c19032f",
205
195
  "metadata": {},
@@ -221,7 +211,6 @@
221
211
  ]
222
212
  },
223
213
  {
224
- "attachments": {},
225
214
  "cell_type": "markdown",
226
215
  "id": "06a91d99-d204-4ec2-b567-960a2aaad38d",
227
216
  "metadata": {
@@ -232,12 +221,11 @@
232
221
  ]
233
222
  },
234
223
  {
235
- "attachments": {},
236
224
  "cell_type": "markdown",
237
225
  "id": "f760cba0-38a0-4be2-8854-d1f17689de05",
238
226
  "metadata": {},
239
227
  "source": [
240
- "Specified bucket does not exist."
228
+ "Specified file does not exist."
241
229
  ]
242
230
  },
243
231
  {
@@ -248,7 +236,15 @@
248
236
  "outputs": [],
249
237
  "source": [
250
238
  "with pytest.raises(FileNotFoundError):\n",
251
- " pbmc68k_h5ad = ln.Artifact(\"s3://inexistent-bucket-239809834/pbmc68k.h5ad\")"
239
+ " non_existent_h5ad = ln.Artifact(\"s3://lamindb-ci/test-upload/non_existent_file.h5ad\")"
240
+ ]
241
+ },
242
+ {
243
+ "cell_type": "markdown",
244
+ "id": "877a71e5",
245
+ "metadata": {},
246
+ "source": [
247
+ "Specified buket does not exist. Normally non-existent bucket raises `FileNotFoundError`, but sometimes strarts to raise `PermissionError`."
252
248
  ]
253
249
  },
254
250
  {
@@ -258,12 +254,11 @@
258
254
  "metadata": {},
259
255
  "outputs": [],
260
256
  "source": [
261
- "with pytest.raises(FileNotFoundError):\n",
262
- " pbmc68k_h5ad = ln.Artifact(\"s3://lndb-setup-ci/pbmc68k.h5ad\")"
257
+ "with pytest.raises((FileNotFoundError, PermissionError)):\n",
258
+ " non_existent_h5ad = ln.Artifact(\"s3://non_existent_bucket_6612366/non_existent_file.h5ad\")"
263
259
  ]
264
260
  },
265
261
  {
266
- "attachments": {},
267
262
  "cell_type": "markdown",
268
263
  "id": "dcbbf82f",
269
264
  "metadata": {},
@@ -272,7 +267,6 @@
272
267
  ]
273
268
  },
274
269
  {
275
- "attachments": {},
276
270
  "cell_type": "markdown",
277
271
  "id": "9483a021",
278
272
  "metadata": {},
@@ -281,7 +275,6 @@
281
275
  ]
282
276
  },
283
277
  {
284
- "attachments": {},
285
278
  "cell_type": "markdown",
286
279
  "id": "77aeb57c",
287
280
  "metadata": {},
@@ -330,7 +323,7 @@
330
323
  "name": "python",
331
324
  "nbconvert_exporter": "python",
332
325
  "pygments_lexer": "ipython3",
333
- "version": "3.10.13"
326
+ "version": "3.9.17"
334
327
  },
335
328
  "nbproject": {
336
329
  "id": "psZgub4FOmzS",
@@ -43,7 +43,7 @@ Modules and settings.
43
43
  """
44
44
 
45
45
  # denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
46
- __version__ = "0.76.16"
46
+ __version__ = "0.77.0"
47
47
 
48
48
  import os as _os
49
49
 
@@ -79,7 +79,7 @@ if _check_instance_setup(from_module="lnschema_core"):
79
79
  from . import core # isort: split
80
80
  from . import (
81
81
  _artifact,
82
- _can_validate,
82
+ _can_curate,
83
83
  _collection,
84
84
  _curate,
85
85
  _feature,
@@ -8,7 +8,7 @@ import pandas as pd
8
8
  from django.core.exceptions import FieldDoesNotExist
9
9
  from lamin_utils import colors, logger
10
10
  from lamindb_setup.core._docs import doc_args
11
- from lnschema_core import CanValidate, Record
11
+ from lnschema_core import CanCurate, Record
12
12
 
13
13
  from ._from_values import _has_organism_field, _print_values, get_or_create_records
14
14
  from ._record import _queryset, get_name_field
@@ -23,7 +23,7 @@ if TYPE_CHECKING:
23
23
 
24
24
  # from_values doesn't apply for QuerySet or Manager
25
25
  @classmethod # type:ignore
26
- @doc_args(CanValidate.from_values.__doc__)
26
+ @doc_args(CanCurate.from_values.__doc__)
27
27
  def from_values(
28
28
  cls,
29
29
  values: ListLike,
@@ -49,7 +49,7 @@ def from_values(
49
49
 
50
50
 
51
51
  @classmethod # type: ignore
52
- @doc_args(CanValidate.inspect.__doc__)
52
+ @doc_args(CanCurate.inspect.__doc__)
53
53
  def inspect(
54
54
  cls,
55
55
  values: ListLike,
@@ -71,7 +71,7 @@ def inspect(
71
71
 
72
72
 
73
73
  @classmethod # type: ignore
74
- @doc_args(CanValidate.validate.__doc__)
74
+ @doc_args(CanCurate.validate.__doc__)
75
75
  def validate(
76
76
  cls,
77
77
  values: ListLike,
@@ -268,7 +268,7 @@ def _validate(
268
268
 
269
269
 
270
270
  @classmethod # type: ignore
271
- @doc_args(CanValidate.standardize.__doc__)
271
+ @doc_args(CanCurate.standardize.__doc__)
272
272
  def standardize(
273
273
  cls,
274
274
  values: ListLike,
@@ -621,10 +621,10 @@ if ln_setup._TESTING: # type: ignore
621
621
  from inspect import signature
622
622
 
623
623
  SIGS = {
624
- name: signature(getattr(CanValidate, name))
624
+ name: signature(getattr(CanCurate, name))
625
625
  for name in METHOD_NAMES
626
626
  if not name.startswith("__")
627
627
  }
628
628
 
629
629
  for name in METHOD_NAMES:
630
- attach_func_to_class_method(name, CanValidate, globals())
630
+ attach_func_to_class_method(name, CanCurate, globals())
@@ -1731,7 +1731,7 @@ def _save_organism(name: str): # pragma: no cover
1731
1731
 
1732
1732
  def _ref_is_name(field: FieldAttr) -> bool | None:
1733
1733
  """Check if the reference field is a name field."""
1734
- from ._can_validate import get_name_field
1734
+ from ._can_curate import get_name_field
1735
1735
 
1736
1736
  name_field = get_name_field(field.field.model)
1737
1737
  return field.field.name == name_field
@@ -19,7 +19,14 @@ if TYPE_CHECKING:
19
19
  LAMIN_GREEN_LIGHTER = "#10b981"
20
20
  LAMIN_GREEN_DARKER = "#065f46"
21
21
  GREEN_FILL = "honeydew"
22
- TRANSFORM_EMOJIS = {"notebook": "📔", "app": "🖥️", "pipeline": "🧩"}
22
+ TRANSFORM_EMOJIS = {
23
+ "notebook": "📔",
24
+ "upload": "🖥️",
25
+ "pipeline": "🧩",
26
+ "script": "📝",
27
+ "function": "🔧",
28
+ "glue": "🧲",
29
+ }
23
30
  is_run_from_ipython = getattr(builtins, "__IPYTHON__", False)
24
31
 
25
32
 
@@ -12,7 +12,7 @@ from lamin_utils import colors, logger
12
12
  from lamindb_setup.core._docs import doc_args
13
13
  from lnschema_core.models import (
14
14
  Artifact,
15
- CanValidate,
15
+ CanCurate,
16
16
  Collection,
17
17
  IsVersioned,
18
18
  Record,
@@ -354,7 +354,7 @@ class QuerySet(models.QuerySet):
354
354
 
355
355
 
356
356
  # -------------------------------------------------------------------------------------
357
- # CanValidate
357
+ # CanCurate
358
358
  # -------------------------------------------------------------------------------------
359
359
 
360
360
 
@@ -374,26 +374,26 @@ def lookup(self, field: StrField | None = None, **kwargs) -> NamedTuple:
374
374
  return _lookup(cls=self, field=field, **kwargs)
375
375
 
376
376
 
377
- @doc_args(CanValidate.validate.__doc__)
377
+ @doc_args(CanCurate.validate.__doc__)
378
378
  def validate(self, values: ListLike, field: str | StrField | None = None, **kwargs):
379
379
  """{}""" # noqa: D415
380
- from ._can_validate import _validate
380
+ from ._can_curate import _validate
381
381
 
382
382
  return _validate(cls=self, values=values, field=field, **kwargs)
383
383
 
384
384
 
385
- @doc_args(CanValidate.inspect.__doc__)
385
+ @doc_args(CanCurate.inspect.__doc__)
386
386
  def inspect(self, values: ListLike, field: str | StrField | None = None, **kwargs):
387
387
  """{}""" # noqa: D415
388
- from ._can_validate import _inspect
388
+ from ._can_curate import _inspect
389
389
 
390
390
  return _inspect(cls=self, values=values, field=field, **kwargs)
391
391
 
392
392
 
393
- @doc_args(CanValidate.standardize.__doc__)
393
+ @doc_args(CanCurate.standardize.__doc__)
394
394
  def standardize(self, values: Iterable, field: str | StrField | None = None, **kwargs):
395
395
  """{}""" # noqa: D415
396
- from ._can_validate import _standardize
396
+ from ._can_curate import _standardize
397
397
 
398
398
  return _standardize(cls=self, values=values, field=field, **kwargs)
399
399
 
@@ -7,10 +7,20 @@ from typing import TYPE_CHECKING, NamedTuple
7
7
  import dj_database_url
8
8
  import lamindb_setup as ln_setup
9
9
  from django.core.exceptions import FieldDoesNotExist
10
+ from django.core.exceptions import ValidationError as DjangoValidationError
10
11
  from django.db import connections, transaction
11
12
  from django.db.models import F, IntegerField, Manager, Q, QuerySet, TextField, Value
12
13
  from django.db.models.functions import Cast, Coalesce
13
- from django.db.models.lookups import Contains, Exact, IContains, IExact, IRegex, Regex
14
+ from django.db.models.lookups import (
15
+ Contains,
16
+ Exact,
17
+ IContains,
18
+ IExact,
19
+ IRegex,
20
+ IStartsWith,
21
+ Regex,
22
+ StartsWith,
23
+ )
14
24
  from lamin_utils import colors, logger
15
25
  from lamin_utils._lookup import Lookup
16
26
  from lamindb_setup._connect_instance import (
@@ -32,7 +42,9 @@ from lnschema_core.models import (
32
42
  Run,
33
43
  Transform,
34
44
  ULabel,
45
+ ValidateFields,
35
46
  )
47
+ from lnschema_core.validation import FieldValidationError
36
48
 
37
49
  from ._utils import attach_func_to_class_method
38
50
  from .core._settings import settings
@@ -62,8 +74,11 @@ def update_attributes(record: Record, attributes: dict[str, str]):
62
74
  setattr(record, key, value)
63
75
 
64
76
 
65
- def validate_required_fields(record: Record, kwargs):
66
- # a "required field" is a Django field that has `null=True, default=None`
77
+ def validate_fields(record: Record, kwargs):
78
+ from lnschema_core.validation import validate_literal_fields
79
+
80
+ # validate required fields
81
+ # a "required field" is a Django field that has `null=False, default=None`
67
82
  required_fields = {
68
83
  k.name for k in record._meta.fields if not k.null and k.default is None
69
84
  }
@@ -92,6 +107,8 @@ def validate_required_fields(record: Record, kwargs):
92
107
  raise ValidationError(
93
108
  f'`uid` must be exactly {uid_max_length} characters long, got {len(kwargs["uid"])}.'
94
109
  )
110
+ # validate literals
111
+ validate_literal_fields(record, kwargs)
95
112
 
96
113
 
97
114
  def suggest_records_with_similar_names(record: Record, name_field: str, kwargs) -> bool:
@@ -128,7 +145,7 @@ def suggest_records_with_similar_names(record: Record, name_field: str, kwargs)
128
145
 
129
146
  def __init__(record: Record, *args, **kwargs):
130
147
  if not args:
131
- validate_required_fields(record, kwargs)
148
+ validate_fields(record, kwargs)
132
149
 
133
150
  # do not search for names if an id is passed; this is important
134
151
  # e.g. when synching ids from the notebook store to lamindb
@@ -136,9 +153,7 @@ def __init__(record: Record, *args, **kwargs):
136
153
  if "_has_consciously_provided_uid" in kwargs:
137
154
  has_consciously_provided_uid = kwargs.pop("_has_consciously_provided_uid")
138
155
  if settings.creation.search_names and not has_consciously_provided_uid:
139
- name_field = (
140
- "name" if not hasattr(record, "_name_field") else record._name_field
141
- )
156
+ name_field = getattr(record, "_name_field", "name")
142
157
  match = suggest_records_with_similar_names(record, name_field, kwargs)
143
158
  if match:
144
159
  if "version" in kwargs:
@@ -169,6 +184,16 @@ def __init__(record: Record, *args, **kwargs):
169
184
  init_self_from_db(record, existing_record)
170
185
  return None
171
186
  super(Record, record).__init__(**kwargs)
187
+ if isinstance(record, ValidateFields):
188
+ # this will trigger validation against django validators
189
+ try:
190
+ if hasattr(record, "clean_fields"):
191
+ record.clean_fields()
192
+ else:
193
+ record._Model__clean_fields()
194
+ except DjangoValidationError as e:
195
+ message = _format_django_validation_error(record, e)
196
+ raise FieldValidationError(message) from e
172
197
  elif len(args) != len(record._meta.concrete_fields):
173
198
  raise ValueError("please provide keyword arguments, not plain arguments")
174
199
  else:
@@ -177,6 +202,37 @@ def __init__(record: Record, *args, **kwargs):
177
202
  _store_record_old_name(record)
178
203
 
179
204
 
205
+ def _format_django_validation_error(record: Record, e: DjangoValidationError):
206
+ """Pretty print Django validation errors."""
207
+ errors = {}
208
+ if hasattr(e, "error_dict"):
209
+ error_dict = e.error_dict
210
+ else:
211
+ error_dict = {"__all__": e.error_list}
212
+
213
+ for field_name, error_list in error_dict.items():
214
+ for error in error_list:
215
+ if hasattr(error, "message"):
216
+ msg = error.message
217
+ else:
218
+ msg = str(error)
219
+
220
+ if field_name == "__all__":
221
+ errors[field_name] = f"{colors.yellow(msg)}"
222
+ else:
223
+ current_value = getattr(record, field_name, None)
224
+ errors[field_name] = (
225
+ f"{field_name}: {colors.yellow(current_value)} is not valid\n → {msg}"
226
+ )
227
+
228
+ if errors:
229
+ message = "\n "
230
+ for _, error in errors.items():
231
+ message += error + "\n "
232
+
233
+ return message
234
+
235
+
180
236
  @classmethod # type:ignore
181
237
  @doc_args(Record.filter.__doc__)
182
238
  def filter(cls, *queries, **expressions) -> QuerySet:
@@ -230,6 +286,7 @@ def _search(
230
286
  ) -> QuerySet:
231
287
  input_queryset = _queryset(cls, using_key=using_key)
232
288
  registry = input_queryset.model
289
+ name_field = getattr(registry, "_name_field", "name")
233
290
  if field is None:
234
291
  fields = [
235
292
  field.name
@@ -306,6 +363,16 @@ def _search(
306
363
  # also rank by contains
307
364
  contains_rank = Cast(contains_expr, output_field=IntegerField())
308
365
  ranks.append(contains_rank)
366
+ # additional rule for truncated strings
367
+ # weight matches from the beginning of the string higher
368
+ # sometimes whole words get truncated and startswith_expr is not enough
369
+ if truncate_string and field == name_field:
370
+ startswith_lookup = StartsWith if case_sensitive else IStartsWith
371
+ name_startswith_expr = startswith_lookup(field_expr, string)
372
+ name_startswith_rank = (
373
+ Cast(name_startswith_expr, output_field=IntegerField()) * 2
374
+ )
375
+ ranks.append(name_startswith_rank)
309
376
 
310
377
  ranked_queryset = (
311
378
  input_queryset.filter(reduce(lambda a, b: a | b, contains_filters))
@@ -14,13 +14,14 @@ Registries:
14
14
  ParamManager
15
15
  LabelManager
16
16
  IsVersioned
17
- CanValidate
17
+ CanCurate
18
18
  HasParents
19
19
  TracksRun
20
20
  TracksUpdates
21
21
  ParamValue
22
22
  FeatureValue
23
23
  InspectResult
24
+ ValidateFields
24
25
  fields
25
26
 
26
27
  Curators:
@@ -67,7 +68,7 @@ Modules:
67
68
  from lamin_utils import logger
68
69
  from lamin_utils._inspect import InspectResult
69
70
  from lnschema_core.models import (
70
- CanValidate,
71
+ CanCurate,
71
72
  FeatureValue,
72
73
  HasParents,
73
74
  IsVersioned,
@@ -76,6 +77,7 @@ from lnschema_core.models import (
76
77
  Registry,
77
78
  TracksRun,
78
79
  TracksUpdates,
80
+ ValidateFields,
79
81
  )
80
82
 
81
83
  from lamindb._curate import (