lamindb 0.69.7__tar.gz → 0.69.9__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 (404) hide show
  1. {lamindb-0.69.7 → lamindb-0.69.9}/.github/workflows/build.yml +6 -1
  2. {lamindb-0.69.7 → lamindb-0.69.9}/PKG-INFO +5 -5
  3. {lamindb-0.69.7 → lamindb-0.69.9}/docs/changelog.md +8 -1
  4. {lamindb-0.69.7 → lamindb-0.69.9}/docs/introduction.ipynb +90 -78
  5. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/__init__.py +1 -1
  6. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_annotate.py +46 -42
  7. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_artifact.py +66 -70
  8. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_can_validate.py +29 -25
  9. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_collection.py +30 -34
  10. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_feature.py +10 -8
  11. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_feature_set.py +17 -15
  12. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_filter.py +2 -2
  13. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_finish.py +14 -8
  14. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_from_values.py +13 -9
  15. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_is_versioned.py +2 -2
  16. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_parents.py +16 -11
  17. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_query_manager.py +8 -4
  18. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_query_set.py +15 -15
  19. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_registry.py +36 -34
  20. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_run.py +3 -5
  21. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_save.py +13 -11
  22. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_transform.py +9 -11
  23. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_ulabel.py +11 -9
  24. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_view.py +3 -2
  25. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_data.py +21 -17
  26. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_feature_manager.py +18 -13
  27. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_label_manager.py +13 -9
  28. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_mapped_collection.py +16 -12
  29. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_run_context.py +21 -17
  30. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_settings.py +19 -16
  31. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_sync_git.py +4 -5
  32. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_track_environment.py +6 -1
  33. lamindb-0.69.9/lamindb/core/_transform_settings.py +9 -0
  34. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/_view_tree.py +2 -1
  35. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/datasets/_core.py +3 -2
  36. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/datasets/_fake.py +2 -2
  37. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/_anndata_sizes.py +2 -0
  38. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/_backed_access.py +17 -12
  39. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/_zarr.py +7 -3
  40. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/file.py +13 -6
  41. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/object.py +7 -3
  42. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/types.py +0 -2
  43. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/versioning.py +12 -8
  44. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/integrations/_vitessce.py +2 -0
  45. lamindb-0.69.9/lamindb/setup/core/__init__.py +4 -0
  46. {lamindb-0.69.7 → lamindb-0.69.9}/pyproject.toml +4 -4
  47. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/bionty/__init__.py +1 -1
  48. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/pyproject.toml +1 -1
  49. lamindb-0.69.9/sub/lamin-cli/lamin_cli/__init__.py +3 -0
  50. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/lamin_cli/__main__.py +1 -0
  51. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/lamin_cli/_cache.py +1 -0
  52. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/lamin_cli/_get.py +1 -0
  53. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/lamin_cli/_migration.py +1 -0
  54. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/lamin_cli/_save.py +1 -0
  55. lamindb-0.69.9/sub/lamin-cli/tests/scripts/initialized-no-git-sync.py +9 -0
  56. lamindb-0.69.9/sub/lamin-cli/tests/test_multi_process.py +35 -0
  57. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/changelog.md +10 -0
  58. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +21 -5
  59. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +70 -5
  60. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
  61. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +109 -90
  62. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_init_instance.py +2 -1
  63. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -8
  64. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -20
  65. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +1 -4
  66. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +18 -21
  67. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/django.py +17 -44
  68. lamindb-0.69.9/sub/lamindb-setup/lamindb_setup/core/types.py +16 -0
  69. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/upath.py +30 -3
  70. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/noxfile.py +4 -1
  71. lamindb-0.69.9/sub/lamindb-setup/tests/hub-local/conftest.py +25 -0
  72. lamindb-0.69.9/sub/lnschema-bionty/.pre-commit-config.yaml +56 -0
  73. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/docs/changelog.md +1 -0
  74. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/__init__.py +2 -2
  75. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +28 -14
  76. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +2 -1
  77. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +5 -3
  78. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +8 -4
  79. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +108 -36
  80. lamindb-0.69.9/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +1156 -0
  81. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +3 -1
  82. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +3 -1
  83. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +3 -1
  84. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +21 -7
  85. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +9 -3
  86. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +12 -4
  87. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +3 -1
  88. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +3 -1
  89. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +45 -15
  90. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +3 -1
  91. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +24 -8
  92. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +27 -7
  93. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +3 -1
  94. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +9 -3
  95. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +15 -5
  96. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +12 -4
  97. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/models.py +364 -190
  98. lamindb-0.69.9/sub/lnschema-bionty/pyproject.toml +140 -0
  99. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/.github/workflows/build.yml +3 -3
  100. lamindb-0.69.9/sub/lnschema-core/.pre-commit-config.yaml +56 -0
  101. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/CHANGELOG.md +3 -0
  102. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/__init__.py +2 -2
  103. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +445 -0
  104. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +923 -0
  105. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +3 -1
  106. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +6 -2
  107. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +16 -4
  108. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +3 -1
  109. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +118 -0
  110. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +3 -1
  111. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +6 -2
  112. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +42 -9
  113. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +24 -7
  114. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +31 -6
  115. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +244 -0
  116. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +117 -0
  117. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +9 -2
  118. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +160 -0
  119. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +33 -0
  120. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +15 -5
  121. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +62 -0
  122. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +12 -2
  123. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +33 -9
  124. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +3 -1
  125. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +6 -2
  126. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +63 -12
  127. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +27 -0
  128. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +3 -1
  129. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +3 -1
  130. lamindb-0.69.9/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +89 -0
  131. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +23 -4
  132. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +10 -2
  133. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +30 -10
  134. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +4 -1
  135. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/models.py +270 -192
  136. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/types.py +11 -14
  137. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/noxfile.py +1 -1
  138. lamindb-0.69.9/sub/lnschema-core/pyproject.toml +138 -0
  139. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_run_context.py +1 -1
  140. lamindb-0.69.7/lamindb/core/_transform_settings.py +0 -9
  141. lamindb-0.69.7/lamindb/setup/core/__init__.py +0 -15
  142. lamindb-0.69.7/sub/lamin-cli/lamin_cli/__init__.py +0 -3
  143. lamindb-0.69.7/sub/lamindb-setup/lamindb_setup/core/types.py +0 -7
  144. lamindb-0.69.7/sub/lamindb-setup/tests/hub-local/conftest.py +0 -78
  145. lamindb-0.69.7/sub/lamindb-setup/tests/hub-local/test_check_s3_storage_empty.py +0 -33
  146. lamindb-0.69.7/sub/lamindb-setup/tests/hub-local/test_hosted_instance_deletion_gate.py +0 -32
  147. lamindb-0.69.7/sub/lnschema-bionty/.pre-commit-config.yaml +0 -71
  148. lamindb-0.69.7/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -521
  149. lamindb-0.69.7/sub/lnschema-bionty/pyproject.toml +0 -45
  150. lamindb-0.69.7/sub/lnschema-core/.pre-commit-config.yaml +0 -71
  151. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -220
  152. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -446
  153. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -65
  154. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -135
  155. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -77
  156. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -91
  157. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -23
  158. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -38
  159. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -18
  160. lamindb-0.69.7/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -57
  161. lamindb-0.69.7/sub/lnschema-core/pyproject.toml +0 -45
  162. {lamindb-0.69.7 → lamindb-0.69.9}/.github/workflows/latest-changes.jinja2 +0 -0
  163. {lamindb-0.69.7 → lamindb-0.69.9}/.github/workflows/latest-changes.yml +0 -0
  164. {lamindb-0.69.7 → lamindb-0.69.9}/.gitignore +0 -0
  165. {lamindb-0.69.7 → lamindb-0.69.9}/.gitmodules +0 -0
  166. {lamindb-0.69.7 → lamindb-0.69.9}/.pre-commit-config.yaml +0 -0
  167. {lamindb-0.69.7 → lamindb-0.69.9}/LICENSE +0 -0
  168. {lamindb-0.69.7 → lamindb-0.69.9}/README.md +0 -0
  169. {lamindb-0.69.7 → lamindb-0.69.9}/docs/annotate-for-developers.ipynb +0 -0
  170. {lamindb-0.69.7 → lamindb-0.69.9}/docs/annotate.ipynb +0 -0
  171. {lamindb-0.69.7 → lamindb-0.69.9}/docs/bio-registries.ipynb +0 -0
  172. {lamindb-0.69.7 → lamindb-0.69.9}/docs/bionty-base.md +0 -0
  173. {lamindb-0.69.7 → lamindb-0.69.9}/docs/bionty.md +0 -0
  174. {lamindb-0.69.7 → lamindb-0.69.9}/docs/can-validate.ipynb +0 -0
  175. {lamindb-0.69.7 → lamindb-0.69.9}/docs/data.ipynb +0 -0
  176. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/acid.ipynb +0 -0
  177. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/delete.ipynb +0 -0
  178. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/idempotency.ipynb +0 -0
  179. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/import-schema.ipynb +0 -0
  180. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/key.ipynb +0 -0
  181. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/reference-field.ipynb +0 -0
  182. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/setup.ipynb +0 -0
  183. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/test_notebooks.py +0 -0
  184. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/track-run-inputs.ipynb +0 -0
  185. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq/visibility.ipynb +0 -0
  186. {lamindb-0.69.7 → lamindb-0.69.9}/docs/faq.md +0 -0
  187. {lamindb-0.69.7 → lamindb-0.69.9}/docs/features-lamindb.md +0 -0
  188. {lamindb-0.69.7 → lamindb-0.69.9}/docs/features-laminhub.md +0 -0
  189. {lamindb-0.69.7 → lamindb-0.69.9}/docs/guide.md +0 -0
  190. {lamindb-0.69.7 → lamindb-0.69.9}/docs/index.md +0 -0
  191. {lamindb-0.69.7 → lamindb-0.69.9}/docs/installation.md +0 -0
  192. {lamindb-0.69.7 → lamindb-0.69.9}/docs/lamin-utils.md +0 -0
  193. {lamindb-0.69.7 → lamindb-0.69.9}/docs/lamindb.md +0 -0
  194. {lamindb-0.69.7 → lamindb-0.69.9}/docs/meta.ipynb +0 -0
  195. {lamindb-0.69.7 → lamindb-0.69.9}/docs/nbproject.md +0 -0
  196. {lamindb-0.69.7 → lamindb-0.69.9}/docs/query-search.md +0 -0
  197. {lamindb-0.69.7 → lamindb-0.69.9}/docs/readfcs.md +0 -0
  198. {lamindb-0.69.7 → lamindb-0.69.9}/docs/reference.md +0 -0
  199. {lamindb-0.69.7 → lamindb-0.69.9}/docs/schemas.ipynb +0 -0
  200. {lamindb-0.69.7 → lamindb-0.69.9}/docs/setup.ipynb +0 -0
  201. {lamindb-0.69.7 → lamindb-0.69.9}/docs/signup-login.md +0 -0
  202. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/add-replace-stage.ipynb +0 -0
  203. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/anndata-accessor.ipynb +0 -0
  204. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
  205. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/test-files/iris.csv +0 -0
  206. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/test-files/iris.data +0 -0
  207. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/test-files/new_iris.csv +0 -0
  208. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/test_notebooks.py +0 -0
  209. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
  210. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage/upload.ipynb +0 -0
  211. {lamindb-0.69.7 → lamindb-0.69.9}/docs/storage.md +0 -0
  212. {lamindb-0.69.7 → lamindb-0.69.9}/docs/test_notebooks.py +0 -0
  213. {lamindb-0.69.7 → lamindb-0.69.9}/docs/track.ipynb +0 -0
  214. {lamindb-0.69.7 → lamindb-0.69.9}/docs/transfer.ipynb +0 -0
  215. {lamindb-0.69.7 → lamindb-0.69.9}/docs/tutorial.ipynb +0 -0
  216. {lamindb-0.69.7 → lamindb-0.69.9}/docs/tutorial2.ipynb +0 -0
  217. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_storage.py +0 -0
  218. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/_utils.py +0 -0
  219. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/__init__.py +0 -0
  220. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/datasets/__init__.py +0 -0
  221. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/exceptions.py +0 -0
  222. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/fields.py +0 -0
  223. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/core/storage/__init__.py +0 -0
  224. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/integrations/__init__.py +0 -0
  225. {lamindb-0.69.7 → lamindb-0.69.9}/lamindb/setup/__init__.py +0 -0
  226. {lamindb-0.69.7 → lamindb-0.69.9}/noxfile.py +0 -0
  227. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/.github/workflows/build.yml +0 -0
  228. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
  229. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
  230. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/.gitignore +0 -0
  231. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/.pre-commit-config.yaml +0 -0
  232. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/LICENSE +0 -0
  233. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/README.md +0 -0
  234. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/bionty/core/__init__.py +0 -0
  235. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/docs/changelog.md +0 -0
  236. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/docs/index.md +0 -0
  237. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/docs/reference.md +0 -0
  238. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/lamin-project.yaml +0 -0
  239. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/noxfile.py +0 -0
  240. {lamindb-0.69.7 → lamindb-0.69.9}/sub/bionty/tests/test_notebooks.py +0 -0
  241. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/.gitignore +0 -0
  242. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
  243. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/README.md +0 -0
  244. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/pyproject.toml +0 -0
  245. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/conftest.py +0 -0
  246. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
  247. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
  248. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
  249. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/scripts/initialized.py +0 -0
  250. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_cli.py +0 -0
  251. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_get.py +0 -0
  252. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_migrate.py +0 -0
  253. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_save_files.py +0 -0
  254. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
  255. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
  256. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
  257. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
  258. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
  259. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/.gitignore +0 -0
  260. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
  261. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/LICENSE +0 -0
  262. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/README.md +0 -0
  263. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/01-init-on-prem-instance.ipynb +0 -0
  264. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/02-connect-on-prem-instance.ipynb +0 -0
  265. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/03-set-storage.ipynb +0 -0
  266. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  267. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
  268. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
  269. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
  270. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  271. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  272. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
  273. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
  274. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  275. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  276. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  277. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
  278. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/index.md +0 -0
  279. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/notebooks.md +0 -0
  280. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/docs/reference.md +0 -0
  281. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_add_remote_storage.py +0 -0
  282. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
  283. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
  284. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
  285. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
  286. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
  287. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
  288. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
  289. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
  290. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
  291. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
  292. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
  293. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
  294. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
  295. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
  296. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
  297. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
  298. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
  299. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
  300. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
  301. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
  302. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
  303. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
  304. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
  305. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
  306. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  307. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  308. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
  309. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
  310. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/pyproject.toml +0 -0
  311. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
  312. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
  313. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
  314. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
  315. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
  316. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
  317. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
  318. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
  319. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
  320. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
  321. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  322. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
  323. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
  324. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
  325. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
  326. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
  327. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
  328. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
  329. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
  330. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/.gitignore +0 -0
  331. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/LICENSE +0 -0
  332. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/README.md +0 -0
  333. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/docs/index.md +0 -0
  334. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/docs/reference.md +0 -0
  335. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lamin-project.yaml +0 -0
  336. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
  337. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -0
  338. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -0
  339. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -0
  340. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -0
  341. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -0
  342. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
  343. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
  344. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/noxfile.py +0 -0
  345. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
  346. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
  347. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
  348. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/.gitignore +0 -0
  349. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/LICENSE +0 -0
  350. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/README.md +0 -0
  351. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/ids.py +0 -0
  352. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
  353. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
  354. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
  355. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -0
  356. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -0
  357. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -0
  358. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -0
  359. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -0
  360. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -0
  361. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -0
  362. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
  363. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
  364. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
  365. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
  366. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/lnschema_core/users.py +0 -0
  367. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/tests/test_integrity.py +0 -0
  368. {lamindb-0.69.7 → lamindb-0.69.9}/sub/lnschema-core/tests/test_types.py +0 -0
  369. {lamindb-0.69.7 → lamindb-0.69.9}/tests/conftest.py +0 -0
  370. {lamindb-0.69.7 → lamindb-0.69.9}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
  371. {lamindb-0.69.7 → lamindb-0.69.9}/tests/notebooks/no-title.ipynb +0 -0
  372. {lamindb-0.69.7 → lamindb-0.69.9}/tests/notebooks/not-initialized.ipynb +0 -0
  373. {lamindb-0.69.7 → lamindb-0.69.9}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
  374. {lamindb-0.69.7 → lamindb-0.69.9}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
  375. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_annotate.py +0 -0
  376. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_artifact.py +0 -0
  377. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_cache.py +0 -0
  378. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_can_validate.py +0 -0
  379. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_collection.py +0 -0
  380. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_data.py +0 -0
  381. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_db.py +0 -0
  382. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_delete.py +0 -0
  383. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_feature.py +0 -0
  384. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_feature_manager.py +0 -0
  385. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_feature_set.py +0 -0
  386. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_from_values.py +0 -0
  387. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_label_manager.py +0 -0
  388. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_load.py +0 -0
  389. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_manager.py +0 -0
  390. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_notebooks.py +0 -0
  391. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_parents.py +0 -0
  392. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_queryset.py +0 -0
  393. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_registry.py +0 -0
  394. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_run.py +0 -0
  395. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_save.py +0 -0
  396. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_settings.py +0 -0
  397. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_storage.py +0 -0
  398. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_transfer.py +0 -0
  399. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_transform.py +0 -0
  400. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_uid.py +0 -0
  401. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_ulabel.py +0 -0
  402. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_versioning.py +0 -0
  403. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_view.py +0 -0
  404. {lamindb-0.69.7 → lamindb-0.69.9}/tests/test_visibility.py +0 -0
