lamindb 0.73.2__tar.gz → 0.74.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lamindb-0.73.2 → lamindb-0.74.0}/PKG-INFO +3 -3
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/changelog.md +12 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/setup.ipynb +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/__init__.py +7 -4
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_artifact.py +16 -21
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_feature.py +2 -2
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_finish.py +8 -2
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_from_values.py +18 -6
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_run.py +2 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_storage.py +0 -6
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/__init__.py +4 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_data.py +6 -3
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_feature_manager.py +242 -107
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_run_context.py +1 -21
- {lamindb-0.73.2 → lamindb-0.74.0}/noxfile.py +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/pyproject.toml +7 -2
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_migrate.py +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/changelog.md +2 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +3 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +15 -3
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +2 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +7 -7
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/storage/test_storage_access.py +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/CHANGELOG.md +1 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- lamindb-0.74.0/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +61 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/models.py +127 -75
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/types.py +6 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_artifact.py +11 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_feature_manager.py +62 -3
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_run_context.py +33 -10
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_transfer.py +1 -1
- {lamindb-0.73.2 → lamindb-0.74.0}/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/.gitmodules +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/LICENSE +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/annotate-for-developers.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/annotate.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/bionty-base.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/bionty.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/can-validate.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/data.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/key.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/faq.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/features-lamindb.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/features-laminhub.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/guide.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/installation.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/introduction.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/lamin-utils.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/lamindb.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/meta.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/nbproject.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/query-search.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/readfcs.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/reference.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/schemas.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/setup.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/signup-login.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/add-replace-stage.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/storage.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/track.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/transfer.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/tutorial.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/tutorial2.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/docs/wetlab.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_annotate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_can_validate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_collection.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_feature_set.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_filter.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_parents.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_query_manager.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_query_set.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_registry.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_save.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_transform.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_ulabel.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_utils.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/_view.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_label_manager.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_settings.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/_transform_settings.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/datasets/_core.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/exceptions.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/fields.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/schema.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/objects.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/storage/paths.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/types.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/core/versioning.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/LICENSE +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/bionty/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/docs/changelog.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/bionty/tests/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/_get.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_get.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_save_files.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_save_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/test-multi-session.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-prod/test_auto_connect.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/LICENSE +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/docs/changelog.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/docs/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/docs/reference.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lamin-project.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/_bionty.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/core/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/core/_bionty.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/core/_settings.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/ids.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0028_squashed.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/migrations/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/lnschema_bionty/models.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/noxfile.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-bionty/tests/test_integrity.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.github/workflows/build.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.github/workflows/deploy-instance-apis.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.github/workflows/latest-changes.jinja2 +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.github/workflows/latest-changes.yml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.gitignore +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/.pre-commit-config.yaml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/README.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/docs/changelog.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/docs/guide/01-get-started.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/docs/guide/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/docs/index.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/docs/reference.md +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/noxfile.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/pyproject.toml +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/tests/test_integrity.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/tests/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/sub/wetlab/wetlab/models.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/conftest.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/notebooks/initialized-with-nbproject.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/notebooks/no-title.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_annotate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_artifact_folders.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_cache.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_can_validate.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_collection.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_data.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_db.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_delete.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_feature.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_feature_set.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_from_values.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_label_manager.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_load.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_manager.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_notebooks.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_parents.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_queryset.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_registry.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_run.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_save.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_search.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_settings.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_storage.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_transform.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_uid.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_ulabel.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_versioning.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/tests/test_view.py +0 -0
- {lamindb-0.73.2 → lamindb-0.74.0}/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.74.0
|
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.
|
13
|
-
Requires-Dist: lamindb_setup==0.73.
|
12
|
+
Requires-Dist: lnschema_core==0.70.0
|
13
|
+
Requires-Dist: lamindb_setup==0.73.2
|
14
14
|
Requires-Dist: lamin_utils==0.13.2
|
15
15
|
Requires-Dist: lamin_cli==0.14.0
|
16
16
|
Requires-Dist: rapidfuzz
|
@@ -12,6 +12,18 @@ LaminDB implements "migration-based versioning". When upgrading your LaminDB ins
|
|
12
12
|
.. role:: small
|
13
13
|
```
|
14
14
|
|
15
|
+
## 0.74
|
16
|
+
|
17
|
+
### 0.74.0 {small}`2024-06-19`
|
18
|
+
|
19
|
+
You can now distinguish model-like and dataset-like artifacts via a `type` field in the `Artifact` registry.
|
20
|
+
|
21
|
+
Leverage `artifact.params.add_values()` to annotate model-like artifacts like you leverage `artifact.features.add_values()` to annotate dataset-like artifacts.
|
22
|
+
|
23
|
+
- 🏗️ Add `type` field to `Artifact`, allow linking model-like artifacts against params, validate params akin to validating features, enable features-based annotation with non-ulabels [PR](https://github.com/laminlabs/lamindb/pull/1690) [@falexwolf](https://github.com/falexwolf)
|
24
|
+
- 🚸 Support dict in add_values [PR](https://github.com/laminlabs/lamindb/pull/1705) [@Zethson](https://github.com/Zethson)
|
25
|
+
- ♻️ Refactor after upath upgrade [PR](https://github.com/laminlabs/lamindb/pull/1699) [PR](https://github.com/laminlabs/lamindb/pull/1700) [@Koncopd](https://github.com/Koncopd)
|
26
|
+
|
15
27
|
## 0.73
|
16
28
|
|
17
29
|
### 0.73.2 {small}`2024-06-13`
|
@@ -14,6 +14,7 @@ Registries:
|
|
14
14
|
ULabel
|
15
15
|
Feature
|
16
16
|
FeatureSet
|
17
|
+
Param
|
17
18
|
|
18
19
|
Key functionality:
|
19
20
|
|
@@ -41,12 +42,13 @@ Modules & settings:
|
|
41
42
|
"""
|
42
43
|
|
43
44
|
# denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
|
44
|
-
__version__ = "0.
|
45
|
+
__version__ = "0.74.0"
|
45
46
|
|
46
47
|
import os as _os
|
47
48
|
|
48
49
|
import lamindb_setup as _lamindb_setup
|
49
|
-
from lamindb_setup._check_setup import InstanceNotSetupError
|
50
|
+
from lamindb_setup._check_setup import InstanceNotSetupError as _InstanceNotSetupError
|
51
|
+
from lamindb_setup._check_setup import _check_instance_setup
|
50
52
|
from lamindb_setup._connect_instance import connect
|
51
53
|
from lamindb_setup.core.upath import UPath
|
52
54
|
|
@@ -54,17 +56,18 @@ from . import setup
|
|
54
56
|
|
55
57
|
|
56
58
|
def __getattr__(name):
|
57
|
-
raise
|
59
|
+
raise _InstanceNotSetupError()
|
58
60
|
|
59
61
|
|
60
62
|
if _check_instance_setup(from_lamindb=True):
|
61
|
-
del
|
63
|
+
del _InstanceNotSetupError
|
62
64
|
del __getattr__ # delete so that imports work out
|
63
65
|
from lnschema_core.models import (
|
64
66
|
Artifact,
|
65
67
|
Collection,
|
66
68
|
Feature,
|
67
69
|
FeatureSet,
|
70
|
+
Param,
|
68
71
|
Run,
|
69
72
|
Storage,
|
70
73
|
Transform,
|
@@ -23,7 +23,7 @@ from lamindb_setup.core.upath import (
|
|
23
23
|
get_stat_dir_cloud,
|
24
24
|
get_stat_file_cloud,
|
25
25
|
)
|
26
|
-
from lnschema_core.models import Artifact, FeatureManager, Run, Storage
|
26
|
+
from lnschema_core.models import Artifact, FeatureManager, ParamManager, Run, Storage
|
27
27
|
from lnschema_core.types import (
|
28
28
|
VisibilityChoice,
|
29
29
|
)
|
@@ -84,7 +84,7 @@ def process_pathlike(
|
|
84
84
|
pass
|
85
85
|
if isinstance(filepath, LocalPathClasses):
|
86
86
|
filepath = filepath.resolve()
|
87
|
-
if check_path_is_child_of_root(filepath, default_storage.
|
87
|
+
if check_path_is_child_of_root(filepath, default_storage.root):
|
88
88
|
use_existing_storage_key = True
|
89
89
|
return default_storage, use_existing_storage_key
|
90
90
|
else:
|
@@ -272,28 +272,17 @@ def check_path_in_existing_storage(
|
|
272
272
|
) -> Storage | bool:
|
273
273
|
for storage in Storage.objects.using(using_key).filter().all():
|
274
274
|
# if path is part of storage, return it
|
275
|
-
if check_path_is_child_of_root(path, root=
|
275
|
+
if check_path_is_child_of_root(path, root=storage.root):
|
276
276
|
return storage
|
277
277
|
return False
|
278
278
|
|
279
279
|
|
280
280
|
def check_path_is_child_of_root(path: Path | UPath, root: Path | UPath | None) -> bool:
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
root, LocalPathClasses
|
287
|
-
):
|
288
|
-
# the following tests equivalency of two UPath objects
|
289
|
-
# via string representations; otherwise
|
290
|
-
# S3Path('s3://lndb-storage/') and S3Path('s3://lamindb-ci/')
|
291
|
-
# test as equivalent
|
292
|
-
return list(path.parents)[-1].as_posix() == root.as_posix()
|
293
|
-
elif isinstance(path, LocalPathClasses) and isinstance(root, LocalPathClasses):
|
294
|
-
return root.resolve() in path.resolve().parents
|
295
|
-
else:
|
296
|
-
return False
|
281
|
+
# str is needed to eliminate UPath storage_options
|
282
|
+
# from the equality checks below
|
283
|
+
path = UPath(str(path))
|
284
|
+
root = UPath(str(root))
|
285
|
+
return root.resolve() in path.resolve().parents
|
297
286
|
|
298
287
|
|
299
288
|
def get_relative_path_to_directory(
|
@@ -358,7 +347,7 @@ def get_artifact_kwargs_from_data(
|
|
358
347
|
check_path_in_storage = False
|
359
348
|
if use_existing_storage_key:
|
360
349
|
inferred_key = get_relative_path_to_directory(
|
361
|
-
path=path, directory=storage.
|
350
|
+
path=path, directory=UPath(storage.root)
|
362
351
|
).as_posix()
|
363
352
|
if key is None:
|
364
353
|
key = inferred_key
|
@@ -516,6 +505,7 @@ def update_attributes(data: HasFeatures, attributes: Mapping[str, str]):
|
|
516
505
|
|
517
506
|
def __init__(artifact: Artifact, *args, **kwargs):
|
518
507
|
artifact.features = FeatureManager(artifact)
|
508
|
+
artifact.params = ParamManager(artifact)
|
519
509
|
# Below checks for the Django-internal call in from_db()
|
520
510
|
# it'd be better if we could avoid this, but not being able to create a Artifact
|
521
511
|
# from data with the default constructor renders the central class of the API
|
@@ -532,6 +522,7 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
532
522
|
raise ValueError("Only one non-keyword arg allowed: data")
|
533
523
|
|
534
524
|
data: str | Path = kwargs.pop("data") if len(args) == 0 else args[0]
|
525
|
+
type: str = kwargs.pop("type") if "type" in kwargs else "dataset"
|
535
526
|
key: str | None = kwargs.pop("key") if "key" in kwargs else None
|
536
527
|
run: Run | None = kwargs.pop("run") if "run" in kwargs else None
|
537
528
|
description: str | None = (
|
@@ -616,6 +607,7 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
616
607
|
"to _retain_ the old state by duplicating the entire folder, do _not_ pass `is_new_version_of`"
|
617
608
|
)
|
618
609
|
|
610
|
+
kwargs["type"] = type
|
619
611
|
kwargs["uid"] = provisional_uid
|
620
612
|
kwargs["version"] = version
|
621
613
|
kwargs["description"] = description
|
@@ -662,6 +654,7 @@ def from_df(
|
|
662
654
|
version=version,
|
663
655
|
is_new_version_of=is_new_version_of,
|
664
656
|
accessor="DataFrame",
|
657
|
+
type="dataset",
|
665
658
|
**kwargs,
|
666
659
|
)
|
667
660
|
return artifact
|
@@ -690,6 +683,7 @@ def from_anndata(
|
|
690
683
|
version=version,
|
691
684
|
is_new_version_of=is_new_version_of,
|
692
685
|
accessor="AnnData",
|
686
|
+
type="dataset",
|
693
687
|
**kwargs,
|
694
688
|
)
|
695
689
|
return artifact
|
@@ -716,6 +710,7 @@ def from_mudata(
|
|
716
710
|
version=version,
|
717
711
|
is_new_version_of=is_new_version_of,
|
718
712
|
accessor="MuData",
|
713
|
+
type="dataset",
|
719
714
|
**kwargs,
|
720
715
|
)
|
721
716
|
return artifact
|
@@ -752,7 +747,7 @@ def from_dir(
|
|
752
747
|
else:
|
753
748
|
# maintain the hierachy within an existing storage location
|
754
749
|
folder_key_path = get_relative_path_to_directory(
|
755
|
-
folderpath, storage.
|
750
|
+
folderpath, UPath(storage.root)
|
756
751
|
)
|
757
752
|
else:
|
758
753
|
folder_key_path = Path(key)
|
@@ -27,12 +27,12 @@ FEATURE_TYPES = {
|
|
27
27
|
}
|
28
28
|
|
29
29
|
|
30
|
-
def convert_numpy_dtype_to_lamin_feature_type(dtype) -> str:
|
30
|
+
def convert_numpy_dtype_to_lamin_feature_type(dtype, str_as_cat: bool = True) -> str:
|
31
31
|
orig_type = dtype.name
|
32
32
|
# strip precision qualifiers
|
33
33
|
type = "".join(i for i in orig_type if not i.isdigit())
|
34
34
|
if type == "object" or type == "str":
|
35
|
-
type = "cat"
|
35
|
+
type = "cat" if str_as_cat else "str"
|
36
36
|
return type
|
37
37
|
|
38
38
|
|
@@ -33,13 +33,19 @@ def get_seconds_since_modified(filepath) -> float:
|
|
33
33
|
return datetime.now().timestamp() - filepath.stat().st_mtime
|
34
34
|
|
35
35
|
|
36
|
-
def finish():
|
36
|
+
def finish() -> None:
|
37
37
|
"""Mark a tracked run as finished.
|
38
38
|
|
39
39
|
Saves source code and, for notebooks, a run report to your default storage location.
|
40
40
|
"""
|
41
|
-
if run_context.
|
41
|
+
if run_context.run is None:
|
42
42
|
raise TrackNotCalled("Please run `ln.track()` before `ln.finish()`")
|
43
|
+
if run_context.path is None:
|
44
|
+
assert run_context.transform.type not in {"script", "notebook"}
|
45
|
+
run_context.run.finished_at = datetime.now(timezone.utc)
|
46
|
+
run_context.run.save()
|
47
|
+
# nothing else to do
|
48
|
+
return None
|
43
49
|
if is_run_from_ipython: # notebooks
|
44
50
|
if (
|
45
51
|
get_seconds_since_modified(run_context.path) > 3
|
@@ -278,14 +278,26 @@ def index_iterable(iterable: Iterable) -> pd.Index:
|
|
278
278
|
|
279
279
|
|
280
280
|
def _print_values(names: Iterable, n: int = 20, quotes: bool = True) -> str:
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
281
|
+
if isinstance(names, dict):
|
282
|
+
items = {
|
283
|
+
f"{key}: {value}": None
|
284
|
+
for key, value in names.items()
|
285
|
+
if key != "None" and value != "None"
|
286
|
+
}
|
285
287
|
else:
|
286
|
-
|
287
|
-
|
288
|
+
# Use a dictionary instead of a list to have unique values and preserve order
|
289
|
+
items = {str(name): None for name in names if name != "None"}
|
290
|
+
|
291
|
+
unique_items = list(items.keys())
|
292
|
+
|
293
|
+
if quotes:
|
294
|
+
unique_items = [f"'{item}'" for item in unique_items]
|
295
|
+
|
296
|
+
print_values = ", ".join(unique_items[:n])
|
297
|
+
|
298
|
+
if len(unique_items) > n:
|
288
299
|
print_values += ", ..."
|
300
|
+
|
289
301
|
return print_values
|
290
302
|
|
291
303
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from lnschema_core.models import Run, Transform
|
3
|
+
from lnschema_core.models import ParamManager, Run, Transform
|
4
4
|
|
5
5
|
|
6
6
|
def __init__(run: Run, *args, **kwargs):
|
7
|
+
run.params = ParamManager(run)
|
7
8
|
if len(args) == len(run._meta.concrete_fields):
|
8
9
|
super(Run, run).__init__(*args, **kwargs)
|
9
10
|
return None
|
@@ -3,11 +3,6 @@ from lamindb_setup.core.upath import UPath, create_path
|
|
3
3
|
from lnschema_core import Storage
|
4
4
|
|
5
5
|
|
6
|
-
def root_as_path(self) -> UPath:
|
7
|
-
access_token = self._access_token if hasattr(self, "_access_token") else None
|
8
|
-
return create_path(self.root, access_token=access_token)
|
9
|
-
|
10
|
-
|
11
6
|
@property # type: ignore
|
12
7
|
@doc_args(Storage.path.__doc__)
|
13
8
|
def path(self) -> UPath:
|
@@ -16,5 +11,4 @@ def path(self) -> UPath:
|
|
16
11
|
return create_path(self.root, access_token=access_token)
|
17
12
|
|
18
13
|
|
19
|
-
Storage.root_as_path = root_as_path
|
20
14
|
Storage.path = path
|
@@ -10,7 +10,9 @@ Registries:
|
|
10
10
|
QueryManager
|
11
11
|
RecordsList
|
12
12
|
HasFeatures
|
13
|
+
HasParams
|
13
14
|
FeatureManager
|
15
|
+
ParamManager
|
14
16
|
LabelManager
|
15
17
|
IsVersioned
|
16
18
|
CanValidate
|
@@ -56,6 +58,7 @@ from lamin_utils._inspect import InspectResult
|
|
56
58
|
from lnschema_core.models import (
|
57
59
|
CanValidate,
|
58
60
|
HasFeatures,
|
61
|
+
HasParams,
|
59
62
|
HasParents,
|
60
63
|
IsVersioned,
|
61
64
|
Registry,
|
@@ -71,7 +74,7 @@ from lamindb._annotate import (
|
|
71
74
|
)
|
72
75
|
from lamindb._query_manager import QueryManager
|
73
76
|
from lamindb._query_set import QuerySet, RecordsList
|
74
|
-
from lamindb.core._feature_manager import FeatureManager
|
77
|
+
from lamindb.core._feature_manager import FeatureManager, ParamManager
|
75
78
|
from lamindb.core._label_manager import LabelManager
|
76
79
|
|
77
80
|
from . import _data, datasets, exceptions, fields, types
|
@@ -24,13 +24,12 @@ from lamindb._registry import get_default_str_field
|
|
24
24
|
from lamindb.core._settings import settings
|
25
25
|
|
26
26
|
from ._feature_manager import (
|
27
|
-
FeatureManager,
|
28
27
|
get_feature_set_links,
|
29
28
|
get_host_id_field,
|
30
29
|
get_label_links,
|
31
30
|
print_features,
|
32
31
|
)
|
33
|
-
from ._label_manager import
|
32
|
+
from ._label_manager import print_labels
|
34
33
|
from ._run_context import run_context
|
35
34
|
from .exceptions import ValidationError
|
36
35
|
from .schema import (
|
@@ -159,7 +158,11 @@ def describe(self: HasFeatures, print_types: bool = False):
|
|
159
158
|
msg += f" {colors.italic('Provenance')}\n"
|
160
159
|
msg += prov_msg
|
161
160
|
msg += print_labels(self, print_types=print_types)
|
162
|
-
msg += print_features(
|
161
|
+
msg += print_features( # type: ignore
|
162
|
+
self,
|
163
|
+
print_types=print_types,
|
164
|
+
print_params=hasattr(self, "type") and self.type == "model",
|
165
|
+
)
|
163
166
|
logger.print(msg)
|
164
167
|
|
165
168
|
|