lamindb 0.69.10__tar.gz → 0.70.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.69.10 → lamindb-0.70.1}/PKG-INFO +5 -5
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/changelog.md +21 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/idempotency.ipynb +40 -20
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/track-run-inputs.ipynb +4 -4
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/introduction.ipynb +27 -8
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/meta.ipynb +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/add-replace-stage.ipynb +4 -4
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/track.ipynb +3 -4
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/tutorial.ipynb +3 -3
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/tutorial2.ipynb +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/__init__.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_artifact.py +35 -22
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_can_validate.py +6 -3
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_collection.py +17 -5
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_finish.py +28 -42
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_from_values.py +34 -19
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_registry.py +2 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_save.py +4 -5
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_data.py +18 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_feature_manager.py +8 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_run_context.py +0 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_settings.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/datasets/_core.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/storage/__init__.py +2 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/storage/_backed_access.py +4 -4
- lamindb-0.69.10/lamindb/core/storage/object.py → lamindb-0.70.1/lamindb/core/storage/objects.py +2 -3
- lamindb-0.69.10/lamindb/core/storage/file.py → lamindb-0.70.1/lamindb/core/storage/paths.py +12 -13
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/integrations/_vitessce.py +18 -9
- {lamindb-0.69.10 → lamindb-0.70.1}/pyproject.toml +4 -4
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/bionty/__init__.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/pyproject.toml +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/.gitignore +1 -1
- lamindb-0.70.1/sub/lamin-cli/lamin_cli/__init__.py +3 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/lamin_cli/_get.py +2 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_save_notebooks.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_save_scripts.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/changelog.md +3 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +5 -12
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_exportdb.py +16 -16
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_importdb.py +4 -3
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +33 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +9 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +13 -27
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +2 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +49 -11
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -77
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-local/test_all.py +2 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -5
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +4 -4
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/docs/changelog.md +1 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/__init__.py +1 -1
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/models.py +4 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/CHANGELOG.md +4 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- lamindb-0.70.1/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +38 -0
- lamindb-0.70.1/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +24 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/models.py +30 -17
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +1 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_artifact.py +8 -30
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_cache.py +9 -9
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_collection.py +2 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_load.py +2 -2
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_run_context.py +5 -3
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_storage.py +2 -2
- lamindb-0.69.10/sub/lamin-cli/lamin_cli/__init__.py +0 -3
- {lamindb-0.69.10 → lamindb-0.70.1}/.github/workflows/build.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/.gitignore +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/.gitmodules +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/LICENSE +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/annotate-for-developers.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/annotate.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/bionty-base.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/bionty.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/can-validate.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/data.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/key.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/setup.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/faq.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/features-lamindb.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/features-laminhub.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/guide.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/index.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/installation.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/lamin-utils.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/lamindb.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/nbproject.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/query-search.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/readfcs.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/reference.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/schemas.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/setup.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/signup-login.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/storage.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/transfer.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/docs/wetlab.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_annotate.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_feature.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_feature_set.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_filter.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_parents.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_query_manager.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_query_set.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_run.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_storage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_transform.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_ulabel.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_utils.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/_view.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_label_manager.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_transform_settings.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/_view_tree.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/exceptions.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/fields.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/types.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/core/versioning.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/noxfile.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/.gitignore +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/LICENSE +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/docs/changelog.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/bionty/tests/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/scripts/initialized-no-git-sync.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/scripts/initialized.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_get.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_migrate.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamin-cli/tests/test_save_files.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/01-init-on-prem-instance.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/02-connect-on-prem-instance.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/03-set-storage.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_add_remote_storage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/.gitignore +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/LICENSE +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/docs/index.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/docs/reference.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lamin-project.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/noxfile.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/pyproject.toml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/conftest.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/notebooks/no-title.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_annotate.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_can_validate.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_data.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_db.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_delete.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_feature.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_feature_manager.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_feature_set.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_from_values.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_label_manager.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_manager.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_notebooks.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_parents.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_queryset.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_registry.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_run.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_save.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_settings.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_transfer.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_transform.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_uid.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_ulabel.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_versioning.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_view.py +0 -0
- {lamindb-0.69.10 → lamindb-0.70.1}/tests/test_visibility.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.70.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
|
@@ -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.
|
13
|
-
Requires-Dist: lamindb_setup==0.69.
|
12
|
+
Requires-Dist: lnschema_core==0.65.1
|
13
|
+
Requires-Dist: lamindb_setup==0.69.2
|
14
14
|
Requires-Dist: lamin_utils==0.13.1
|
15
|
-
Requires-Dist: lamin_cli==0.12.
|
15
|
+
Requires-Dist: lamin_cli==0.12.3
|
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.
|
30
|
+
Requires-Dist: bionty==0.42.9 ; 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,14 +1,34 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
:::{note}
|
4
|
+
|
5
|
+
LaminDB implements "migration-based versioning".
|
6
|
+
|
7
|
+
When upgrading your LaminDB installation to a new `minor` version in `major.minor.patch`, you also migrate your database by calling `lamin migrate deploy`.
|
8
|
+
|
9
|
+
:::
|
10
|
+
|
3
11
|
```{eval-rst}
|
4
12
|
.. role:: small
|
5
13
|
```
|
6
14
|
|
15
|
+
## 0.70
|
16
|
+
|
17
|
+
### 0.70.1 {small}`2024-04-18`
|
18
|
+
|
19
|
+
- 🚑️ Fix public_source in inspect [PR](https://github.com/laminlabs/lamindb/pull/1578) [@sunnyosun](https://github.com/sunnyosun)
|
20
|
+
|
21
|
+
### 0.70.0 {small}`2024-04-17`
|
22
|
+
|
23
|
+
- 🚸 Update data source in case transform is re-run [PR](https://github.com/laminlabs/lamindb/pull/1571) [@falexwolf](https://github.com/falexwolf)
|
24
|
+
- 🚸 Enable to label transforms via `transform.ulabels` [PR](https://github.com/laminlabs/lnschema-core/pull/370) [@falexwolf](https://github.com/falexwolf)
|
25
|
+
- 🚚 Deprecate `stage()` in favor of `cache()` [PR](https://github.com/laminlabs/lamindb/pull/1572) [@falexwolf](https://github.com/falexwolf)
|
26
|
+
|
7
27
|
## 0.69
|
8
28
|
|
9
29
|
### 0.69.10 {small}`2024-04-12`
|
10
30
|
|
11
|
-
- ✨ Add `.obsm` and `.layers` to `MappedCollection` [PR](https://github.com/laminlabs/lamindb/pull/1562) [@Koncopd](https://github.com/Koncopd)
|
31
|
+
- ✨ Add `.obsm` and `.layers` to `MappedCollection` and rename `label_keys` to `obs_keys` [PR](https://github.com/laminlabs/lamindb/pull/1562) [@Koncopd](https://github.com/Koncopd)
|
12
32
|
- 🚸 Eliminate kwargs [PR](https://github.com/laminlabs/lamindb/pull/1561) [@sunnyosun](https://github.com/sunnyosun)
|
13
33
|
- ✨ Introduce `Annotate.from_mudata` [PR](https://github.com/laminlabs/lamindb/pull/1554) [@sunnyosun](https://github.com/sunnyosun)
|
14
34
|
|
@@ -31,7 +31,7 @@
|
|
31
31
|
"\n",
|
32
32
|
"If you set {attr}`~lamindb.core.Settings.upon_create_search_names` to `False`, you'll directly populate the DB.\n",
|
33
33
|
"\n",
|
34
|
-
"###
|
34
|
+
"### Data: artifacts & collections\n",
|
35
35
|
"\n",
|
36
36
|
"If you try to create a {class}`~lamindb.Artifact` object from the same content, depending on {attr}`~lamindb.core.Settings.upon_artifact_create_if_hash_exists`, \n",
|
37
37
|
"\n",
|
@@ -69,7 +69,10 @@
|
|
69
69
|
"import lamindb as ln\n",
|
70
70
|
"import pytest\n",
|
71
71
|
"\n",
|
72
|
-
"ln.settings.verbosity = \"hint\""
|
72
|
+
"ln.settings.verbosity = \"hint\"\n",
|
73
|
+
"ln.settings.transform.stem_uid = \"ANW20Fr4eZgM\"\n",
|
74
|
+
"ln.settings.transform.version = \"1\"\n",
|
75
|
+
"ln.track()"
|
73
76
|
]
|
74
77
|
},
|
75
78
|
{
|
@@ -251,7 +254,7 @@
|
|
251
254
|
"id": "01bfec00",
|
252
255
|
"metadata": {},
|
253
256
|
"source": [
|
254
|
-
"###
|
257
|
+
"### Data: artifacts and collections"
|
255
258
|
]
|
256
259
|
},
|
257
260
|
{
|
@@ -289,7 +292,7 @@
|
|
289
292
|
"id": "a2e9114a",
|
290
293
|
"metadata": {},
|
291
294
|
"source": [
|
292
|
-
"Create
|
295
|
+
"Create an `Artifact`:"
|
293
296
|
]
|
294
297
|
},
|
295
298
|
{
|
@@ -323,7 +326,7 @@
|
|
323
326
|
"id": "153caaea",
|
324
327
|
"metadata": {},
|
325
328
|
"source": [
|
326
|
-
"Create
|
329
|
+
"Create an `Artifact` from the same path:"
|
327
330
|
]
|
328
331
|
},
|
329
332
|
{
|
@@ -333,7 +336,7 @@
|
|
333
336
|
"metadata": {},
|
334
337
|
"outputs": [],
|
335
338
|
"source": [
|
336
|
-
"artifact2 = ln.Artifact(filepath)"
|
339
|
+
"artifact2 = ln.Artifact(filepath, description=\"My fcs artifact\")"
|
337
340
|
]
|
338
341
|
},
|
339
342
|
{
|
@@ -352,7 +355,8 @@
|
|
352
355
|
"metadata": {},
|
353
356
|
"outputs": [],
|
354
357
|
"source": [
|
355
|
-
"assert artifact.id == artifact2.id"
|
358
|
+
"assert artifact.id == artifact2.id\n",
|
359
|
+
"assert artifact.run == artifact2.run"
|
356
360
|
]
|
357
361
|
},
|
358
362
|
{
|
@@ -374,6 +378,32 @@
|
|
374
378
|
"artifact2.save()"
|
375
379
|
]
|
376
380
|
},
|
381
|
+
{
|
382
|
+
"cell_type": "markdown",
|
383
|
+
"id": "ae33a6a1",
|
384
|
+
"metadata": {},
|
385
|
+
"source": [
|
386
|
+
"In the hidden cell below, you'll see how this interplays with data lineage."
|
387
|
+
]
|
388
|
+
},
|
389
|
+
{
|
390
|
+
"cell_type": "code",
|
391
|
+
"execution_count": null,
|
392
|
+
"id": "470d155a",
|
393
|
+
"metadata": {
|
394
|
+
"tags": [
|
395
|
+
"hide-cell"
|
396
|
+
]
|
397
|
+
},
|
398
|
+
"outputs": [],
|
399
|
+
"source": [
|
400
|
+
"ln.track(new_run=True)\n",
|
401
|
+
"artifact3 = ln.Artifact(filepath, description=\"My fcs artifact\")\n",
|
402
|
+
"assert artifact3.id == artifact2.id\n",
|
403
|
+
"assert artifact3.run != artifact2.run\n",
|
404
|
+
"assert artifact3.replicating_runs.first() == artifact2.run"
|
405
|
+
]
|
406
|
+
},
|
377
407
|
{
|
378
408
|
"attachments": {},
|
379
409
|
"cell_type": "markdown",
|
@@ -409,7 +439,7 @@
|
|
409
439
|
"metadata": {},
|
410
440
|
"outputs": [],
|
411
441
|
"source": [
|
412
|
-
"with pytest.raises(
|
442
|
+
"with pytest.raises(FileExistsError):\n",
|
413
443
|
" artifact3 = ln.Artifact(filepath, description=\"My new fcs artifact\")"
|
414
444
|
]
|
415
445
|
},
|
@@ -522,26 +552,16 @@
|
|
522
552
|
"name": "python3"
|
523
553
|
},
|
524
554
|
"language_info": {
|
525
|
-
"artifact_extension": ".py",
|
526
555
|
"codemirror_mode": {
|
527
556
|
"name": "ipython",
|
528
557
|
"version": 3
|
529
558
|
},
|
559
|
+
"file_extension": ".py",
|
530
560
|
"mimetype": "text/x-python",
|
531
561
|
"name": "python",
|
532
562
|
"nbconvert_exporter": "python",
|
533
563
|
"pygments_lexer": "ipython3",
|
534
|
-
"version": "3.
|
535
|
-
},
|
536
|
-
"nbproject": {
|
537
|
-
"id": "ANW20Fr4eZgM",
|
538
|
-
"parent": null,
|
539
|
-
"pypackage": null,
|
540
|
-
"time_init": "2022-10-12T22:55:00.562920+00:00",
|
541
|
-
"user_handle": "testuser1",
|
542
|
-
"user_id": "DzTjkKse",
|
543
|
-
"user_name": "Test User1",
|
544
|
-
"version": "0"
|
564
|
+
"version": "3.10.13"
|
545
565
|
},
|
546
566
|
"vscode": {
|
547
567
|
"interpreter": {
|
@@ -115,7 +115,7 @@
|
|
115
115
|
"metadata": {},
|
116
116
|
"outputs": [],
|
117
117
|
"source": [
|
118
|
-
"artifact.
|
118
|
+
"artifact.cache()"
|
119
119
|
]
|
120
120
|
},
|
121
121
|
{
|
@@ -161,7 +161,7 @@
|
|
161
161
|
"cell_type": "markdown",
|
162
162
|
"metadata": {},
|
163
163
|
"source": [
|
164
|
-
"Let us manually track an artifact by passing `is_run_input` to either `.
|
164
|
+
"Let us manually track an artifact by passing `is_run_input` to either `.cache()`, `.load()` or `.backed()`:"
|
165
165
|
]
|
166
166
|
},
|
167
167
|
{
|
@@ -170,7 +170,7 @@
|
|
170
170
|
"metadata": {},
|
171
171
|
"outputs": [],
|
172
172
|
"source": [
|
173
|
-
"artifact.
|
173
|
+
"artifact.cache(is_run_input=True)"
|
174
174
|
]
|
175
175
|
},
|
176
176
|
{
|
@@ -217,7 +217,7 @@
|
|
217
217
|
"cell_type": "markdown",
|
218
218
|
"metadata": {},
|
219
219
|
"source": [
|
220
|
-
"If you switch the following setting, and call to `.load()`, `.
|
220
|
+
"If you switch the following setting, and call to `.load()`, `.cache()` and `.backed()` will track the artifact as run input."
|
221
221
|
]
|
222
222
|
},
|
223
223
|
{
|
@@ -402,7 +402,11 @@
|
|
402
402
|
{
|
403
403
|
"cell_type": "code",
|
404
404
|
"execution_count": null,
|
405
|
-
"metadata": {
|
405
|
+
"metadata": {
|
406
|
+
"tags": [
|
407
|
+
"hide-output"
|
408
|
+
]
|
409
|
+
},
|
406
410
|
"outputs": [],
|
407
411
|
"source": [
|
408
412
|
"# given the updated registries, the validation passes\n",
|
@@ -423,7 +427,11 @@
|
|
423
427
|
{
|
424
428
|
"cell_type": "code",
|
425
429
|
"execution_count": null,
|
426
|
-
"metadata": {
|
430
|
+
"metadata": {
|
431
|
+
"tags": [
|
432
|
+
"hide-output"
|
433
|
+
]
|
434
|
+
},
|
427
435
|
"outputs": [],
|
428
436
|
"source": [
|
429
437
|
"ulabels = ln.ULabel.lookup()\n",
|
@@ -474,7 +482,11 @@
|
|
474
482
|
{
|
475
483
|
"cell_type": "code",
|
476
484
|
"execution_count": null,
|
477
|
-
"metadata": {
|
485
|
+
"metadata": {
|
486
|
+
"tags": [
|
487
|
+
"hide-output"
|
488
|
+
]
|
489
|
+
},
|
478
490
|
"outputs": [],
|
479
491
|
"source": [
|
480
492
|
"cell_types.search(\"gamma delta T cell\").head(2)"
|
@@ -663,13 +675,20 @@
|
|
663
675
|
{
|
664
676
|
"cell_type": "code",
|
665
677
|
"execution_count": null,
|
666
|
-
"metadata": {
|
678
|
+
"metadata": {
|
679
|
+
"tags": [
|
680
|
+
"hide-output"
|
681
|
+
]
|
682
|
+
},
|
667
683
|
"outputs": [],
|
668
684
|
"source": [
|
669
685
|
"# if it's small enough, you can load the entire collection into memory as if it was one\n",
|
670
686
|
"collection.load()\n",
|
671
687
|
"\n",
|
672
688
|
"# typically, it's too big, hence, iterate over its artifacts\n",
|
689
|
+
"collection.artifacts.all()\n",
|
690
|
+
"\n",
|
691
|
+
"# or look at a DataFrame listing the artifacts\n",
|
673
692
|
"collection.artifacts.df()"
|
674
693
|
]
|
675
694
|
},
|
@@ -687,12 +706,12 @@
|
|
687
706
|
"```\n",
|
688
707
|
"# to train models, batch iterate through the collection as if it was one array\n",
|
689
708
|
"from torch.utils.data import DataLoader, WeightedRandomSampler\n",
|
690
|
-
"dataset = collection.mapped(
|
709
|
+
"dataset = collection.mapped(obs_keys=[\"perturbation\"])\n",
|
691
710
|
"sampler = WeightedRandomSampler(\n",
|
692
711
|
" weights=dataset.get_label_weights(\"perturbation\"), num_samples=len(dataset)\n",
|
693
712
|
")\n",
|
694
|
-
"
|
695
|
-
"for batch in
|
713
|
+
"data_loader = DataLoader(dataset, batch_size=2, sampler=sampler)\n",
|
714
|
+
"for batch in data_loader:\n",
|
696
715
|
" pass\n",
|
697
716
|
"```"
|
698
717
|
]
|
@@ -741,7 +760,7 @@
|
|
741
760
|
"\n",
|
742
761
|
":::\n",
|
743
762
|
"\n",
|
744
|
-
"If you want to
|
763
|
+
"If you want to cache a notebook or script, call:\n",
|
745
764
|
"\n",
|
746
765
|
"```bash\n",
|
747
766
|
"lamin get https://lamin.ai/laminlabs/lamindata/transform/FPnfDtJz8qbE5zKv\n",
|
@@ -5,7 +5,7 @@
|
|
5
5
|
"id": "30fd690f",
|
6
6
|
"metadata": {},
|
7
7
|
"source": [
|
8
|
-
"# Add, replace,
|
8
|
+
"# Add, replace, cache and delete artifacts"
|
9
9
|
]
|
10
10
|
},
|
11
11
|
{
|
@@ -37,7 +37,7 @@
|
|
37
37
|
"metadata": {},
|
38
38
|
"outputs": [],
|
39
39
|
"source": [
|
40
|
-
"AUTO_KEY_PREFIX = ln.core.storage.
|
40
|
+
"AUTO_KEY_PREFIX = ln.core.storage.paths.AUTO_KEY_PREFIX\n",
|
41
41
|
"root = ln.settings.storage"
|
42
42
|
]
|
43
43
|
},
|
@@ -88,7 +88,7 @@
|
|
88
88
|
"metadata": {},
|
89
89
|
"outputs": [],
|
90
90
|
"source": [
|
91
|
-
"cache_csv_path = artifact.
|
91
|
+
"cache_csv_path = artifact.cache()"
|
92
92
|
]
|
93
93
|
},
|
94
94
|
{
|
@@ -188,7 +188,7 @@
|
|
188
188
|
"metadata": {},
|
189
189
|
"outputs": [],
|
190
190
|
"source": [
|
191
|
-
"cache_data_path = artifact.
|
191
|
+
"cache_data_path = artifact.cache()"
|
192
192
|
]
|
193
193
|
},
|
194
194
|
{
|
@@ -91,11 +91,10 @@
|
|
91
91
|
"cell_type": "markdown",
|
92
92
|
"metadata": {},
|
93
93
|
"source": [
|
94
|
-
"If you want to save a notebook including its run report & source artifact,
|
94
|
+
"If you want to save a notebook including its run report & source artifact, run:\n",
|
95
95
|
"\n",
|
96
|
-
"```
|
97
|
-
"\n",
|
98
|
-
"lamin save <notebook_artifact>\n",
|
96
|
+
"```python\n",
|
97
|
+
"ln.finish()\n",
|
99
98
|
"```"
|
100
99
|
]
|
101
100
|
},
|
@@ -407,7 +407,7 @@
|
|
407
407
|
"cell_type": "markdown",
|
408
408
|
"metadata": {},
|
409
409
|
"source": [
|
410
|
-
"To
|
410
|
+
"To cache the artifact to a local cache, call {meth}`~lamindb.Artifact.cache`:"
|
411
411
|
]
|
412
412
|
},
|
413
413
|
{
|
@@ -416,7 +416,7 @@
|
|
416
416
|
"metadata": {},
|
417
417
|
"outputs": [],
|
418
418
|
"source": [
|
419
|
-
"artifact.
|
419
|
+
"artifact.cache()"
|
420
420
|
]
|
421
421
|
},
|
422
422
|
{
|
@@ -880,7 +880,7 @@
|
|
880
880
|
"\n",
|
881
881
|
"<img src=\"https://lamin-site-assets.s3.amazonaws.com/.lamindb/RGXj5wcAf7EAc6J8aBoM.png\" width=\"700px\">\n",
|
882
882
|
"\n",
|
883
|
-
"If you want to
|
883
|
+
"If you want to cache a notebook or script, call:\n",
|
884
884
|
"\n",
|
885
885
|
"```\n",
|
886
886
|
"lamin get https://lamin.ai/laminlabs/lamindata/transform/NJvdsWWbJlZSz8\n",
|
@@ -20,7 +20,7 @@
|
|
20
20
|
"cell_type": "markdown",
|
21
21
|
"metadata": {},
|
22
22
|
"source": [
|
23
|
-
"In the previous tutorial ({doc}`/tutorial`), we learned about about how to leverage basic metadata for artifacts to access data (query, search,
|
23
|
+
"In the previous tutorial ({doc}`/tutorial`), we learned about about how to leverage basic metadata for artifacts to access data (query, search, cache & load).\n",
|
24
24
|
"\n",
|
25
25
|
"Here, we walk through annotating & validating data with features & labels to improve:\n",
|
26
26
|
"\n",
|
@@ -37,7 +37,7 @@ from lamindb.core.storage import (
|
|
37
37
|
size_adata,
|
38
38
|
write_to_file,
|
39
39
|
)
|
40
|
-
from lamindb.core.storage.
|
40
|
+
from lamindb.core.storage.paths import (
|
41
41
|
auto_storage_key_from_artifact,
|
42
42
|
auto_storage_key_from_artifact_uid,
|
43
43
|
filepath_from_artifact,
|
@@ -50,8 +50,8 @@ from .core._data import (
|
|
50
50
|
save_feature_set_links,
|
51
51
|
save_feature_sets,
|
52
52
|
)
|
53
|
-
from .core.storage.
|
54
|
-
from .core.storage.
|
53
|
+
from .core.storage.objects import _mudata_is_installed
|
54
|
+
from .core.storage.paths import AUTO_KEY_PREFIX
|
55
55
|
|
56
56
|
if TYPE_CHECKING:
|
57
57
|
from lamindb_setup.core.types import UPathStr
|
@@ -167,7 +167,7 @@ def process_data(
|
|
167
167
|
# Alex: I don't understand the line below
|
168
168
|
if path.suffixes == []:
|
169
169
|
path = path.with_suffix(suffix)
|
170
|
-
if suffix
|
170
|
+
if suffix != ".zarr":
|
171
171
|
write_to_file(data, path)
|
172
172
|
use_existing_storage_key = False
|
173
173
|
else:
|
@@ -188,11 +188,7 @@ def get_stat_or_artifact(
|
|
188
188
|
n_objects = None
|
189
189
|
if settings.upon_file_create_skip_size_hash:
|
190
190
|
return None, None, None, n_objects
|
191
|
-
if (
|
192
|
-
suffix in {".zarr", ".zrad"}
|
193
|
-
and memory_rep is not None
|
194
|
-
and isinstance(memory_rep, AnnData)
|
195
|
-
):
|
191
|
+
if suffix == ".zarr" and memory_rep is not None and isinstance(memory_rep, AnnData):
|
196
192
|
size = size_adata(memory_rep)
|
197
193
|
return size, None, None, n_objects
|
198
194
|
stat = path.stat() # one network request
|
@@ -238,7 +234,7 @@ def get_stat_or_artifact(
|
|
238
234
|
"💡 you can make this error a warning:\n"
|
239
235
|
" ln.settings.upon_artifact_create_if_hash_exists"
|
240
236
|
)
|
241
|
-
raise
|
237
|
+
raise FileExistsError(f"{msg}\n{hint}")
|
242
238
|
elif settings.upon_artifact_create_if_hash_exists == "warn_create_new":
|
243
239
|
logger.warning(
|
244
240
|
"creating new Artifact object despite existing artifact with same hash:"
|
@@ -246,10 +242,12 @@ def get_stat_or_artifact(
|
|
246
242
|
)
|
247
243
|
return size, hash, hash_type, n_objects
|
248
244
|
else:
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
245
|
+
if result[0].visibility == -1:
|
246
|
+
raise FileExistsError(
|
247
|
+
f"You're trying to re-create this artifact in trash: {result[0]}"
|
248
|
+
"Either permanently delete it with `artifact.delete(permanent=True)` or restore it with `artifact.restore()`"
|
249
|
+
)
|
250
|
+
logger.warning(f"returning existing artifact with same hash: {result[0]}")
|
253
251
|
return result[0]
|
254
252
|
else:
|
255
253
|
return size, hash, hash_type, n_objects
|
@@ -331,6 +329,15 @@ def get_artifact_kwargs_from_data(
|
|
331
329
|
using_key=using_key,
|
332
330
|
)
|
333
331
|
if isinstance(stat_or_artifact, Artifact):
|
332
|
+
# update the run of the existing artifact
|
333
|
+
if run is not None:
|
334
|
+
# save the information that this artifact was previously
|
335
|
+
# produced by another run
|
336
|
+
if stat_or_artifact.run is not None:
|
337
|
+
stat_or_artifact.run.replicated_output_artifacts.add(stat_or_artifact)
|
338
|
+
# update the run of the artifact with the latest run
|
339
|
+
stat_or_artifact.run = run
|
340
|
+
stat_or_artifact.transform = run.transform
|
334
341
|
return stat_or_artifact, None
|
335
342
|
else:
|
336
343
|
size, hash, hash_type, n_objects = stat_or_artifact
|
@@ -439,7 +446,12 @@ def data_is_anndata(data: AnnData | UPathStr):
|
|
439
446
|
if isinstance(data, AnnData):
|
440
447
|
return True
|
441
448
|
if isinstance(data, (str, Path, UPath)):
|
442
|
-
|
449
|
+
if Path(data).suffix == ".h5ad":
|
450
|
+
return True
|
451
|
+
elif Path(data).suffix == ".zarr":
|
452
|
+
raise NotImplementedError(
|
453
|
+
"auto-detecting AnnData from Zarr is not yet supported"
|
454
|
+
)
|
443
455
|
return False
|
444
456
|
|
445
457
|
|
@@ -821,7 +833,7 @@ def replace(
|
|
821
833
|
|
822
834
|
# docstring handled through attach_func_to_class_method
|
823
835
|
def backed(self, is_run_input: bool | None = None) -> AnnDataAccessor | BackedAccessor:
|
824
|
-
suffixes = (".h5", ".hdf5", ".h5ad", ".
|
836
|
+
suffixes = (".h5", ".hdf5", ".h5ad", ".zarr")
|
825
837
|
if self.suffix not in suffixes:
|
826
838
|
raise ValueError(
|
827
839
|
"Artifact should have a zarr or h5 object as the underlying data, please"
|
@@ -854,7 +866,7 @@ def load(self, is_run_input: bool | None = None, stream: bool = False, **kwargs)
|
|
854
866
|
|
855
867
|
|
856
868
|
# docstring handled through attach_func_to_class_method
|
857
|
-
def
|
869
|
+
def cache(self, is_run_input: bool | None = None) -> Path:
|
858
870
|
_track_run_input(self, is_run_input)
|
859
871
|
|
860
872
|
using_key = settings._using_key
|
@@ -932,10 +944,10 @@ def _delete_skip_storage(artifact, *args, **kwargs) -> None:
|
|
932
944
|
|
933
945
|
|
934
946
|
# docstring handled through attach_func_to_class_method
|
935
|
-
def save(self,
|
947
|
+
def save(self, upload: bool | None = None, **kwargs) -> None:
|
936
948
|
access_token = kwargs.pop("access_token", None)
|
937
949
|
|
938
|
-
self._save_skip_storage(
|
950
|
+
self._save_skip_storage(**kwargs)
|
939
951
|
|
940
952
|
from lamindb._save import check_and_attempt_clearing, check_and_attempt_upload
|
941
953
|
|
@@ -951,9 +963,9 @@ def save(self, *args, **kwargs) -> None:
|
|
951
963
|
raise RuntimeError(exception)
|
952
964
|
|
953
965
|
|
954
|
-
def _save_skip_storage(file,
|
966
|
+
def _save_skip_storage(file, **kwargs) -> None:
|
955
967
|
save_feature_sets(file)
|
956
|
-
super(Artifact, file).save(
|
968
|
+
super(Artifact, file).save(**kwargs)
|
957
969
|
save_feature_set_links(file)
|
958
970
|
|
959
971
|
|
@@ -998,7 +1010,7 @@ METHOD_NAMES = [
|
|
998
1010
|
"from_df",
|
999
1011
|
"from_mudata",
|
1000
1012
|
"backed",
|
1001
|
-
"
|
1013
|
+
"cache",
|
1002
1014
|
"load",
|
1003
1015
|
"delete",
|
1004
1016
|
"save",
|
@@ -1024,5 +1036,6 @@ for name in METHOD_NAMES:
|
|
1024
1036
|
Artifact._delete_skip_storage = _delete_skip_storage
|
1025
1037
|
Artifact._save_skip_storage = _save_skip_storage
|
1026
1038
|
Artifact.path = path
|
1039
|
+
Artifact.stage = cache
|
1027
1040
|
# this seems a Django-generated function
|
1028
1041
|
delattr(Artifact, "get_visibility_display")
|
@@ -30,6 +30,7 @@ def inspect(
|
|
30
30
|
*,
|
31
31
|
mute: bool = False,
|
32
32
|
organism: str | Registry | None = None,
|
33
|
+
public_source: Registry | None = None,
|
33
34
|
) -> InspectResult:
|
34
35
|
"""{}."""
|
35
36
|
return _inspect(
|
@@ -38,6 +39,7 @@ def inspect(
|
|
38
39
|
field=field,
|
39
40
|
mute=mute,
|
40
41
|
organism=organism,
|
42
|
+
public_source=public_source,
|
41
43
|
)
|
42
44
|
|
43
45
|
|
@@ -63,6 +65,7 @@ def _inspect(
|
|
63
65
|
mute: bool = False,
|
64
66
|
using_key: str | None = None,
|
65
67
|
organism: str | Registry | None = None,
|
68
|
+
public_source: Registry | None = None,
|
66
69
|
) -> pd.DataFrame | dict[str, list[str]]:
|
67
70
|
"""{}."""
|
68
71
|
from lamin_utils._inspect import inspect
|
@@ -86,9 +89,9 @@ def _inspect(
|
|
86
89
|
|
87
90
|
if len(nonval) > 0 and orm.__get_schema_name__() == "bionty":
|
88
91
|
try:
|
89
|
-
bionty_result = orm.public(
|
90
|
-
|
91
|
-
)
|
92
|
+
bionty_result = orm.public(
|
93
|
+
organism=organism, public_source=public_source
|
94
|
+
).inspect(values=nonval, field=field, mute=True)
|
92
95
|
bionty_validated = bionty_result.validated
|
93
96
|
bionty_mapper = bionty_result.synonyms_mapper
|
94
97
|
hint = False
|
@@ -116,6 +116,17 @@ def __init__(
|
|
116
116
|
logger.warning(
|
117
117
|
f"returning existing collection with same hash: {existing_collection}"
|
118
118
|
)
|
119
|
+
# update the run of the existing artifact
|
120
|
+
if run is not None:
|
121
|
+
# save the information that this artifact was previously
|
122
|
+
# produced by another run
|
123
|
+
if existing_collection.run is not None:
|
124
|
+
existing_collection.run.replicated_output_collections.add(
|
125
|
+
existing_collection
|
126
|
+
)
|
127
|
+
# update the run of the artifact with the latest run
|
128
|
+
existing_collection.run = run
|
129
|
+
existing_collection.transform = run.transform
|
119
130
|
init_self_from_db(collection, existing_collection)
|
120
131
|
for slot, feature_set in collection.features._feature_set_by_slot.items():
|
121
132
|
if slot in feature_sets:
|
@@ -223,11 +234,11 @@ def mapped(
|
|
223
234
|
) -> MappedCollection:
|
224
235
|
path_list = []
|
225
236
|
for artifact in self.artifacts.all():
|
226
|
-
if artifact.suffix not in {".h5ad", ".
|
237
|
+
if artifact.suffix not in {".h5ad", ".zarr"}:
|
227
238
|
logger.warning(f"Ignoring artifact with suffix {artifact.suffix}")
|
228
239
|
continue
|
229
240
|
elif not stream:
|
230
|
-
path_list.append(artifact.
|
241
|
+
path_list.append(artifact.cache())
|
231
242
|
else:
|
232
243
|
path_list.append(artifact.path)
|
233
244
|
ds = MappedCollection(
|
@@ -248,11 +259,11 @@ def mapped(
|
|
248
259
|
|
249
260
|
|
250
261
|
# docstring handled through attach_func_to_class_method
|
251
|
-
def
|
262
|
+
def cache(self, is_run_input: bool | None = None) -> list[UPath]:
|
252
263
|
_track_run_input(self, is_run_input)
|
253
264
|
path_list = []
|
254
265
|
for artifact in self.artifacts.all():
|
255
|
-
path_list.append(artifact.
|
266
|
+
path_list.append(artifact.cache())
|
256
267
|
return path_list
|
257
268
|
|
258
269
|
|
@@ -355,7 +366,7 @@ def artifacts(self) -> QuerySet:
|
|
355
366
|
METHOD_NAMES = [
|
356
367
|
"__init__",
|
357
368
|
"mapped",
|
358
|
-
"
|
369
|
+
"cache",
|
359
370
|
"load",
|
360
371
|
"delete",
|
361
372
|
"save",
|
@@ -377,3 +388,4 @@ for name in METHOD_NAMES:
|
|
377
388
|
# this seems a Django-generated function
|
378
389
|
delattr(Collection, "get_visibility_display")
|
379
390
|
Collection.artifacts = artifacts
|
391
|
+
Collection.stage = cache
|