lamindb 0.70.3__tar.gz → 0.70.4__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.70.3 → lamindb-0.70.4}/PKG-INFO +4 -4
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/changelog.md +7 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/introduction.ipynb +0 -15
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/vitessce.ipynb +10 -5
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/tutorial.ipynb +10 -5
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/__init__.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_annotate.py +38 -14
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_artifact.py +32 -15
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_query_set.py +4 -2
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_save.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_data.py +6 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/integrations/_vitessce.py +6 -6
- {lamindb-0.70.3 → lamindb-0.70.4}/noxfile.py +4 -2
- {lamindb-0.70.3 → lamindb-0.70.4}/pyproject.toml +3 -3
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/scripts/initialized.py +2 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_get.py +2 -2
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/changelog.md +4 -0
- lamindb-0.70.4/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +114 -0
- lamindb-0.70.3/sub/lamindb-setup/docs/hub-cloud/02-connect-on-prem-instance.ipynb → lamindb-0.70.4/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +6 -13
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/03-set-storage.ipynb +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +1 -1
- lamindb-0.70.4/sub/lamindb-setup/docs/hub-cloud/07-connect-hybrid-instance.ipynb +86 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/notebooks.md +3 -2
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +19 -10
- lamindb-0.70.4/sub/lamindb-setup/lamindb_setup/_delete.py +144 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_init_instance.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_migrate.py +4 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_register_instance.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_setup_user.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +27 -16
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +66 -13
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +26 -58
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/django.py +3 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/upath.py +25 -9
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +13 -31
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +12 -36
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-local/test_all.py +11 -11
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -3
- lamindb-0.70.4/tests/conftest.py +81 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_artifact.py +37 -105
- lamindb-0.70.4/tests/test_artifact_folders.py +74 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_run_context.py +11 -2
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_settings.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_versioning.py +6 -0
- lamindb-0.70.3/sub/lamindb-setup/docs/hub-cloud/01-init-on-prem-instance.ipynb +0 -366
- lamindb-0.70.3/sub/lamindb-setup/lamindb_setup/_delete.py +0 -78
- lamindb-0.70.3/tests/conftest.py +0 -29
- {lamindb-0.70.3 → lamindb-0.70.4}/.github/workflows/build.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/.gitmodules +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/LICENSE +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/annotate-for-developers.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/annotate.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/bionty-base.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/bionty.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/can-validate.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/data.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/key.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/setup.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/faq.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/features-lamindb.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/features-laminhub.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/guide.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/index.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/installation.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/lamin-utils.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/lamindb.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/meta.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/nbproject.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/query-search.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/readfcs.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/reference.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/schemas.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/setup.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/signup-login.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/add-replace-stage.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/storage.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/track.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/transfer.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/tutorial2.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/docs/wetlab.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_can_validate.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_collection.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_feature.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_feature_set.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_filter.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_finish.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_from_values.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_parents.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_query_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_registry.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_run.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_transform.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_ulabel.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_utils.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/_view.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_feature_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_label_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_run_context.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_settings.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_transform_settings.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/_view_tree.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/datasets/_core.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/exceptions.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/fields.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/objects.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/storage/paths.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/types.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/core/versioning.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/LICENSE +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/bionty/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/docs/changelog.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/pyproject.toml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/bionty/tests/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/_get.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/conftest.py +1 -1
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/scripts/initialized-no-git-sync.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_migrate.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_save_files.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_add_remote_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/LICENSE +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/docs/changelog.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/docs/index.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/docs/reference.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lamin-project.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0001_initial_squashed_0016.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0002_rename_gene_type_gene_biotype_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0003_alter_biontysource_entity_alter_biontysource_source_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0004_alter_cellline_bionty_source_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0005_rename_short_name_cellline_abbr_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0006_alter_biontysource_options_alter_cellline_options_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0007_rename_readout_experimental_factor.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0008_remove_gene_hgnc_id_remove_gene_mgi_id_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0009_alter_gene_ensembl_gene_id.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0010_alter_species_name.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0011_cellline_datasets_cellmarker_datasets_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0012_gene_stable_id.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0013_alter_cellmarker_species_alter_gene_species_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0014_ethnicity_developmentalstage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0015_migrate_to_integer_pks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0016_export_legacy_data.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0017_import_legacy_data.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0018_organism_rename_species_biontysource_organism_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0019_rename_taxon_id_organism_ontology_id_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0020_alter_organism_bionty_source.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0021_rename_files_cellline_artifacts_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0022_rename_datasets_cellline_collections_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/lnschema_bionty/models.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/noxfile.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/pyproject.toml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/CHANGELOG.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0001_initial.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0001_initial_squashed_0023.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0002_alter_user_name.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0003_alter_storage_region_alter_transform_short_name.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0004_rename_folder_tag_alter_project_folders.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0005_alter_run_inputs_delete_runinput.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0006_feature_dataset.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0007_feature_synonyms_featureset_field_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0008_file_hash_type_transform_parents.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0009_remove_featureset_files_feature_unit_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0010_dataset_categories_file_categories.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0011_label_remove_tag_created_by_remove_tag_parents_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0012_remove_label_ref_id_remove_label_ref_orm_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0013_remove_feature_labels_orm_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0014_rename_ref_field_featureset_registry.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0015_file_initial_version_file_version.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0016_dataset_input_of_dataset_run_dataset_transform_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0017_dataset_initial_version_dataset_version.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0018_rename_datasetlabel_datasetulabel_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0019_dataset_reference_dataset_reference_type_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0020_run_report_transform_latest_report_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0021_dataset_storage_alter_dataset_file.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0022_migrate_to_integer_pks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0023_export_legacy_data.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0024_import_legacy_data.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0025_remove_user_email.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0026_dataset_visibility_file_visibility.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0027_file_key_is_virtual.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0028_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0029_remove_feature_modality_remove_featureset_modality_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0030_alter_dataset_visibility_alter_file_visibility.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0031_rename_file_to_artifact.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0032_remove_dataset_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0033_alter_artifact_unique_together_artifact_n_objects_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0034_run_environment.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0035_remove_artifact_initial_version_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0036_storage_description.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/models.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/notebooks/no-title.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_annotate.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_cache.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_can_validate.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_collection.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_data.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_db.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_delete.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_feature.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_feature_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_feature_set.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_from_values.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_label_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_load.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_manager.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_notebooks.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_parents.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_queryset.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_registry.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_run.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_save.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_storage.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_transfer.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_transform.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_uid.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_ulabel.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_view.py +0 -0
- {lamindb-0.70.3 → lamindb-0.70.4}/tests/test_visibility.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.70.
|
3
|
+
Version: 0.70.4
|
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,8 +9,8 @@ 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.65.
|
13
|
-
Requires-Dist: lamindb_setup==0.
|
12
|
+
Requires-Dist: lnschema_core==0.65.2
|
13
|
+
Requires-Dist: lamindb_setup==0.70.0
|
14
14
|
Requires-Dist: lamin_utils==0.13.2
|
15
15
|
Requires-Dist: lamin_cli==0.12.3
|
16
16
|
Requires-Dist: rapidfuzz
|
@@ -38,7 +38,7 @@ Requires-Dist: pytest-cov ; extra == "dev"
|
|
38
38
|
Requires-Dist: nbproject_test>=0.5.1 ; extra == "dev"
|
39
39
|
Requires-Dist: faker-biology ; extra == "dev"
|
40
40
|
Requires-Dist: django-schema-graph ; extra == "erdiagram"
|
41
|
-
Requires-Dist: readfcs>=1.1.
|
41
|
+
Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
|
42
42
|
Requires-Dist: fsspec[gs]==2023.12.2 ; extra == "gcp"
|
43
43
|
Requires-Dist: nbproject==0.10.0 ; extra == "jupyter"
|
44
44
|
Requires-Dist: nbstripout==0.6.1 ; extra == "jupyter"
|
@@ -14,6 +14,13 @@ When upgrading your LaminDB installation to a new `minor` version in `major.mino
|
|
14
14
|
|
15
15
|
## 0.70
|
16
16
|
|
17
|
+
### 0.70.4 {small}`2024-04-24`
|
18
|
+
|
19
|
+
- ✨ Allow passing path to `.from_anndata` [PR](https://github.com/laminlabs/lamindb/pull/1600) [@sunnyosun](https://github.com/sunnyosun)
|
20
|
+
- 🚸 In `.setup.delete()`, check for data deletion & delete from hub [PR](https://github.com/laminlabs/lamindb/pull/1595) [@falexwolf](https://github.com/falexwolf)
|
21
|
+
- ⚡️ Speed up `latest_version` [PR](https://github.com/laminlabs/lamindb/pull/1594) [@falexwolf](https://github.com/falexwolf)
|
22
|
+
- 🚸 Better user feedback on folder-like artifacts [PR](https://github.com/laminlabs/lamindb/pull/1589) [@falexwolf](https://github.com/falexwolf)
|
23
|
+
|
17
24
|
### 0.70.3 {small}`2024-04-22`
|
18
25
|
|
19
26
|
- 🚸 Update metadata like description upon re-running [PR](https://github.com/laminlabs/lamindb/pull/1588) [@falexwolf](https://github.com/falexwolf)
|
@@ -898,21 +898,6 @@
|
|
898
898
|
"\n",
|
899
899
|
"LaminDB was influenced by many other projects, see {doc}`docs:influences`."
|
900
900
|
]
|
901
|
-
},
|
902
|
-
{
|
903
|
-
"cell_type": "code",
|
904
|
-
"execution_count": null,
|
905
|
-
"metadata": {
|
906
|
-
"tags": [
|
907
|
-
"hide-cell"
|
908
|
-
]
|
909
|
-
},
|
910
|
-
"outputs": [],
|
911
|
-
"source": [
|
912
|
-
"# clean up test instance\n",
|
913
|
-
"!lamin delete --force lamin-intro\n",
|
914
|
-
"!rm -r lamin-intro"
|
915
|
-
]
|
916
901
|
}
|
917
902
|
],
|
918
903
|
"metadata": {
|
@@ -20,11 +20,16 @@
|
|
20
20
|
"metadata": {},
|
21
21
|
"outputs": [],
|
22
22
|
"source": [
|
23
|
-
"
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
"!lamin init --storage \"s3://lamindb-ci/test-vitessce\""
|
24
|
+
]
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"cell_type": "code",
|
28
|
+
"execution_count": null,
|
29
|
+
"metadata": {},
|
30
|
+
"outputs": [],
|
31
|
+
"source": [
|
32
|
+
"import lamindb as ln"
|
28
33
|
]
|
29
34
|
},
|
30
35
|
{
|
@@ -54,6 +54,15 @@
|
|
54
54
|
"You can now init a LaminDB instance with a directory `./lamin-tutorial` for storing data:"
|
55
55
|
]
|
56
56
|
},
|
57
|
+
{
|
58
|
+
"cell_type": "code",
|
59
|
+
"execution_count": null,
|
60
|
+
"metadata": {},
|
61
|
+
"outputs": [],
|
62
|
+
"source": [
|
63
|
+
"!lamin init --storage ./lamin-tutorial # or \"s3://my-bucket\" or \"gs://my-bucket\""
|
64
|
+
]
|
65
|
+
},
|
57
66
|
{
|
58
67
|
"cell_type": "code",
|
59
68
|
"execution_count": null,
|
@@ -62,10 +71,6 @@
|
|
62
71
|
"source": [
|
63
72
|
"import lamindb as ln\n",
|
64
73
|
"\n",
|
65
|
-
"ln.setup.init(storage=\"./lamin-tutorial\") # or \"s3://my-bucket\" or \"gs://my-bucket\"\n",
|
66
|
-
"\n",
|
67
|
-
"# if new to LaminDB, set verbosity to hint level\n",
|
68
|
-
"\n",
|
69
74
|
"ln.settings.verbosity = \"hint\""
|
70
75
|
]
|
71
76
|
},
|
@@ -581,7 +586,7 @@
|
|
581
586
|
"ln.Artifact.filter(\n",
|
582
587
|
" created_by=users.anonymous,\n",
|
583
588
|
" transform=transform,\n",
|
584
|
-
" suffix=\".
|
589
|
+
" suffix=\".csv\",\n",
|
585
590
|
").df().head()"
|
586
591
|
]
|
587
592
|
},
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from typing import TYPE_CHECKING, Iterable
|
3
|
+
from typing import TYPE_CHECKING, Iterable
|
4
4
|
|
5
5
|
import anndata as ad
|
6
6
|
import lamindb_setup as ln_setup
|
@@ -10,6 +10,7 @@ from lamindb_setup.core._docs import doc_args
|
|
10
10
|
from lnschema_core import Artifact, Collection, Feature, Registry, Run, ULabel
|
11
11
|
|
12
12
|
if TYPE_CHECKING:
|
13
|
+
from lamindb_setup.core.types import UPathStr
|
13
14
|
from lnschema_core.types import FieldAttr
|
14
15
|
from mudata import MuData
|
15
16
|
|
@@ -244,7 +245,7 @@ class DataFrameAnnotator:
|
|
244
245
|
)
|
245
246
|
return self._validated
|
246
247
|
|
247
|
-
def save_artifact(self, description: str, **kwargs) -> Artifact:
|
248
|
+
def save_artifact(self, description: str | None = None, **kwargs) -> Artifact:
|
248
249
|
"""Save the validated DataFrame and metadata.
|
249
250
|
|
250
251
|
Args:
|
@@ -327,10 +328,10 @@ class DataFrameAnnotator:
|
|
327
328
|
|
328
329
|
|
329
330
|
class AnnDataAnnotator(DataFrameAnnotator):
|
330
|
-
"""Annotation flow for
|
331
|
+
"""Annotation flow for ``AnnData``.
|
331
332
|
|
332
333
|
Args:
|
333
|
-
|
334
|
+
data: The AnnData object or an AnnData-like path.
|
334
335
|
var_index: The registry field for mapping the ``.var`` index.
|
335
336
|
categoricals: A dictionary mapping ``.obs.columns`` to a registry field.
|
336
337
|
using: A reference LaminDB instance.
|
@@ -349,14 +350,29 @@ class AnnDataAnnotator(DataFrameAnnotator):
|
|
349
350
|
|
350
351
|
def __init__(
|
351
352
|
self,
|
352
|
-
|
353
|
+
data: ad.AnnData | UPathStr,
|
353
354
|
var_index: FieldAttr,
|
354
355
|
categoricals: dict[str, FieldAttr] | None = None,
|
355
356
|
using: str = "default",
|
356
357
|
verbosity: str = "hint",
|
357
358
|
organism: str | None = None,
|
358
359
|
) -> None:
|
359
|
-
|
360
|
+
from lamindb_setup.core import upath
|
361
|
+
|
362
|
+
from ._artifact import data_is_anndata
|
363
|
+
|
364
|
+
if not data_is_anndata(data):
|
365
|
+
raise ValueError(
|
366
|
+
"data has to be an AnnData object or a path to AnnData-like"
|
367
|
+
)
|
368
|
+
if isinstance(data, ad.AnnData):
|
369
|
+
self._adata = data
|
370
|
+
else:
|
371
|
+
from lamindb.core.storage._backed_access import backed_access
|
372
|
+
|
373
|
+
self._adata = backed_access(upath.create_path(data))
|
374
|
+
|
375
|
+
self._data = data
|
360
376
|
self._var_field = var_index
|
361
377
|
super().__init__(
|
362
378
|
df=self._adata.obs,
|
@@ -443,7 +459,7 @@ class AnnDataAnnotator(DataFrameAnnotator):
|
|
443
459
|
self._validated = validated_var and validated_obs
|
444
460
|
return self._validated
|
445
461
|
|
446
|
-
def save_artifact(self, description: str, **kwargs) -> Artifact:
|
462
|
+
def save_artifact(self, description: str | None = None, **kwargs) -> Artifact:
|
447
463
|
"""Save the validated ``AnnData`` and metadata.
|
448
464
|
|
449
465
|
Args:
|
@@ -457,7 +473,8 @@ class AnnDataAnnotator(DataFrameAnnotator):
|
|
457
473
|
raise ValidationError("Please run `validate()` first!")
|
458
474
|
|
459
475
|
self._artifact = save_artifact(
|
460
|
-
self.
|
476
|
+
self._data,
|
477
|
+
adata=self._adata,
|
461
478
|
description=description,
|
462
479
|
columns_field=self.var_index,
|
463
480
|
fields=self.categoricals,
|
@@ -697,7 +714,7 @@ class MuDataAnnotator:
|
|
697
714
|
self._validated = validated_var and validated_obs
|
698
715
|
return self._validated
|
699
716
|
|
700
|
-
def save_artifact(self, description: str, **kwargs) -> Artifact:
|
717
|
+
def save_artifact(self, description: str | None = None, **kwargs) -> Artifact:
|
701
718
|
"""Save the validated ``MuData`` and metadata.
|
702
719
|
|
703
720
|
Args:
|
@@ -749,7 +766,7 @@ class Annotate:
|
|
749
766
|
@doc_args(AnnDataAnnotator.__doc__)
|
750
767
|
def from_anndata(
|
751
768
|
cls,
|
752
|
-
|
769
|
+
data: ad.AnnData | UPathStr,
|
753
770
|
var_index: FieldAttr,
|
754
771
|
categoricals: dict[str, FieldAttr] | None = None,
|
755
772
|
using: str = "default",
|
@@ -758,7 +775,7 @@ class Annotate:
|
|
758
775
|
) -> AnnDataAnnotator:
|
759
776
|
"""{}."""
|
760
777
|
return AnnDataAnnotator(
|
761
|
-
|
778
|
+
data=data,
|
762
779
|
var_index=var_index,
|
763
780
|
categoricals=categoricals,
|
764
781
|
using=using,
|
@@ -920,10 +937,11 @@ def validate_categories_in_df(
|
|
920
937
|
|
921
938
|
def save_artifact(
|
922
939
|
data: pd.DataFrame | ad.AnnData | MuData,
|
923
|
-
description: str,
|
924
940
|
fields: dict[str, FieldAttr] | dict[str, dict[str, FieldAttr]],
|
925
941
|
columns_field: FieldAttr | dict[str, FieldAttr],
|
942
|
+
description: str | None = None,
|
926
943
|
organism: str | None = None,
|
944
|
+
adata: ad.AnnData | None = None,
|
927
945
|
**kwargs,
|
928
946
|
) -> Artifact:
|
929
947
|
"""Save all metadata with an Artifact.
|
@@ -934,15 +952,21 @@ def save_artifact(
|
|
934
952
|
fields: A dictionary mapping obs_column to registry_field.
|
935
953
|
columns_field: The registry field to validate variables index against.
|
936
954
|
organism: The organism name.
|
955
|
+
adata: The AnnData object to save, must be provided if data is a path.
|
937
956
|
kwargs: Additional keyword arguments to pass to the registry model.
|
938
957
|
|
939
958
|
Returns:
|
940
959
|
The saved Artifact.
|
941
960
|
"""
|
961
|
+
from ._artifact import data_is_anndata
|
962
|
+
|
942
963
|
artifact = None
|
943
|
-
if
|
964
|
+
if data_is_anndata(data):
|
965
|
+
assert adata is not None
|
944
966
|
artifact = Artifact.from_anndata(data, description=description, **kwargs)
|
945
|
-
artifact.n_observations =
|
967
|
+
artifact.n_observations = adata.shape[0]
|
968
|
+
data = adata
|
969
|
+
|
946
970
|
elif isinstance(data, pd.DataFrame):
|
947
971
|
artifact = Artifact.from_df(data, description=description, **kwargs)
|
948
972
|
else:
|
@@ -463,7 +463,7 @@ def data_is_anndata(data: AnnData | UPathStr):
|
|
463
463
|
if ".anndata" in data_path.suffixes:
|
464
464
|
return True
|
465
465
|
# check only for local, expensive for cloud
|
466
|
-
if fsspec.utils.get_protocol(data_path) == "file":
|
466
|
+
if fsspec.utils.get_protocol(data_path.as_posix()) == "file":
|
467
467
|
return zarr_is_adata(data_path)
|
468
468
|
else:
|
469
469
|
logger.warning("We do not check if cloud zarr is AnnData or not.")
|
@@ -597,6 +597,18 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
597
597
|
else:
|
598
598
|
kwargs = kwargs_or_artifact
|
599
599
|
|
600
|
+
# in case we have a new version of a folder with a different hash, print a
|
601
|
+
# warning that the old version can't be recovered
|
602
|
+
if (
|
603
|
+
is_new_version_of is not None
|
604
|
+
and is_new_version_of.n_objects is not None
|
605
|
+
and is_new_version_of.n_objects > 1
|
606
|
+
):
|
607
|
+
logger.warning(
|
608
|
+
f"artifact version {version} will _update_ the state of folder {is_new_version_of.path} - "
|
609
|
+
"to _retain_ the old state by duplicating the entire folder, do _not_ pass `is_new_version_of`"
|
610
|
+
)
|
611
|
+
|
600
612
|
kwargs["uid"] = provisional_uid
|
601
613
|
kwargs["version"] = version
|
602
614
|
kwargs["description"] = description
|
@@ -652,7 +664,7 @@ def from_df(
|
|
652
664
|
@doc_args(Artifact.from_anndata.__doc__)
|
653
665
|
def from_anndata(
|
654
666
|
cls,
|
655
|
-
adata: AnnData,
|
667
|
+
adata: AnnData | UPathStr,
|
656
668
|
key: str | None = None,
|
657
669
|
description: str | None = None,
|
658
670
|
run: Run | None = None,
|
@@ -661,6 +673,8 @@ def from_anndata(
|
|
661
673
|
**kwargs,
|
662
674
|
) -> Artifact:
|
663
675
|
"""{}."""
|
676
|
+
if not data_is_anndata(adata):
|
677
|
+
raise ValueError("data has to be an AnnData object or a path to AnnData-like")
|
664
678
|
artifact = Artifact(
|
665
679
|
data=adata,
|
666
680
|
key=key,
|
@@ -916,7 +930,7 @@ def delete(
|
|
916
930
|
) -> None:
|
917
931
|
# by default, we only move artifacts into the trash (visibility = -1)
|
918
932
|
trash_visibility = VisibilityChoice.trash.value
|
919
|
-
if self.visibility > trash_visibility and
|
933
|
+
if self.visibility > trash_visibility and not permanent:
|
920
934
|
if storage is not None:
|
921
935
|
logger.warning("moving artifact to trash, storage arg is ignored")
|
922
936
|
# move to trash
|
@@ -935,41 +949,44 @@ def delete(
|
|
935
949
|
)
|
936
950
|
delete_record = response == "y"
|
937
951
|
else:
|
938
|
-
|
939
|
-
delete_record =
|
952
|
+
assert permanent
|
953
|
+
delete_record = True
|
940
954
|
|
941
|
-
if delete_record
|
955
|
+
if delete_record:
|
942
956
|
# need to grab file path before deletion
|
943
957
|
try:
|
944
|
-
|
958
|
+
path = filepath_from_artifact(self, using_key)
|
945
959
|
except OSError:
|
946
960
|
# we can still delete the record
|
961
|
+
logger.warning("Could not get path")
|
947
962
|
storage = False
|
948
963
|
# only delete in storage if DB delete is successful
|
949
964
|
# DB delete might error because of a foreign key constraint violated etc.
|
950
965
|
self._delete_skip_storage()
|
951
966
|
if self.key is None or self.key_is_virtual:
|
952
|
-
#
|
953
|
-
delete_in_storage =
|
954
|
-
if storage is not None:
|
955
|
-
logger.warning("storage arg is ignored if storage key is non-semantic")
|
967
|
+
# do not ask for confirmation also if storage is None
|
968
|
+
delete_in_storage = storage is None or storage
|
956
969
|
else:
|
957
970
|
# for artifacts with non-virtual semantic storage keys (key is not None)
|
958
971
|
# ask for extra-confirmation
|
959
972
|
if storage is None:
|
960
973
|
response = input(
|
961
|
-
f"Are you sure to want to delete {
|
974
|
+
f"Are you sure to want to delete {path}? (y/n) You can't undo"
|
962
975
|
" this action."
|
963
976
|
)
|
964
977
|
delete_in_storage = response == "y"
|
965
978
|
else:
|
966
979
|
delete_in_storage = storage
|
980
|
+
if not delete_in_storage:
|
981
|
+
logger.warning(
|
982
|
+
f"you will retain a dangling store here: {path}, not referenced via an artifact"
|
983
|
+
)
|
967
984
|
# we don't yet have logic to bring back the deleted metadata record
|
968
985
|
# in case storage deletion fails - this is important for ACID down the road
|
969
|
-
if delete_in_storage
|
970
|
-
delete_msg = delete_storage(
|
986
|
+
if delete_in_storage:
|
987
|
+
delete_msg = delete_storage(path)
|
971
988
|
if delete_msg != "did-not-delete":
|
972
|
-
logger.success(f"deleted {colors.yellow(f'{
|
989
|
+
logger.success(f"deleted {colors.yellow(f'{path}')}")
|
973
990
|
|
974
991
|
|
975
992
|
def _delete_skip_storage(artifact, *args, **kwargs) -> None:
|
@@ -286,9 +286,11 @@ class QuerySet(models.QuerySet, CanValidate, IsTree):
|
|
286
286
|
|
287
287
|
|
288
288
|
def filter_query_set_by_latest_version(ordered_query_set: QuerySet) -> RecordsList:
|
289
|
-
|
289
|
+
# evaluating length can be very costly, hence, the try-except block
|
290
|
+
try:
|
291
|
+
first_record = ordered_query_set[0]
|
292
|
+
except IndexError:
|
290
293
|
return ordered_query_set
|
291
|
-
first_record = ordered_query_set[0]
|
292
294
|
records_in_view = {}
|
293
295
|
records_in_view[first_record.stem_uid] = first_record
|
294
296
|
for record in ordered_query_set:
|
@@ -171,7 +171,7 @@ def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
|
|
171
171
|
cache_dir = settings._storage_settings.cache_dir
|
172
172
|
|
173
173
|
# just delete from the cache dir if a local instance
|
174
|
-
if not lamindb_setup.settings.storage.
|
174
|
+
if not lamindb_setup.settings.storage.type_is_cloud:
|
175
175
|
if cache_dir in local_path.parents:
|
176
176
|
if is_dir:
|
177
177
|
shutil.rmtree(local_path)
|
@@ -357,7 +357,12 @@ def _track_run_input(
|
|
357
357
|
is_run_input: bool | None = None,
|
358
358
|
run: Run | None = None,
|
359
359
|
):
|
360
|
-
|
360
|
+
# this is an internal hack right now for project-flow, but we can allow this
|
361
|
+
# for the user in the future
|
362
|
+
if isinstance(is_run_input, Run):
|
363
|
+
run = is_run_input
|
364
|
+
is_run_input = True
|
365
|
+
elif run is None:
|
361
366
|
run = run_context.run
|
362
367
|
# consider that data is an iterable of Data
|
363
368
|
data_iter: Iterable[Data] = [data] if isinstance(data, Data) else data
|
@@ -39,15 +39,15 @@ def save_vitessce_config(vitessce_config: VitessceConfig, description: str) -> A
|
|
39
39
|
if "url" not in file:
|
40
40
|
raise ValueError("Each file must have a 'url' key.")
|
41
41
|
filename = file["url"].split("/")[-1]
|
42
|
-
assert filename.endswith((".anndata.zarr", ".spatialdata.zarr"
|
43
|
-
filestem = (
|
44
|
-
|
45
|
-
.replace(".spatialdata.zarr", "")
|
46
|
-
.replace(".zarr", "")
|
42
|
+
assert filename.endswith((".anndata.zarr", ".spatialdata.zarr"))
|
43
|
+
filestem = filename.replace(".anndata.zarr", "").replace(
|
44
|
+
".spatialdata.zarr", ""
|
47
45
|
)
|
48
46
|
artifact = Artifact.filter(uid__startswith=filestem).one_or_none()
|
49
47
|
if artifact is None:
|
50
|
-
logger.warning(
|
48
|
+
logger.warning(
|
49
|
+
f"could not find dataset '{filestem}' in lamindb: {dataset}"
|
50
|
+
)
|
51
51
|
else:
|
52
52
|
input_artifacts.append(artifact)
|
53
53
|
# link inputs
|
@@ -46,8 +46,9 @@ def lint(session: nox.Session) -> None:
|
|
46
46
|
["unit", "tutorial", "guide", "biology", "faq", "storage", "docs", "cli"],
|
47
47
|
)
|
48
48
|
def install(session, group):
|
49
|
-
# run with pypi install
|
50
|
-
|
49
|
+
# on the release branch, do not use submodules but run with pypi install
|
50
|
+
# only exception is the docs group
|
51
|
+
if os.getenv("GITHUB_EVENT_NAME") != "push" or group == "docs":
|
51
52
|
# run with submodule install on a PR
|
52
53
|
submodules = " ".join(
|
53
54
|
[
|
@@ -160,6 +161,7 @@ def docs(session):
|
|
160
161
|
section = (
|
161
162
|
"```\n\n" + "#" * len(names) + " " + " ".join(("lamin", *names[1:]))
|
162
163
|
)
|
164
|
+
help_string = help_string.replace("Usage: main", "Usage: lamin")
|
163
165
|
page += f"{section}\n\n```\n{help_string}```\n\n"
|
164
166
|
|
165
167
|
Path("./docs/cli.md").write_text(page)
|
@@ -16,8 +16,8 @@ classifiers = [
|
|
16
16
|
]
|
17
17
|
dependencies = [
|
18
18
|
# Lamin PINNED packages
|
19
|
-
"lnschema_core==0.65.
|
20
|
-
"lamindb_setup==0.
|
19
|
+
"lnschema_core==0.65.2",
|
20
|
+
"lamindb_setup==0.70.0",
|
21
21
|
"lamin_utils==0.13.2",
|
22
22
|
"lamin_cli==0.12.3",
|
23
23
|
# others
|
@@ -58,7 +58,7 @@ zarr = [
|
|
58
58
|
"zarr>=2.16.0",
|
59
59
|
]
|
60
60
|
fcs = [
|
61
|
-
"readfcs>=1.1.
|
61
|
+
"readfcs>=1.1.8",
|
62
62
|
]
|
63
63
|
erdiagram = [
|
64
64
|
"django-schema-graph",
|
@@ -3,7 +3,7 @@ import subprocess
|
|
3
3
|
|
4
4
|
|
5
5
|
def test_decompose_url():
|
6
|
-
url = "https://lamin.ai/laminlabs/arrayloader-benchmarks/
|
6
|
+
url = "https://lamin.ai/laminlabs/arrayloader-benchmarks/transform/1GCKs8zLtkc85zKv" # noqa
|
7
7
|
result = decompose_url(url)
|
8
8
|
instance_slug, entity, uid = result
|
9
9
|
assert instance_slug == "laminlabs/arrayloader-benchmarks"
|
@@ -14,7 +14,7 @@ def test_decompose_url():
|
|
14
14
|
def test_get():
|
15
15
|
result = subprocess.run(
|
16
16
|
"lamin get"
|
17
|
-
" 'https://lamin.ai/laminlabs/arrayloader-benchmarks/
|
17
|
+
" 'https://lamin.ai/laminlabs/arrayloader-benchmarks/transform/1GCKs8zLtkc85zKv'", # noqa
|
18
18
|
shell=True,
|
19
19
|
capture_output=True,
|
20
20
|
)
|
@@ -3,6 +3,10 @@
|
|
3
3
|
<!-- prettier-ignore -->
|
4
4
|
Name | PR | Developer | Date | Version
|
5
5
|
--- | --- | --- | --- | ---
|
6
|
+
✨ Introduce `local_storage` mode for cloud instances | [728](https://github.com/laminlabs/lamindb-setup/pull/728) | [falexwolf](https://github.com/falexwolf) | 2024-04-23 | 0.70.0
|
7
|
+
🚚 Make `.uuid` attributes private | [727](https://github.com/laminlabs/lamindb-setup/pull/727) | [falexwolf](https://github.com/falexwolf) | 2024-04-23 |
|
8
|
+
🚚 Rename `is_cloud` to `type_is_cloud` | [726](https://github.com/laminlabs/lamindb-setup/pull/726) | [falexwolf](https://github.com/falexwolf) | 2024-04-23 |
|
9
|
+
🚸 In `.delete()`, check for data deletion & delete from hub | [725](https://github.com/laminlabs/lamindb-setup/pull/725) | [falexwolf](https://github.com/falexwolf) | 2024-04-22 |
|
6
10
|
✨ Upload dirs inplace | [722](https://github.com/laminlabs/lamindb-setup/pull/722) | [Koncopd](https://github.com/Koncopd) | 2024-04-20 | 0.69.5
|
7
11
|
♻️ Do not always read from local cache | [720](https://github.com/laminlabs/lamindb-setup/pull/720) | [falexwolf](https://github.com/falexwolf) | 2024-04-19 | 0.69.4
|
8
12
|
♻️ Improve suffix handling | [718](https://github.com/laminlabs/lamindb-setup/pull/718) | [falexwolf](https://github.com/falexwolf) | 2024-04-19 | 0.69.3
|
@@ -0,0 +1,114 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"attachments": {},
|
5
|
+
"cell_type": "markdown",
|
6
|
+
"metadata": {
|
7
|
+
"tags": []
|
8
|
+
},
|
9
|
+
"source": [
|
10
|
+
"# Init a local instance"
|
11
|
+
]
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"cell_type": "code",
|
15
|
+
"execution_count": null,
|
16
|
+
"metadata": {},
|
17
|
+
"outputs": [],
|
18
|
+
"source": [
|
19
|
+
"!lamin login testuser1"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"cell_type": "code",
|
24
|
+
"execution_count": null,
|
25
|
+
"metadata": {},
|
26
|
+
"outputs": [],
|
27
|
+
"source": [
|
28
|
+
"import lamindb_setup as ln_setup"
|
29
|
+
]
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"cell_type": "code",
|
33
|
+
"execution_count": null,
|
34
|
+
"metadata": {},
|
35
|
+
"outputs": [],
|
36
|
+
"source": [
|
37
|
+
"ln_setup.init(storage=\"./mydata\")"
|
38
|
+
]
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"cell_type": "code",
|
42
|
+
"execution_count": null,
|
43
|
+
"metadata": {
|
44
|
+
"tags": [
|
45
|
+
"hide-cell"
|
46
|
+
]
|
47
|
+
},
|
48
|
+
"outputs": [],
|
49
|
+
"source": [
|
50
|
+
"from pathlib import Path\n",
|
51
|
+
"\n",
|
52
|
+
"assert ln_setup.settings.instance.storage.type_is_cloud == False\n",
|
53
|
+
"assert ln_setup.settings.instance.owner == ln_setup.settings.user.handle\n",
|
54
|
+
"assert ln_setup.settings.instance.name == \"mydata\"\n",
|
55
|
+
"assert ln_setup.settings.storage.root.as_posix() == Path(\"mydata\").resolve().as_posix()\n",
|
56
|
+
"storage_root = ln_setup.settings.storage.root\n",
|
57
|
+
"assert storage_root.exists()\n",
|
58
|
+
"assert ln_setup.settings.storage.id is not None\n",
|
59
|
+
"assert (\n",
|
60
|
+
" ln_setup.settings.instance.db\n",
|
61
|
+
" == f\"sqlite:///{Path('./mydata').resolve().as_posix()}/{ln_setup.settings.instance.id.hex}.lndb\"\n",
|
62
|
+
")"
|
63
|
+
]
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"cell_type": "code",
|
67
|
+
"execution_count": null,
|
68
|
+
"metadata": {},
|
69
|
+
"outputs": [],
|
70
|
+
"source": [
|
71
|
+
"ln_setup.delete(\"mydata\", force=True)"
|
72
|
+
]
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"cell_type": "code",
|
76
|
+
"execution_count": null,
|
77
|
+
"metadata": {},
|
78
|
+
"outputs": [],
|
79
|
+
"source": [
|
80
|
+
"from lamindb_setup.core._settings_store import instance_settings_file\n",
|
81
|
+
"\n",
|
82
|
+
"settings_file = instance_settings_file(\"mydata\", \"testuser1\")\n",
|
83
|
+
"assert not storage_root.exists()\n",
|
84
|
+
"assert settings_file.exists() == False"
|
85
|
+
]
|
86
|
+
}
|
87
|
+
],
|
88
|
+
"metadata": {
|
89
|
+
"kernelspec": {
|
90
|
+
"display_name": "Python 3 (ipykernel)",
|
91
|
+
"language": "python",
|
92
|
+
"name": "python3"
|
93
|
+
},
|
94
|
+
"language_info": {
|
95
|
+
"codemirror_mode": {
|
96
|
+
"name": "ipython",
|
97
|
+
"version": 3
|
98
|
+
},
|
99
|
+
"file_extension": ".py",
|
100
|
+
"mimetype": "text/x-python",
|
101
|
+
"name": "python",
|
102
|
+
"nbconvert_exporter": "python",
|
103
|
+
"pygments_lexer": "ipython3",
|
104
|
+
"version": "3.10.13"
|
105
|
+
},
|
106
|
+
"vscode": {
|
107
|
+
"interpreter": {
|
108
|
+
"hash": "40d3a090f54c6569ab1632332b64b2c03c39dcf918b08424e98f38b5ae0af88f"
|
109
|
+
}
|
110
|
+
}
|
111
|
+
},
|
112
|
+
"nbformat": 4,
|
113
|
+
"nbformat_minor": 4
|
114
|
+
}
|