@@ -30,6 +30,11 @@ jobs:
30
30
  submodules: recursive
31
31
  fetch-depth: 0
32
32
  - uses: actions/setup-python@v5
33
+ if: ${{ matrix.group == 'storage' }}
34
+ with:
35
+ python-version: "3.9" # run just one job with a different python version
36
+ - uses: actions/setup-python@v5
37
+ if: ${{ matrix.group != 'storage' }}
33
38
  with:
34
39
  python-version: "3.11"
35
40
  - name: cache pre-commit
@@ -100,7 +105,7 @@ jobs:
100
105
  aws-region: us-east-1
101
106
  - uses: actions/setup-python@v5
102
107
  with:
103
- python-version: "3.10"
108
+ python-version: "3.10" # use 3.10, 3.8 and 3.11 give issues
104
109
  - run: pip install -U laminci
105
110
  - run: nox -s "install(group='docs')"
106
111
  - uses: actions/download-artifact@v2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb
3
- Version: 0.69.7
3
+ Version: 0.69.9
4
4
  Summary: A data framework for biology.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Requires-Python: >=3.8
@@ -9,10 +9,10 @@ Classifier: Programming Language :: Python :: 3.8
9
9
  Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
- Requires-Dist: lnschema_core==0.64.4
13
- Requires-Dist: lamindb_setup==0.68.4
12
+ Requires-Dist: lnschema_core==0.64.6
13
+ Requires-Dist: lamindb_setup==0.69.0
14
14
  Requires-Dist: lamin_utils==0.13.1
