lamindb 0.63.5__tar.gz → 0.64.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lamindb-0.63.5 → lamindb-0.64.1}/.github/workflows/build.yml +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/PKG-INFO +5 -5
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/annotate.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/bio-registries.ipynb +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/changelog.md +15 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/data.ipynb +13 -13
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/acid.ipynb +11 -11
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/delete.ipynb +16 -16
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/idempotency.ipynb +24 -24
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/import-schema.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/key.ipynb +117 -135
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/reference-field.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/setup.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/track-run-inputs.ipynb +21 -21
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/validator.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/visibility.ipynb +19 -19
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/features-lamindb.md +4 -4
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/features-laminhub.md +2 -3
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/installation.md +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/introduction.ipynb +49 -49
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/meta.ipynb +17 -17
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/public-ontologies.ipynb +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/schemas.ipynb +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/setup.ipynb +3 -3
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/add-replace-stage.ipynb +42 -42
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/anndata-accessor.ipynb +6 -6
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/upload.ipynb +14 -14
- lamindb-0.64.1/docs/test_notebooks.py +25 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/track.ipynb +6 -6
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/transfer.ipynb +21 -21
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/tutorial.ipynb +160 -112
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/tutorial2.ipynb +74 -102
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/validate.ipynb +4 -4
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/__init__.py +5 -4
- lamindb-0.63.5/lamindb/_file.py → lamindb-0.64.1/lamindb/_artifact.py +265 -210
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_dataset.py +87 -115
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_delete.py +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_filter.py +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_parents.py +7 -7
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_query_manager.py +5 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_registry.py +3 -3
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_save.py +63 -63
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_data.py +10 -9
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_feature_manager.py +10 -10
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_label_manager.py +4 -4
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_run_context.py +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_settings.py +5 -4
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_view_tree.py +5 -5
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/datasets/_core.py +6 -6
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/hashing.py +11 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/__init__.py +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/_backed_access.py +6 -6
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/file.py +36 -31
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/versioning.py +3 -3
- {lamindb-0.63.5 → lamindb-0.64.1}/pyproject.toml +4 -4
- lamindb-0.64.1/sub/lamin-cli/lamin_cli/__init__.py +3 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/lamin_cli/_transform.py +24 -24
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/changelog.md +2 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +1 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/django.py +7 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/CHANGELOG.md +3 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/__init__.py +2 -2
- lamindb-0.64.1/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +121 -0
- lamindb-0.64.1/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +16 -0
- lamindb-0.64.1/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +26 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/models.py +172 -228
- lamindb-0.63.5/tests/test_file.py → lamindb-0.64.1/tests/test_artifact.py +246 -194
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_cache.py +14 -14
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_dataset.py +53 -68
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_feature.py +16 -14
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_feature_manager.py +67 -62
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_hashing.py +1 -1
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_label_manager.py +2 -2
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_registry.py +38 -29
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_save.py +13 -13
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_storage.py +2 -2
- lamindb-0.64.1/tests/test_transfer.py +85 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_visibility.py +7 -7
- lamindb-0.63.5/docs/test_notebooks.py +0 -25
- lamindb-0.63.5/sub/lamin-cli/lamin_cli/__init__.py +0 -3
- lamindb-0.63.5/sub/lnschema-bionty/.github/workflows/build.yml +0 -51
- lamindb-0.63.5/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -25
- lamindb-0.63.5/sub/lnschema-bionty/.gitignore +0 -119
- lamindb-0.63.5/sub/lnschema-bionty/.pre-commit-config.yaml +0 -65
- lamindb-0.63.5/sub/lnschema-bionty/README.md +0 -5
- lamindb-0.63.5/sub/lnschema-bionty/docs/changelog.md +0 -179
- lamindb-0.63.5/sub/lnschema-bionty/docs/index.md +0 -11
- lamindb-0.63.5/sub/lnschema-bionty/docs/reference.md +0 -5
- lamindb-0.63.5/sub/lnschema-bionty/lamin-project.yaml +0 -5
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/__init__.py +0 -121
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -121
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/dev/__init__.py +0 -14
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/dev/_bionty.py +0 -40
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/dev/_settings.py +0 -62
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -71
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -766
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -549
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -46
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -85
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -151
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -137
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -60
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -67
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -82
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -17
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -17
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -93
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -17
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -43
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -163
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -123
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -53
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -64
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -132
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -77
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -23
- lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty/models.py +0 -1266
- lamindb-0.63.5/sub/lnschema-bionty/noxfile.py +0 -20
- lamindb-0.63.5/sub/lnschema-bionty/pyproject.toml +0 -46
- lamindb-0.63.5/sub/lnschema-bionty/tests/test_integrity.py +0 -13
- lamindb-0.63.5/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -2
- lamindb-0.63.5/sub/lnschema-core/LICENSE +0 -201
- lamindb-0.63.5/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- lamindb-0.63.5/tests/test_transfer.py +0 -86
- {lamindb-0.63.5 → lamindb-0.64.1}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/.gitignore +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/.gitmodules +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/.pre-commit-config.yaml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/LICENSE +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/README.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/bionty.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/faq.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/guide.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/index.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/lamin-utils.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/lamindb.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/lnschema-bionty.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/nbproject.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/query-search.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/readfcs.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/reference.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/signup-login.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/docs/storage.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_feature.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_feature_set.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_from_values.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_query_set.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_run.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_storage.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_transform.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_ulabel.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_utils.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_validate.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/_view.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/_mapped_dataset.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/datasets/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/datasets/_fake.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/exceptions.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/fields.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/_anndata_sizes.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/_zarr.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/storage/object.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/dev/types.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/lamindb/setup/dev/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/noxfile.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/notebooks/no-title.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/scripts/initialized.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/scripts/not-initialized.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/test_notebooks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamin-cli/tests/test_scripts.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-cache-management.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-empty-init.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-import-schema.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-invalid-schema.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-load-lock.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test-sqlite-sync.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-only/test_notebooks2.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/01-init-instance.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/02-load-instance.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/03-set-storage.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/04-test-bionty.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/test-multi-session.ipynb +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/prod-staging/test_notebooks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_check_instance_setup.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_docstrings.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_export.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_info.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_init_vault.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_load_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_set.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_settings.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_deprecated.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_docs.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_client.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_core.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_crud.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_hub_utils.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_load.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_save.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_storage.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_store.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_settings_user.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/_setup_bionty_sources.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/cloud_sqlite_locker.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/lamindb_setup/dev/upath.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-only/conftest.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-only/test_django.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-only/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_delete_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_init_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_load_instance.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_login.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_migrate.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/prod-staging/test_set_storage.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/test_storage_access.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lamindb-setup/tests/test_vault.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.63.5/sub/lnschema-bionty → lamindb-0.64.1/sub/lnschema-core}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.63.5/sub/lnschema-bionty → lamindb-0.64.1/sub/lnschema-core}/LICENSE +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.63.5/sub/lnschema-bionty/lnschema_bionty → lamindb-0.64.1/sub/lnschema-core/lnschema_core}/migrations/__init__.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/conftest.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_data.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_db.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_delete.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_feature_set.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_from_values.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_manager.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_parents.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_queryset.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_run.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_run_context.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_settings.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_transform.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_ulabel.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_validate.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_versioning.py +0 -0
- {lamindb-0.63.5 → lamindb-0.64.1}/tests/test_view.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.64.1
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.8
|
@@ -8,10 +8,10 @@ Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: Programming Language :: Python :: 3.8
|
9
9
|
Classifier: Programming Language :: Python :: 3.9
|
10
10
|
Classifier: Programming Language :: Python :: 3.10
|
11
|
-
Requires-Dist: lnschema_core==0.
|
12
|
-
Requires-Dist: lamindb_setup==0.61.
|
11
|
+
Requires-Dist: lnschema_core==0.58.1
|
12
|
+
Requires-Dist: lamindb_setup==0.61.4
|
13
13
|
Requires-Dist: lamin_utils==0.12.0
|
14
|
-
Requires-Dist: lamin_cli==0.
|
14
|
+
Requires-Dist: lamin_cli==0.3.0
|
15
15
|
Requires-Dist: rapidfuzz
|
16
16
|
Requires-Dist: pyarrow
|
17
17
|
Requires-Dist: typing_extensions!=4.6.0
|
@@ -27,7 +27,7 @@ Requires-Dist: boto3==1.28.17 ; extra == "aws"
|
|
27
27
|
Requires-Dist: aiobotocore==2.5.4 ; extra == "aws"
|
28
28
|
Requires-Dist: fsspec[s3]==2023.9.0 ; extra == "aws"
|
29
29
|
Requires-Dist: s3fs>=2023.9.0 ; extra == "aws"
|
30
|
-
Requires-Dist: lnschema_bionty==0.
|
30
|
+
Requires-Dist: lnschema_bionty==0.36.1 ; 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"
|
@@ -668,11 +668,11 @@
|
|
668
668
|
"name": "python3"
|
669
669
|
},
|
670
670
|
"language_info": {
|
671
|
+
"artifact_extension": ".py",
|
671
672
|
"codemirror_mode": {
|
672
673
|
"name": "ipython",
|
673
674
|
"version": 3
|
674
675
|
},
|
675
|
-
"file_extension": ".py",
|
676
676
|
"mimetype": "text/x-python",
|
677
677
|
"name": "python",
|
678
678
|
"nbconvert_exporter": "python",
|
@@ -726,7 +726,7 @@
|
|
726
726
|
"cell_type": "markdown",
|
727
727
|
"metadata": {},
|
728
728
|
"source": [
|
729
|
-
"You can also pass organism for validating features upon registering data, e.g., in `ln.
|
729
|
+
"You can also pass organism for validating features upon registering data, e.g., in `ln.Artifact.from_anndata(..., field=lb.Gene.ensembl_gene_id, organism=...)`."
|
730
730
|
]
|
731
731
|
},
|
732
732
|
{
|
@@ -934,11 +934,11 @@
|
|
934
934
|
"name": "python3"
|
935
935
|
},
|
936
936
|
"language_info": {
|
937
|
+
"artifact_extension": ".py",
|
937
938
|
"codemirror_mode": {
|
938
939
|
"name": "ipython",
|
939
940
|
"version": 3
|
940
941
|
},
|
941
|
-
"file_extension": ".py",
|
942
942
|
"mimetype": "text/x-python",
|
943
943
|
"name": "python",
|
944
944
|
"nbconvert_exporter": "python",
|
@@ -1,13 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
```{eval-rst}
|
3
4
|
.. role:: small
|
4
5
|
```
|
5
6
|
|
7
|
+
## 0.64
|
8
|
+
|
9
|
+
### 0.64.1 {small}`2023-11-24`
|
10
|
+
|
11
|
+
- 🚸 Silence the httpx logger [PR1356](https://github.com/laminlabs/lamindb/pull/1356) [@falexwolf](https://github.com/falexwolf)
|
12
|
+
- 🐛 Fix hash inference for cloud non-s3 objects and use stored gcs credentials [PR1355](https://github.com/laminlabs/lamindb/pull/1355) [@Koncopd](https://github.com/Koncopd)
|
13
|
+
|
14
|
+
### 0.64.0 {small}`2023-11-24`
|
15
|
+
|
16
|
+
🏗️ Replace `File` with `Artifact` to model directories and directory-like array stores [PR1345](https://github.com/laminlabs/lamindb/pull/1345) [@falexwolf](https://github.com/falexwolf).
|
17
|
+
|
18
|
+
For artifacts that are simple files, rename `File` to `Artifact` along with the word `file` to `artifact` in registry fields. Otherwise, your code will behave the same.
|
19
|
+
|
6
20
|
## 0.63
|
7
21
|
|
8
22
|
### 0.63.5 {small}`2023-12-11`
|
9
23
|
|
10
|
-
- 🐛 Fix `lamin save`
|
24
|
+
- 🐛 Fix `lamin save` for scripts [PR1346](https://github.com/laminlabs/lamindb/pull/1346) [@sunnyosun](https://github.com/sunnyosun)
|
11
25
|
|
12
26
|
### 0.63.4 {small}`2023-12-08`
|
13
27
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
"cell_type": "markdown",
|
21
21
|
"metadata": {},
|
22
22
|
"source": [
|
23
|
-
"We saw how LaminDB allows to query & search across
|
23
|
+
"We saw how LaminDB allows to query & search across artifacts & datasets using registries: {doc}`meta`.\n",
|
24
24
|
"\n",
|
25
25
|
"Let us now look at the following case:\n",
|
26
26
|
"\n",
|
@@ -28,12 +28,12 @@
|
|
28
28
|
"# get a lookup for labels\n",
|
29
29
|
"ulabels = ln.ULabel.lookup()\n",
|
30
30
|
"# query a parquet file matching an \"setosa\"\n",
|
31
|
-
"df = ln.
|
31
|
+
"df = ln.Artifact.filter(ulabels=ulabels.setosa, suffix=\".suffix\").first().load()\n",
|
32
32
|
"# query all observations in the DataFrame matching \"setosa\"\n",
|
33
33
|
"df_setosa = df.loc[:, df.iris_organism_name == ulabels.setosa.name] \n",
|
34
34
|
"```\n",
|
35
35
|
"\n",
|
36
|
-
"Because the
|
36
|
+
"Because the artifact was validated, querying the `DataFrame` is guaranteed to succeed!\n",
|
37
37
|
"\n",
|
38
38
|
"Such within-dataset queries are also possible for cloud-backed datasets using DuckDB, TileDB, zarr, HDF5, parquet, and other storage backends.\n",
|
39
39
|
"\n",
|
@@ -96,8 +96,8 @@
|
|
96
96
|
},
|
97
97
|
"outputs": [],
|
98
98
|
"source": [
|
99
|
-
"ln.
|
100
|
-
"ln.
|
99
|
+
"ln.Artifact(\"s3://lamindb-ci/lndb-storage/pbmc68k.h5ad\").save()\n",
|
100
|
+
"ln.Artifact(\"s3://lamindb-ci/lndb-storage/testfile.hdf5\").save()"
|
101
101
|
]
|
102
102
|
},
|
103
103
|
{
|
@@ -112,7 +112,7 @@
|
|
112
112
|
"cell_type": "markdown",
|
113
113
|
"metadata": {},
|
114
114
|
"source": [
|
115
|
-
"An `h5ad`
|
115
|
+
"An `h5ad` artifact stored on s3:"
|
116
116
|
]
|
117
117
|
},
|
118
118
|
{
|
@@ -121,7 +121,7 @@
|
|
121
121
|
"metadata": {},
|
122
122
|
"outputs": [],
|
123
123
|
"source": [
|
124
|
-
"
|
124
|
+
"artifact = ln.Artifact.filter(key=\"lndb-storage/pbmc68k.h5ad\").one()"
|
125
125
|
]
|
126
126
|
},
|
127
127
|
{
|
@@ -130,7 +130,7 @@
|
|
130
130
|
"metadata": {},
|
131
131
|
"outputs": [],
|
132
132
|
"source": [
|
133
|
-
"
|
133
|
+
"artifact.path"
|
134
134
|
]
|
135
135
|
},
|
136
136
|
{
|
@@ -139,7 +139,7 @@
|
|
139
139
|
"metadata": {},
|
140
140
|
"outputs": [],
|
141
141
|
"source": [
|
142
|
-
"adata =
|
142
|
+
"adata = artifact.backed()"
|
143
143
|
]
|
144
144
|
},
|
145
145
|
{
|
@@ -244,7 +244,7 @@
|
|
244
244
|
"cell_type": "markdown",
|
245
245
|
"metadata": {},
|
246
246
|
"source": [
|
247
|
-
"Let us query a generic HDF5
|
247
|
+
"Let us query a generic HDF5 artifact:"
|
248
248
|
]
|
249
249
|
},
|
250
250
|
{
|
@@ -253,7 +253,7 @@
|
|
253
253
|
"metadata": {},
|
254
254
|
"outputs": [],
|
255
255
|
"source": [
|
256
|
-
"
|
256
|
+
"artifact = ln.Artifact.filter(key=\"lndb-storage/testfile.hdf5\").one()"
|
257
257
|
]
|
258
258
|
},
|
259
259
|
{
|
@@ -270,7 +270,7 @@
|
|
270
270
|
"metadata": {},
|
271
271
|
"outputs": [],
|
272
272
|
"source": [
|
273
|
-
"backed =
|
273
|
+
"backed = artifact.backed()"
|
274
274
|
]
|
275
275
|
},
|
276
276
|
{
|
@@ -322,11 +322,11 @@
|
|
322
322
|
"name": "python3"
|
323
323
|
},
|
324
324
|
"language_info": {
|
325
|
+
"artifact_extension": ".py",
|
325
326
|
"codemirror_mode": {
|
326
327
|
"name": "ipython",
|
327
328
|
"version": 3
|
328
329
|
},
|
329
|
-
"file_extension": ".py",
|
330
330
|
"mimetype": "text/x-python",
|
331
331
|
"name": "python",
|
332
332
|
"nbconvert_exporter": "python",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"id": "2096971d",
|
16
16
|
"metadata": {},
|
17
17
|
"source": [
|
18
|
-
"Here, we walk through different errors that can occur while saving
|
18
|
+
"Here, we walk through different errors that can occur while saving artifacts & metadata records, and show that the LaminDB instance does not get corrupted by dangling metadata or artifacts. You could say transactions across data & metadata are [ACID](https://en.wikipedia.org/wiki/ACID)."
|
19
19
|
]
|
20
20
|
},
|
21
21
|
{
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"id": "0c582719-42de-4e9d-bdcb-51f8aabb3ca5",
|
78
78
|
"metadata": {},
|
79
79
|
"source": [
|
80
|
-
"Let's try to save a
|
80
|
+
"Let's try to save a artifact to a storage location without permission."
|
81
81
|
]
|
82
82
|
},
|
83
83
|
{
|
@@ -87,7 +87,7 @@
|
|
87
87
|
"metadata": {},
|
88
88
|
"outputs": [],
|
89
89
|
"source": [
|
90
|
-
"
|
90
|
+
"artifact = ln.Artifact(\n",
|
91
91
|
" ln.dev.datasets.anndata_mouse_sc_lymph_node(),\n",
|
92
92
|
" description=\"Mouse Lymph Node scRNA-seq\",\n",
|
93
93
|
")"
|
@@ -139,7 +139,7 @@
|
|
139
139
|
"outputs": [],
|
140
140
|
"source": [
|
141
141
|
"with pytest.raises(RuntimeError) as error:\n",
|
142
|
-
"
|
142
|
+
" artifact.save()\n",
|
143
143
|
"print(error.exconly())"
|
144
144
|
]
|
145
145
|
},
|
@@ -159,7 +159,7 @@
|
|
159
159
|
"metadata": {},
|
160
160
|
"outputs": [],
|
161
161
|
"source": [
|
162
|
-
"assert len(ln.
|
162
|
+
"assert len(ln.Artifact.filter().all()) == 0"
|
163
163
|
]
|
164
164
|
},
|
165
165
|
{
|
@@ -179,8 +179,8 @@
|
|
179
179
|
"outputs": [],
|
180
180
|
"source": [
|
181
181
|
"filepath = ln.dev.datasets.file_jpg_paradisi05()\n",
|
182
|
-
"
|
183
|
-
"
|
182
|
+
"artifact = ln.Artifact(filepath, description=\"My image\")\n",
|
183
|
+
"artifacts = [artifact, \"this is not a record\"]"
|
184
184
|
]
|
185
185
|
},
|
186
186
|
{
|
@@ -200,7 +200,7 @@
|
|
200
200
|
"outputs": [],
|
201
201
|
"source": [
|
202
202
|
"with pytest.raises(Exception) as error:\n",
|
203
|
-
" ln.save(
|
203
|
+
" ln.save(artifacts)\n",
|
204
204
|
"print(error.exconly())"
|
205
205
|
]
|
206
206
|
},
|
@@ -220,8 +220,8 @@
|
|
220
220
|
"metadata": {},
|
221
221
|
"outputs": [],
|
222
222
|
"source": [
|
223
|
-
"
|
224
|
-
"assert len(
|
223
|
+
"artifacts = ln.Artifact.filter().all()\n",
|
224
|
+
"assert len(artifacts) == 0"
|
225
225
|
]
|
226
226
|
},
|
227
227
|
{
|
@@ -257,11 +257,11 @@
|
|
257
257
|
"name": "python3"
|
258
258
|
},
|
259
259
|
"language_info": {
|
260
|
+
"artifact_extension": ".py",
|
260
261
|
"codemirror_mode": {
|
261
262
|
"name": "ipython",
|
262
263
|
"version": 3
|
263
264
|
},
|
264
|
-
"file_extension": ".py",
|
265
265
|
"mimetype": "text/x-python",
|
266
266
|
"name": "python",
|
267
267
|
"nbconvert_exporter": "python",
|
@@ -11,7 +11,7 @@
|
|
11
11
|
"When it comes to **records of `File` and `Dataset`**, they are **\"moved into trash\"** when you first call `record.delete()`.\n",
|
12
12
|
"- Trashed records are invisible in the UI and excluded from the query results, see [visibility faq](/faq/visibility).\n",
|
13
13
|
"- If a record is already in the trash or `permanent=True` is passed, calling `record.delete()` triggers permanent delete.\n",
|
14
|
-
"- During permanent deletion of a record, its
|
14
|
+
"- During permanent deletion of a record, its artifact in storage is also deleted unless it has a semantic `key`."
|
15
15
|
]
|
16
16
|
},
|
17
17
|
{
|
@@ -46,8 +46,8 @@
|
|
46
46
|
"metadata": {},
|
47
47
|
"outputs": [],
|
48
48
|
"source": [
|
49
|
-
"
|
50
|
-
"
|
49
|
+
"artifact = ln.Artifact(pd.DataFrame({\"a\": [1, 2], \"b\": [3, 4]}), description=\"mydf\")\n",
|
50
|
+
"artifact.save()"
|
51
51
|
]
|
52
52
|
},
|
53
53
|
{
|
@@ -56,14 +56,14 @@
|
|
56
56
|
"metadata": {},
|
57
57
|
"outputs": [],
|
58
58
|
"source": [
|
59
|
-
"ln.
|
59
|
+
"ln.Artifact.filter().df()"
|
60
60
|
]
|
61
61
|
},
|
62
62
|
{
|
63
63
|
"cell_type": "markdown",
|
64
64
|
"metadata": {},
|
65
65
|
"source": [
|
66
|
-
"## Trash a
|
66
|
+
"## Trash a artifact"
|
67
67
|
]
|
68
68
|
},
|
69
69
|
{
|
@@ -72,7 +72,7 @@
|
|
72
72
|
"metadata": {},
|
73
73
|
"outputs": [],
|
74
74
|
"source": [
|
75
|
-
"
|
75
|
+
"artifact.delete()"
|
76
76
|
]
|
77
77
|
},
|
78
78
|
{
|
@@ -88,14 +88,14 @@
|
|
88
88
|
"metadata": {},
|
89
89
|
"outputs": [],
|
90
90
|
"source": [
|
91
|
-
"ln.
|
91
|
+
"ln.Artifact.filter().df()"
|
92
92
|
]
|
93
93
|
},
|
94
94
|
{
|
95
95
|
"cell_type": "markdown",
|
96
96
|
"metadata": {},
|
97
97
|
"source": [
|
98
|
-
"But the
|
98
|
+
"But the artifact still exists in the database, you can find it by not filtering for visibility:"
|
99
99
|
]
|
100
100
|
},
|
101
101
|
{
|
@@ -104,14 +104,14 @@
|
|
104
104
|
"metadata": {},
|
105
105
|
"outputs": [],
|
106
106
|
"source": [
|
107
|
-
"ln.
|
107
|
+
"ln.Artifact.filter(visibility=None).df()"
|
108
108
|
]
|
109
109
|
},
|
110
110
|
{
|
111
111
|
"cell_type": "markdown",
|
112
112
|
"metadata": {},
|
113
113
|
"source": [
|
114
|
-
"You can restore a
|
114
|
+
"You can restore a artifact from trash:"
|
115
115
|
]
|
116
116
|
},
|
117
117
|
{
|
@@ -120,7 +120,7 @@
|
|
120
120
|
"metadata": {},
|
121
121
|
"outputs": [],
|
122
122
|
"source": [
|
123
|
-
"
|
123
|
+
"artifact.restore()"
|
124
124
|
]
|
125
125
|
},
|
126
126
|
{
|
@@ -129,7 +129,7 @@
|
|
129
129
|
"metadata": {},
|
130
130
|
"outputs": [],
|
131
131
|
"source": [
|
132
|
-
"ln.
|
132
|
+
"ln.Artifact.filter().df()"
|
133
133
|
]
|
134
134
|
},
|
135
135
|
{
|
@@ -138,7 +138,7 @@
|
|
138
138
|
"source": [
|
139
139
|
"## Permanent delete\n",
|
140
140
|
"\n",
|
141
|
-
"Calling `
|
141
|
+
"Calling `artifact.delete` on a trashed artifact triggers a permanent delete dialog. You can pass `permanent=True` to auto-confirm the deletion."
|
142
142
|
]
|
143
143
|
},
|
144
144
|
{
|
@@ -147,7 +147,7 @@
|
|
147
147
|
"metadata": {},
|
148
148
|
"outputs": [],
|
149
149
|
"source": [
|
150
|
-
"
|
150
|
+
"artifact.delete(permanent=True)"
|
151
151
|
]
|
152
152
|
},
|
153
153
|
{
|
@@ -163,7 +163,7 @@
|
|
163
163
|
"metadata": {},
|
164
164
|
"outputs": [],
|
165
165
|
"source": [
|
166
|
-
"ln.
|
166
|
+
"ln.Artifact.filter(visibility=None).df()"
|
167
167
|
]
|
168
168
|
}
|
169
169
|
],
|
@@ -174,11 +174,11 @@
|
|
174
174
|
"name": "python3"
|
175
175
|
},
|
176
176
|
"language_info": {
|
177
|
+
"artifact_extension": ".py",
|
177
178
|
"codemirror_mode": {
|
178
179
|
"name": "ipython",
|
179
180
|
"version": 3
|
180
181
|
},
|
181
|
-
"file_extension": ".py",
|
182
182
|
"mimetype": "text/x-python",
|
183
183
|
"name": "python",
|
184
184
|
"nbconvert_exporter": "python",
|
@@ -6,7 +6,7 @@
|
|
6
6
|
"id": "fe2d8275-0883-4ffe-9912-920b28efc9d2",
|
7
7
|
"metadata": {},
|
8
8
|
"source": [
|
9
|
-
"# What happens if I save the same
|
9
|
+
"# What happens if I save the same artifacts & records twice?"
|
10
10
|
]
|
11
11
|
},
|
12
12
|
{
|
@@ -33,11 +33,11 @@
|
|
33
33
|
"\n",
|
34
34
|
"### Files\n",
|
35
35
|
"\n",
|
36
|
-
"If you try to create a {class}`~lamindb.
|
36
|
+
"If you try to create a {class}`~lamindb.Artifact` object from the same content, depending on {attr}`~lamindb.dev.Settings.upon_artifact_create_if_hash_exists`, \n",
|
37
37
|
"\n",
|
38
|
-
"- you'll get an existing object, if `
|
39
|
-
"- you'll get an error, if `
|
40
|
-
"- you'll get a warning and a new object, if `
|
38
|
+
"- you'll get an existing object, if `upon_artifact_create_if_hash_exists = \"warn_return_existing\"` (the default)\n",
|
39
|
+
"- you'll get an error, if `upon_artifact_create_if_hash_exists = \"error\"`\n",
|
40
|
+
"- you'll get a warning and a new object, if `upon_artifact_create_if_hash_exists = \"warn_create_new\"`"
|
41
41
|
]
|
42
42
|
},
|
43
43
|
{
|
@@ -260,7 +260,7 @@
|
|
260
260
|
"id": "431fbcc4",
|
261
261
|
"metadata": {},
|
262
262
|
"source": [
|
263
|
-
"#### Warn upon trying to re-ingest an existing
|
263
|
+
"#### Warn upon trying to re-ingest an existing artifact"
|
264
264
|
]
|
265
265
|
},
|
266
266
|
{
|
@@ -270,7 +270,7 @@
|
|
270
270
|
"metadata": {},
|
271
271
|
"outputs": [],
|
272
272
|
"source": [
|
273
|
-
"assert ln.settings.
|
273
|
+
"assert ln.settings.upon_artifact_create_if_hash_exists == \"warn_return_existing\""
|
274
274
|
]
|
275
275
|
},
|
276
276
|
{
|
@@ -299,8 +299,8 @@
|
|
299
299
|
"metadata": {},
|
300
300
|
"outputs": [],
|
301
301
|
"source": [
|
302
|
-
"
|
303
|
-
"
|
302
|
+
"artifact = ln.Artifact(filepath, description=\"My fcs artifact\")\n",
|
303
|
+
"artifact.save()"
|
304
304
|
]
|
305
305
|
},
|
306
306
|
{
|
@@ -314,7 +314,7 @@
|
|
314
314
|
},
|
315
315
|
"outputs": [],
|
316
316
|
"source": [
|
317
|
-
"assert
|
317
|
+
"assert artifact.hash == \"KCEXRahJ-Ui9Y6nksQ8z1A\""
|
318
318
|
]
|
319
319
|
},
|
320
320
|
{
|
@@ -333,7 +333,7 @@
|
|
333
333
|
"metadata": {},
|
334
334
|
"outputs": [],
|
335
335
|
"source": [
|
336
|
-
"
|
336
|
+
"artifact2 = ln.Artifact(filepath)"
|
337
337
|
]
|
338
338
|
},
|
339
339
|
{
|
@@ -352,7 +352,7 @@
|
|
352
352
|
"metadata": {},
|
353
353
|
"outputs": [],
|
354
354
|
"source": [
|
355
|
-
"assert
|
355
|
+
"assert artifact.id == artifact2.id"
|
356
356
|
]
|
357
357
|
},
|
358
358
|
{
|
@@ -371,7 +371,7 @@
|
|
371
371
|
"metadata": {},
|
372
372
|
"outputs": [],
|
373
373
|
"source": [
|
374
|
-
"
|
374
|
+
"artifact2.save()"
|
375
375
|
]
|
376
376
|
},
|
377
377
|
{
|
@@ -380,7 +380,7 @@
|
|
380
380
|
"id": "721bbe4e",
|
381
381
|
"metadata": {},
|
382
382
|
"source": [
|
383
|
-
"#### Error upon trying to re-ingest an existing
|
383
|
+
"#### Error upon trying to re-ingest an existing artifact"
|
384
384
|
]
|
385
385
|
},
|
386
386
|
{
|
@@ -390,7 +390,7 @@
|
|
390
390
|
"metadata": {},
|
391
391
|
"outputs": [],
|
392
392
|
"source": [
|
393
|
-
"ln.settings.
|
393
|
+
"ln.settings.upon_artifact_create_if_hash_exists = \"error\""
|
394
394
|
]
|
395
395
|
},
|
396
396
|
{
|
@@ -410,7 +410,7 @@
|
|
410
410
|
"outputs": [],
|
411
411
|
"source": [
|
412
412
|
"with pytest.raises(RuntimeError):\n",
|
413
|
-
"
|
413
|
+
" artifact3 = ln.Artifact(filepath, description=\"My new fcs artifact\")"
|
414
414
|
]
|
415
415
|
},
|
416
416
|
{
|
@@ -419,7 +419,7 @@
|
|
419
419
|
"id": "cff06da7",
|
420
420
|
"metadata": {},
|
421
421
|
"source": [
|
422
|
-
"#### Warn and create a new
|
422
|
+
"#### Warn and create a new artifact"
|
423
423
|
]
|
424
424
|
},
|
425
425
|
{
|
@@ -437,7 +437,7 @@
|
|
437
437
|
"metadata": {},
|
438
438
|
"outputs": [],
|
439
439
|
"source": [
|
440
|
-
"ln.settings.
|
440
|
+
"ln.settings.upon_artifact_create_if_hash_exists = \"warn_create_new\""
|
441
441
|
]
|
442
442
|
},
|
443
443
|
{
|
@@ -456,8 +456,8 @@
|
|
456
456
|
"metadata": {},
|
457
457
|
"outputs": [],
|
458
458
|
"source": [
|
459
|
-
"
|
460
|
-
"
|
459
|
+
"artifact4 = ln.Artifact(filepath, description=\"My new fcs artifact\")\n",
|
460
|
+
"artifact4.save()"
|
461
461
|
]
|
462
462
|
},
|
463
463
|
{
|
@@ -476,7 +476,7 @@
|
|
476
476
|
"metadata": {},
|
477
477
|
"outputs": [],
|
478
478
|
"source": [
|
479
|
-
"assert
|
479
|
+
"assert artifact4.id != artifact.id"
|
480
480
|
]
|
481
481
|
},
|
482
482
|
{
|
@@ -486,7 +486,7 @@
|
|
486
486
|
"metadata": {},
|
487
487
|
"outputs": [],
|
488
488
|
"source": [
|
489
|
-
"
|
489
|
+
"artifact4.filter(hash=\"KCEXRahJ-Ui9Y6nksQ8z1A\").df()"
|
490
490
|
]
|
491
491
|
},
|
492
492
|
{
|
@@ -500,7 +500,7 @@
|
|
500
500
|
},
|
501
501
|
"outputs": [],
|
502
502
|
"source": [
|
503
|
-
"assert len(
|
503
|
+
"assert len(artifact.filter(hash=\"KCEXRahJ-Ui9Y6nksQ8z1A\").list()) == 2"
|
504
504
|
]
|
505
505
|
},
|
506
506
|
{
|
@@ -522,11 +522,11 @@
|
|
522
522
|
"name": "python3"
|
523
523
|
},
|
524
524
|
"language_info": {
|
525
|
+
"artifact_extension": ".py",
|
525
526
|
"codemirror_mode": {
|
526
527
|
"name": "ipython",
|
527
528
|
"version": 3
|
528
529
|
},
|
529
|
-
"file_extension": ".py",
|
530
530
|
"mimetype": "text/x-python",
|
531
531
|
"name": "python",
|
532
532
|
"nbconvert_exporter": "python",
|
@@ -70,11 +70,11 @@
|
|
70
70
|
"name": "python3"
|
71
71
|
},
|
72
72
|
"language_info": {
|
73
|
+
"artifact_extension": ".py",
|
73
74
|
"codemirror_mode": {
|
74
75
|
"name": "ipython",
|
75
76
|
"version": 3
|
76
77
|
},
|
77
|
-
"file_extension": ".py",
|
78
78
|
"mimetype": "text/x-python",
|
79
79
|
"name": "python",
|
80
80
|
"nbconvert_exporter": "python",
|