15
- Requires-Dist: lamin_cli==0.12.0
15
+ Requires-Dist: lamin_cli==0.12.1
16
16
  Requires-Dist: rapidfuzz
17
17
  Requires-Dist: pyarrow
18
18
  Requires-Dist: typing_extensions!=4.6.0
@@ -27,7 +27,7 @@ Requires-Dist: urllib3<2 ; extra == "aws"
27
27
  Requires-Dist: aiobotocore[boto3]>=2.5.4,<3.0.0 ; extra == "aws"
28
28
  Requires-Dist: s3fs==2023.12.2 ; extra == "aws"
29
29
  Requires-Dist: fsspec[s3]==2023.12.2 ; extra == "aws"
30
- Requires-Dist: bionty==0.42.4 ; extra == "bionty"
30
+ Requires-Dist: bionty==0.42.5 ; extra == "bionty"
31
31
  Requires-Dist: pandas<2 ; extra == "dev"
32
32
  Requires-Dist: pre-commit ; extra == "dev"
33
33
  Requires-Dist: nox ; extra == "dev"
@@ -1,12 +1,19 @@
1
1
  # Changelog
2
2
 
3
-
4
3
  ```{eval-rst}
5
4
  .. role:: small
6
5
  ```
7
6
 
8
7
  ## 0.69
9
8
 
9
+ ### 0.69.9 {small}`2024-04-04`
10
+
11
+ - 🐛 Fix clashes for multiple processes [PR](https://github.com/laminlabs/lamindb/pull/1553) [@falexwolf](https://github.com/falexwolf)
12
+
13
+ ### 0.69.8 {small}`2024-04-04`
14
+
15
+ - ♻️ Use future annotations [PR](https://github.com/laminlabs/lamindb/pull/1549) [@Zethson](https://github.com/Zethson)
16
+
10
17
  ### 0.69.7 {small}`2024-04-03`
11
18
 
12
19
  - ✨ Add ability to upload arbitrary files or folders from CLI [PR](https://github.com/laminlabs/lamindb/pull/1545) [@falexwolf](https://github.com/falexwolf)
@@ -77,9 +77,9 @@
77
77
  "cell_type": "markdown",
78
78
  "metadata": {},
79
79
  "source": [
80
- "### Provenance\n",
80
+ "### Data lineage\n",
81
81
  "\n",
82
- "Run {meth}`~lamindb.track` to auto-generate IDs to track data lineage."
82
+ "Run {meth}`~lamindb.track` to track data lineage."
83
83
  ]
84
84
  },
85
85
  {
@@ -88,7 +88,7 @@
88
88
  "metadata": {},
89
89
  "outputs": [],
90
90
  "source": [
91
- "# tag your code with auto-generated identifiers\n",
91
+ "# tag your notebook or script with auto-generated identifiers\n",
92
92
  "ln.settings.transform.stem_uid = \"FPnfDtJz8qbE\"\n",
93
93
  "ln.settings.transform.version = \"1\"\n",
94
94
  "\n",
@@ -157,7 +157,7 @@
157
157
  "cell_type": "markdown",
158
158
  "metadata": {},
159
159
  "source": [
160
- "### Label\n",
160
+ "### Label artifacts\n",
161
161
  "\n",
162
162
  "Label an artifact with {class}`~lamindb.ULabel`."
163
163
  ]
@@ -181,7 +181,7 @@
181
181
  "cell_type": "markdown",
182
182
  "metadata": {},
183
183
  "source": [
184
- "### Query\n",
184
+ "### Query anything\n",
185
185
  "\n",
186
186
  "Because, under-the-hood, LaminDB is SQL, you can write arbitrary relational queries."
187
187
  ]
@@ -255,9 +255,9 @@
255
255
  "cell_type": "markdown",
256
256
  "metadata": {},
257
257
  "source": [
258
- "### Public ontologies\n",
258
+ "## Validate & annotate\n",
259
259
  "\n",
260
- "Every {py:mod}`bionty` registry is based on public ontologies."
260
+ "Let's validate a `DataFrame` by passing validation criteria in the `Annotate` constructor."
261
261
  ]
262
262
  },
263
263
  {
@@ -266,10 +266,12 @@
266
266
  "metadata": {},
267
267
  "outputs": [],
268
268
  "source": [
269
- "import bionty as bt\n",
270
- "\n",
271
- "cell_types = bt.CellType.public()\n",
272
- "cell_types"
269
+ "annotate = ln.Annotate.from_df(\n",
270
+ " df,\n",
271
+ " columns=ln.Feature.name, # map column names\n",
272
+ " categoricals={df.perturbation.name: ln.ULabel.name}, # map categories\n",
273
+ ")\n",
274
+ "annotate.validate()"
273
275
  ]
274
276
  },
275
277
  {
@@ -278,16 +280,22 @@
278
280
  "metadata": {},
279
281
  "outputs": [],
280
282
  "source": [
281
- "cell_types.search(\"gamma delta T cell\").head(2)"
283
+ "# add non-validated terms to registries\n",
284
+ "annotate.add_new_from_columns()\n",
285
+ "annotate.add_new_from(df.perturbation.name)\n",
286
+ "\n",
287
+ "# view the registered features\n",
288
+ "ln.Feature.df()"
282
289
  ]
283
290
  },
284
291
  {
285
- "cell_type": "markdown",
292
+ "cell_type": "code",
293
+ "execution_count": null,
286
294
  "metadata": {},
295
+ "outputs": [],
287
296
  "source": [
288
- "## Validate & annotate\n",
289
- "\n",
290
- "Let's validate a `DataFrame` by passing validation criteria in the `Annotate` constructor."
297
+ "# view the registered ULabels\n",
298
+ "ln.ULabel.df()"
291
299
  ]
292
300
  },
293
301
  {
@@ -296,12 +304,12 @@
296
304
  "metadata": {},
297
305
  "outputs": [],
298
306
  "source": [
299
- "annotate = ln.Annotate.from_df(\n",
300
- " df,\n",
301
- " columns=ln.Feature.name, # validate column names\n",
302
- " categoricals={df.perturbation.name: ln.ULabel.name}, # validate categories\n",
303
- ")\n",
304
- "annotate.validate()"
307
+ "# now the validation passes\n",
308
+ "annotate.validate()\n",
309
+ "\n",
310
+ "# annotate and save the artifact\n",
311
+ "artifact = annotate.save_artifact(description=\"my RNA-seq\", version=\"1\")\n",
312
+ "artifact.describe()"
305
313
  ]
306
314
  },
307
315
  {
@@ -310,12 +318,9 @@
310
318
  "metadata": {},
311
319
  "outputs": [],
312
320
  "source": [
313
- "# add non-validated terms to registries for column names and perturbations\n",
314
- "annotate.add_new_from_columns()\n",
315
- "annotate.add_new_from(df.perturbation.name)\n",
316
- "\n",
317
- "# view the registered features\n",
318
- "ln.Feature.df()"
321
+ "# get lookup object for the entities of interest\n",
322
+ "lookups = annotate.lookup()\n",
323
+ "lookups"
319
324
  ]
320
325
  },
321
326
  {
@@ -324,15 +329,9 @@
324
329
  "metadata": {},
325
330
  "outputs": [],
326
331
  "source": [
327
- "# view the registered ULabels\n",
328
- "ln.ULabel.df()\n",
329
- "\n",
330
- "# now the validation passes\n",
331
- "annotate.validate()\n",
332
- "\n",
333
- "# annotate and save the artifact\n",
334
- "artifact = annotate.save_artifact(description=\"my RNA-seq\", version=\"1\")\n",
335
- "artifact.describe()"
332
+ "# filter artifacts with specific labels\n",
333
+ "perturbations = lookups[\"perturbation\"]\n",
334
+ "ln.Artifact.filter(ulabels=candidate_marker_study).filter(ulabels=perturbations.ifng).one()"
336
335
  ]
337
336
  },
338
337
  {
@@ -347,49 +346,49 @@
347
346
  ]
348
347
  },
349
348
  {
350
- "cell_type": "code",
351
- "execution_count": null,
349
+ "cell_type": "markdown",
352
350
  "metadata": {},
353
- "outputs": [],
354
351
  "source": [
355
- "# get lookup object for the entities of interest\n",
356
- "lookups = annotate.lookup()\n",
357
- "lookups"
352
+ "## Biological registries"
358
353
  ]
359
354
  },
360
355
  {
361
- "cell_type": "code",
362
- "execution_count": null,
356
+ "cell_type": "markdown",
363
357
  "metadata": {},
364
- "outputs": [],
365
- "source": []
358
+ "source": [
359
+ "The generic {class}`~lamindb.Feature` and {class}`~lamindb.ULabel` registries will get you pretty far.\n",
360
+ "\n",
361
+ "Let's now look at what you do can with a dedicated biological registry like {class}`~bionty.Gene`."
362
+ ]
366
363
  },
367
364
  {
368
- "cell_type": "code",
369
- "execution_count": null,
365
+ "cell_type": "markdown",
370
366
  "metadata": {},
371
- "outputs": [],
372
367
  "source": [
373
- "# filter artifacts with specific labels\n",
374
- "perturbations = lookups[\"perturbation\"]\n",
375
- "ln.Artifact.filter(ulabels=candidate_marker_study).filter(ulabels=perturbations.ifng).one()"
368
+ "### Access public ontologies\n",
369
+ "\n",
370
+ "Every {py:mod}`bionty` registry is based on public ontologies."
376
371
  ]
377
372
  },
378
373
  {
379
- "cell_type": "markdown",
374
+ "cell_type": "code",
375
+ "execution_count": null,
380
376
  "metadata": {},
377
+ "outputs": [],
381
378
  "source": [
382
- "## Biological types"
379
+ "import bionty as bt\n",
380
+ "\n",
381
+ "cell_types = bt.CellType.public()\n",
382
+ "cell_types"
383
383
  ]
384
384
  },
385
385
  {
386
- "cell_type": "markdown",
386
+ "cell_type": "code",
387
+ "execution_count": null,
387
388
  "metadata": {},
389
+ "outputs": [],
388
390
  "source": [
389
- "{class}`~lamindb.Feature` and {class}`~lamindb.ULabel` will get you pretty far.\n",
390
- "However, if you frequently use a specific entity, you'll want a dedicated registry.\n",
391
- "\n",
392
- "Let’s look at the example of {class}`~bionty.Gene` and use it to register features."
391
+ "cell_types.search(\"gamma delta T cell\").head(2)"
393
392
  ]
394
393
  },
395
394
  {
@@ -446,7 +445,7 @@
446
445
  "cell_type": "markdown",
447
446
  "metadata": {},
448
447
  "source": [
449
- "### Manage biological registries\n",
448
+ "### Add new entities to biological registries\n",
450
449
  "\n",
451
450
  "Create a cell type record and add a new cell state."
452
451
  ]
@@ -487,7 +486,14 @@
487
486
  "cell_type": "markdown",
488
487
  "metadata": {},
489
488
  "source": [
490
- "## Collections of artifacts"
489
+ "## Scale up learning"
490
+ ]
491
+ },
492
+ {
493
+ "cell_type": "markdown",
494
+ "metadata": {},
495
+ "source": [
496
+ "How do you learn from new data batches that extend your previous data history? Leverage {class}`~lamindb.Collection`."
491
497
  ]
492
498
  },
493
499
  {
@@ -549,16 +555,9 @@
549
555
  "outputs": [],
550
556
  "source": [
551
557
  "# if it's small enough, you can load the entire collection into memory as if it was one\n",
552
- "collection.load()"
553
- ]
554
- },
555
- {
556
- "cell_type": "code",
557
- "execution_count": null,
558
- "metadata": {},
559
- "outputs": [],
560
- "source": [
561
- "# you can always iterate over its artifacts\n",
558
+ "collection.load()\n",
559
+ "\n",
560
+ "# typically, it's too big, hence, iterate over its artifacts\n",
562
561
  "collection.artifacts.df()"
563
562
  ]
564
563
  },
@@ -567,7 +566,7 @@
567
566
  "metadata": {},
568
567
  "source": [
569
568
  "```\n",
570
- "# you can also batch iterate through collections\n",
569
+ "# to train models, batch iterate through the collection as if it was one array\n",
571
570
  "from torch.utils.data import DataLoader, WeightedRandomSampler\n",
572
571
  "dataset = collection.mapped(label_keys=[\"perturbation\"])\n",
573
572
  "sampler = WeightedRandomSampler(\n",
@@ -579,6 +578,13 @@
579
578
  "```"
580
579
  ]
581
580
  },
581
+ {
582
+ "cell_type": "markdown",
583
+ "metadata": {},
584
+ "source": [
585
+ "Read this [blog post](https://lamin.ai/blog/arrayloader-benchmarks) for more on training models on sharded datasets."
586
+ ]
587
+ },
582
588
  {
583
589
  "cell_type": "markdown",
584
590
  "metadata": {},
@@ -625,7 +631,7 @@
625
631
  "cell_type": "markdown",
626
632
  "metadata": {},
627
633
  "source": [
628
- "## Data lineage\n",
634
+ "## Data lineage across entire projects\n",
629
635
  "\n",
630
636
  "View the sequence of data transformations ({class}`~lamindb.Transform`) in a project (from [here](docs:project-flow), based on [Schmidt _et al._, 2022](https://pubmed.ncbi.nlm.nih.gov/35113687/)):\n",
631
637
  "\n",
@@ -651,13 +657,19 @@
651
657
  "cell_type": "markdown",
652
658
  "metadata": {},
653
659
  "source": [
654
- "## Loading instances\n",
660
+ "## Distributed databases\n",
661
+ "\n",
662
+ "LaminDB is a distributed system like git. Similar to cloning a repository, collaborators can connect to your instance via:\n",
655
663
  "\n",
656
- "LaminDB is a distributed system like git. Similar to cloning a repository, collaborators can load your instance on the command-line using:\n",
664
+ "```python\n",
665
+ "ln.connect(\"account-handle/instance-name\")\n",
666
+ "```\n",
667
+ "\n",
668
+ "Or you can load an instance on the command line for auto-connecting in a Python session:\n",
657
669
  "\n",
658
670
  "```shell\n",
659
- "lamin load myhandle/myinstance\n",
660
- "```"
671
+ "lamin load \"account-handle/instance-name\"\n",
672
+ "```\n"
661
673
  ]
662
674
  },
663
675
  {
@@ -40,7 +40,7 @@ Modules & settings:
40
40
 
41
41
  """
42
42
 
43
- __version__ = "0.69.7" # denote a release candidate for 0.1.0 with 0.1rc1
43
+ __version__ = "0.69.9" # denote a release candidate for 0.1.0 with 0.1rc1
44
44
 
45
45
  import os as _os
46
46
 
@@ -1,11 +1,15 @@
1
- from typing import Dict, Iterable, List, Optional, Tuple, Union
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Iterable
2
4
 
3
5
  import anndata as ad
4
6
  import lamindb_setup as ln_setup
5
7
  import pandas as pd
6
8
  from lamin_utils import colors, logger
7
9
  from lnschema_core import Artifact, Collection, Feature, Registry, Run, ULabel
8
- from lnschema_core.types import FieldAttr
10
+
11
+ if TYPE_CHECKING:
12
+ from lnschema_core.types import FieldAttr
9
13
 
10
14
 
11
15
  class ValidationError(ValueError):
@@ -19,9 +23,9 @@ class AnnotateLookup:
19
23
 
20
24
  def __init__(
21
25
  self,
22
- categorials: Dict[str, FieldAttr],
23
- slots: Dict[str, FieldAttr] = None,
24
- using: Optional[str] = None,
26
+ categorials: dict[str, FieldAttr],
27
+ slots: dict[str, FieldAttr] = None,
28
+ using: str | None = None,
25
29
  ) -> None:
26
30
  if slots is None:
27
31
  slots = {}
@@ -91,8 +95,8 @@ class DataFrameAnnotator:
91
95
  self,
92
96
  df: pd.DataFrame,
93
97
  columns: FieldAttr = Feature.name,
94
- categoricals: Optional[Dict[str, FieldAttr]] = None,
95
- using: Optional[str] = None,
98
+ categoricals: dict[str, FieldAttr] | None = None,
99
+ using: str | None = None,
96
100
  verbosity: str = "hint",
97
101
  **kwargs,
98
102
  ) -> None:
@@ -106,15 +110,15 @@ class DataFrameAnnotator:
106
110
  self._artifact = None
107
111
  self._collection = None
108
112
  self._validated = False
109
- self._kwargs: Dict = kwargs
113
+ self._kwargs: dict = kwargs
110
114
  self._save_columns()
111
115
 
112
116
  @property
113
- def fields(self) -> Dict:
117
+ def fields(self) -> dict:
114
118
  """Return the columns fields to validate against."""
115
119
  return self._fields
116
120
 
117
- def lookup(self, using: Optional[str] = None) -> AnnotateLookup:
121
+ def lookup(self, using: str | None = None) -> AnnotateLookup:
118
122
  """Lookup features and labels.
119
123
 
120
124
  Args:
@@ -260,11 +264,11 @@ class DataFrameAnnotator:
260
264
 
261
265
  def save_collection(
262
266
  self,
263
- artifact: Union[Artifact, Iterable[Artifact]],
267
+ artifact: Artifact | Iterable[Artifact],
264
268
  name: str,
265
- description: Optional[str] = None,
266
- reference: Optional[str] = None,
267
- reference_type: Optional[str] = None,
269
+ description: str | None = None,
270
+ reference: str | None = None,
271
+ reference_type: str | None = None,
268
272
  ) -> Collection:
269
273
  """Save a collection from artifact/artifacts.
270
274
 
@@ -319,7 +323,7 @@ class AnnDataAnnotator(DataFrameAnnotator):
319
323
  self,
320
324
  adata: ad.AnnData,
321
325
  var_index: FieldAttr,
322
- categoricals: Dict[str, FieldAttr],
326
+ categoricals: dict[str, FieldAttr],
323
327
  using: str = "default",
324
328
  verbosity: str = "hint",
325
329
  **kwargs,
@@ -342,11 +346,11 @@ class AnnDataAnnotator(DataFrameAnnotator):
342
346
  return self._var_field
343
347
 
344
348
  @property
345
- def categoricals(self) -> Dict:
349
+ def categoricals(self) -> dict:
346
350
  """Return the obs fields to validate against."""
347
351
  return self._obs_fields
348
352
 
349
- def lookup(self, using: Optional[str] = None) -> AnnotateLookup:
353
+ def lookup(self, using: str | None = None) -> AnnotateLookup:
350
354
  """Lookup features and labels."""
351
355
  return AnnotateLookup(
352
356
  categorials=self._obs_fields,
@@ -413,9 +417,9 @@ class Annotate:
413
417
  def from_df(
414
418
  cls,
415
419
  df: pd.DataFrame,
416
- categoricals: Optional[Dict[str, FieldAttr]] = None,
420
+ categoricals: dict[str, FieldAttr] | None = None,
417
421
  columns: FieldAttr = Feature.name,
418
- using: Optional[str] = None,
422
+ using: str | None = None,
419
423
  verbosity: str = "hint",
420
424
  **kwargs,
421
425
  ) -> DataFrameAnnotator:
@@ -433,7 +437,7 @@ class Annotate:
433
437
  cls,
434
438
  adata: ad.AnnData,
435
439
  var_index: FieldAttr,
436
- categoricals: Dict[str, FieldAttr],
440
+ categoricals: dict[str, FieldAttr],
437
441
  using: str = "default",
438
442
  verbosity: str = "hint",
439
443
  **kwargs,
@@ -448,7 +452,7 @@ class Annotate:
448
452
  )
449
453
 
450
454
 
451
- def get_registry_instance(registry: Registry, using: Optional[str] = None) -> Registry:
455
+ def get_registry_instance(registry: Registry, using: str | None = None) -> Registry:
452
456
  """Get a registry instance using a specific instance."""
453
457
  if using is not None and using != "default":
454
458
  return registry.using(using)
@@ -465,8 +469,8 @@ def standardize_and_inspect(
465
469
 
466
470
 
467
471
  def check_registry_organism(
468
- registry: Registry, organism: Optional[str] = None
469
- ) -> Optional[str]:
472
+ registry: Registry, organism: str | None = None
473
+ ) -> str | None:
470
474
  """Check if a registry needs an organism and return the organism name."""
471
475
  if hasattr(registry, "organism_id"):
472
476
  import bionty as bt
@@ -484,7 +488,7 @@ def validate_categories(
484
488
  values: Iterable[str],
485
489
  field: FieldAttr,
486
490
  key: str,
487
- using: Optional[str] = None,
491
+ using: str | None = None,
488
492
  **kwargs,
489
493
  ) -> bool:
490
494
  """Validate ontology terms in a pandas series using LaminDB registries."""
@@ -560,8 +564,8 @@ def validate_categories(
560
564
 
561
565
  def validate_categories_in_df(
562
566
  df: pd.DataFrame,
563
- fields: Dict[str, FieldAttr],
564
- using: Optional[str] = None,
567
+ fields: dict[str, FieldAttr],
568
+ using: str | None = None,
565
569
  **kwargs,
566
570
  ) -> bool:
567
571
  """Validate categories in DataFrame columns using LaminDB registries."""
@@ -580,8 +584,8 @@ def validate_categories_in_df(
580
584
  def validate_anndata(
581
585
  adata: ad.AnnData,
582
586
  var_field: FieldAttr,
583
- obs_fields: Dict[str, FieldAttr],
584
- using: Optional[str] = None,
587
+ obs_fields: dict[str, FieldAttr],
588
+ using: str | None = None,
585
589
  **kwargs,
586
590
  ) -> bool:
587
591
  """Inspect metadata in an AnnData object using LaminDB registries."""
@@ -604,9 +608,9 @@ def validate_anndata(
604
608
 
605
609
 
606
610
  def save_artifact(
607
- data: Union[pd.DataFrame, ad.AnnData],
611
+ data: pd.DataFrame | ad.AnnData,
608
612
  description: str,
609
- fields: Dict[str, FieldAttr],
613
+ fields: dict[str, FieldAttr],
610
614
  columns_field: FieldAttr,
611
615
  **kwargs,
612
616
  ) -> Artifact:
@@ -631,7 +635,7 @@ def save_artifact(
631
635
  raise ValueError("data must be a DataFrame or AnnData object")
632
636
  artifact.save()
633
637
 
634
- feature_kwargs: Dict = {}
638
+ feature_kwargs: dict = {}
635
639
  organism = check_registry_organism(
636
640
  columns_field.field.model, kwargs.pop("organism", None)
637
641
  )
@@ -662,14 +666,14 @@ def save_artifact(
662
666
 
663
667
 
664
668
  def update_registry(
665
- values: List[str],
669
+ values: list[str],
666
670
  field: FieldAttr,
667
671
  key: str,
668
672
  save_function: str = "add_new_from",
669
- using: Optional[str] = None,
673
+ using: str | None = None,
670
674
  validated_only: bool = True,
671
- kwargs: Optional[Dict] = None,
672
- df: Optional[pd.DataFrame] = None,
675
+ kwargs: dict | None = None,
676
+ df: pd.DataFrame | None = None,
673
677
  ) -> None:
674
678
  """Save features or labels records in the default instance from the using instance.
675
679
 
@@ -703,7 +707,7 @@ def update_registry(
703
707
  settings.verbosity = verbosity
704
708
  return
705
709
 
706
- labels_saved: Dict = {"from public": [], "without reference": []}
710
+ labels_saved: dict = {"from public": [], "without reference": []}
707
711
 
708
712
  (
709
713
  labels_saved[f"from {using}"],
@@ -757,7 +761,7 @@ def update_registry(
757
761
 
758
762
 
759
763
  def log_saved_labels(
760
- labels_saved: Dict,
764
+ labels_saved: dict,
761
765
  key: str,
762
766
  save_function: str,
763
767
  model_field: str,
@@ -795,7 +799,7 @@ def log_saved_labels(
795
799
  )
796
800
 
797
801
 
798
- def save_ulabels_with_parent(values: List[str], field: FieldAttr, key: str) -> None:
802
+ def save_ulabels_with_parent(values: list[str], field: FieldAttr, key: str) -> None:
799
803
  """Save a parent label for the given labels."""
800
804
  registry = field.field.model
801
805
  assert registry == ULabel
@@ -808,11 +812,11 @@ def save_ulabels_with_parent(values: List[str], field: FieldAttr, key: str) -> N
808
812
 
809
813
 
810
814
  def update_registry_from_using_instance(
811
- values: List[str],
815
+ values: list[str],
812
816
  field: FieldAttr,
813
- using: Optional[str] = None,
814
- kwargs: Optional[Dict] = None,
815
- ) -> Tuple[List[str], List[str]]:
817
+ using: str | None = None,
818
+ kwargs: dict | None = None,
819
+ ) -> tuple[list[str], list[str]]:
816
820
  """Save features or labels records from the using instance.
817
821
 
818
822
  Args: