lamindb 0.76.7__tar.gz → 0.76.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lamindb-0.76.7 → lamindb-0.76.9}/.gitmodules +3 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/PKG-INFO +4 -4
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/setup.ipynb +2 -6
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/setup.ipynb +46 -20
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/track.ipynb +29 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/__init__.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_artifact.py +50 -23
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_collection.py +2 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_save.py +22 -9
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_context.py +3 -3
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_data.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_mapped_collection.py +65 -31
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/_core.py +11 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/exceptions.py +15 -2
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_backed_access.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/paths.py +45 -14
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/versioning.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/pyproject.toml +3 -3
- lamindb-0.76.9/sub/lamin-cli/lamin_cli/__init__.py +3 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/__main__.py +6 -9
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_save.py +18 -10
- lamindb-0.76.9/sub/lamin-cli/tests/test_save_files.py +60 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_save_notebooks.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +9 -30
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +75 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/__init__.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_check_setup.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +71 -84
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_delete.py +9 -5
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_init_instance.py +65 -22
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +2 -2
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +42 -21
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +25 -12
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +38 -19
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +7 -2
- lamindb-0.76.9/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +33 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +8 -3
- lamindb-0.76.9/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +17 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_access.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/models.py +9 -5
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +2 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/__init__.py +1 -1
- lamindb-0.76.9/sub/wetlab/wetlab/migrations/0024_compound_chembl_id.py +19 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/models.py +43 -52
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/conftest.py +8 -2
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_artifact.py +25 -15
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_artifact_folders.py +3 -2
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_cache.py +86 -11
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_collection.py +21 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_context.py +1 -1
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_transform.py +14 -2
- lamindb-0.76.7/sub/lamin-cli/lamin_cli/__init__.py +0 -3
- lamindb-0.76.7/sub/lamin-cli/tests/test_save_files.py +0 -33
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/workflows/build.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/CONTRIBUTING.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/LICENSE +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/api.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/arrays.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/bionty.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/changelog.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate-any.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate-df.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/curate.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/key.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/faq.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/guide.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/features-lamindb.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/features-laminhub.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/includes/installation.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/index.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/introduction.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/lamindb.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/laminr.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/query-search.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/registries.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/rest.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/schemas.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/signup-login.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/storage.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/transfer.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/tutorial.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/tutorial2.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/docs/wetlab.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_can_validate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_curate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_feature.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_feature_set.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_filter.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_finish.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_from_values.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_parents.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_query_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_query_set.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_record.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_run.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_transform.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_ulabel.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_utils.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/_view.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_feature_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_label_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/fields.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/loaders.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/schema.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_anndata_accessor.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_tiledbsoma.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/storage/objects.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/subsettings/_transform_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/core/types.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/noxfile.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/LICENSE +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/_bionty.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_display_sources.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_ontology.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_public_ontology.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/_sync_sources.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_io.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/dev/_md5.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_disease.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_drug.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_gene.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_organism.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_protein.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/base/sources.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_add_ontology.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_bionty.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/core/_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/ids.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/migrations/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/bionty/models.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/concepts.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/config.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/extend.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/guide.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/pyproject.toml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/dev/test_io.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_biosample.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_cellline.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_celltype.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_disease.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_drug.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_gene.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_organism.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_pathway.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_phenotype.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_protein.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/entities/test_tissue.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_bionty.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_lamindb.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_md5.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/bionty/tests/test_ontology.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/LICENSE +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_get.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_cli.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_get.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_migrate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamin-cli/tests/test_save_scripts.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/changelog.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/CHANGELOG.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0056_rename_ulabel_ref_is_name_artifactulabel_label_ref_is_name_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0064_alter_artifact_version_alter_collection_version_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0065_remove_collection_feature_sets_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/0066_alter_artifact__feature_values_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/conftest.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_models.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.github/workflows/build.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.gitignore +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/README.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/changelog.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide/get-started.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/guide.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/index.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/docs/reference.md +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/noxfile.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/pyproject.toml +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/tests/test_integrity.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/tests/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0022_remove_experiment_experiment_type_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/0023_compoundtreatment_duration_and_more.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_can_validate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_curate.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_data.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_db.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_delete.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_feature_set.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_from_values.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_label_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_load.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_manager.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_notebooks.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_parents.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_queryset.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_record.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_run.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_save.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_search.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_settings.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_uid.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_ulabel.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_versioning.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_view.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/core/test_visibility.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/conftest.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/test_storage.py +0 -0
- {lamindb-0.76.7 → lamindb-0.76.9}/tests/storage/test_transfer.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lamindb
|
3
|
-
Version: 0.76.
|
3
|
+
Version: 0.76.9
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.8
|
@@ -9,10 +9,10 @@ Classifier: Programming Language :: Python :: 3.8
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.9
|
10
10
|
Classifier: Programming Language :: Python :: 3.10
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
12
|
-
Requires-Dist: lnschema_core==0.74.
|
13
|
-
Requires-Dist: lamindb_setup==0.77.
|
12
|
+
Requires-Dist: lnschema_core==0.74.5
|
13
|
+
Requires-Dist: lamindb_setup==0.77.5
|
14
14
|
Requires-Dist: lamin_utils==0.13.4
|
15
|
-
Requires-Dist: lamin_cli==0.17.
|
15
|
+
Requires-Dist: lamin_cli==0.17.6
|
16
16
|
Requires-Dist: rapidfuzz
|
17
17
|
Requires-Dist: pyarrow
|
18
18
|
Requires-Dist: typing_extensions!=4.6.0
|
@@ -1,7 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"cells": [
|
3
3
|
{
|
4
|
-
"attachments": {},
|
5
4
|
"cell_type": "markdown",
|
6
5
|
"id": "261ca5e4-f46f-4361-9c3e-f944bbe14484",
|
7
6
|
"metadata": {},
|
@@ -20,7 +19,7 @@
|
|
20
19
|
},
|
21
20
|
"outputs": [],
|
22
21
|
"source": [
|
23
|
-
"!lamin
|
22
|
+
"!lamin load --unload"
|
24
23
|
]
|
25
24
|
},
|
26
25
|
{
|
@@ -36,7 +35,6 @@
|
|
36
35
|
]
|
37
36
|
},
|
38
37
|
{
|
39
|
-
"attachments": {},
|
40
38
|
"cell_type": "markdown",
|
41
39
|
"id": "bbdb5cc9",
|
42
40
|
"metadata": {},
|
@@ -70,7 +68,6 @@
|
|
70
68
|
]
|
71
69
|
},
|
72
70
|
{
|
73
|
-
"attachments": {},
|
74
71
|
"cell_type": "markdown",
|
75
72
|
"id": "2d68e16d",
|
76
73
|
"metadata": {},
|
@@ -90,7 +87,6 @@
|
|
90
87
|
]
|
91
88
|
},
|
92
89
|
{
|
93
|
-
"attachments": {},
|
94
90
|
"cell_type": "markdown",
|
95
91
|
"id": "c2fb4f9b",
|
96
92
|
"metadata": {},
|
@@ -136,7 +132,7 @@
|
|
136
132
|
"name": "python",
|
137
133
|
"nbconvert_exporter": "python",
|
138
134
|
"pygments_lexer": "ipython3",
|
139
|
-
"version": "3.
|
135
|
+
"version": "3.9.17"
|
140
136
|
},
|
141
137
|
"vscode": {
|
142
138
|
"interpreter": {
|
@@ -1,7 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"cells": [
|
3
3
|
{
|
4
|
-
"attachments": {},
|
5
4
|
"cell_type": "markdown",
|
6
5
|
"metadata": {},
|
7
6
|
"source": [
|
@@ -36,7 +35,6 @@
|
|
36
35
|
]
|
37
36
|
},
|
38
37
|
{
|
39
|
-
"attachments": {},
|
40
38
|
"cell_type": "markdown",
|
41
39
|
"metadata": {},
|
42
40
|
"source": [
|
@@ -44,7 +42,6 @@
|
|
44
42
|
]
|
45
43
|
},
|
46
44
|
{
|
47
|
-
"attachments": {},
|
48
45
|
"cell_type": "markdown",
|
49
46
|
"metadata": {},
|
50
47
|
"source": [
|
@@ -57,7 +54,6 @@
|
|
57
54
|
]
|
58
55
|
},
|
59
56
|
{
|
60
|
-
"attachments": {},
|
61
57
|
"cell_type": "markdown",
|
62
58
|
"metadata": {},
|
63
59
|
"source": [
|
@@ -69,7 +65,6 @@
|
|
69
65
|
]
|
70
66
|
},
|
71
67
|
{
|
72
|
-
"attachments": {},
|
73
68
|
"cell_type": "markdown",
|
74
69
|
"metadata": {},
|
75
70
|
"source": [
|
@@ -88,7 +83,6 @@
|
|
88
83
|
]
|
89
84
|
},
|
90
85
|
{
|
91
|
-
"attachments": {},
|
92
86
|
"cell_type": "markdown",
|
93
87
|
"metadata": {},
|
94
88
|
"source": [
|
@@ -98,7 +92,6 @@
|
|
98
92
|
]
|
99
93
|
},
|
100
94
|
{
|
101
|
-
"attachments": {},
|
102
95
|
"cell_type": "markdown",
|
103
96
|
"metadata": {},
|
104
97
|
"source": [
|
@@ -106,7 +99,6 @@
|
|
106
99
|
]
|
107
100
|
},
|
108
101
|
{
|
109
|
-
"attachments": {},
|
110
102
|
"cell_type": "markdown",
|
111
103
|
"metadata": {},
|
112
104
|
"source": [
|
@@ -116,7 +108,6 @@
|
|
116
108
|
]
|
117
109
|
},
|
118
110
|
{
|
119
|
-
"attachments": {},
|
120
111
|
"cell_type": "markdown",
|
121
112
|
"metadata": {},
|
122
113
|
"source": [
|
@@ -124,7 +115,6 @@
|
|
124
115
|
]
|
125
116
|
},
|
126
117
|
{
|
127
|
-
"attachments": {},
|
128
118
|
"cell_type": "markdown",
|
129
119
|
"metadata": {},
|
130
120
|
"source": [
|
@@ -135,7 +125,6 @@
|
|
135
125
|
]
|
136
126
|
},
|
137
127
|
{
|
138
|
-
"attachments": {},
|
139
128
|
"cell_type": "markdown",
|
140
129
|
"metadata": {},
|
141
130
|
"source": [
|
@@ -146,7 +135,6 @@
|
|
146
135
|
]
|
147
136
|
},
|
148
137
|
{
|
149
|
-
"attachments": {},
|
150
138
|
"cell_type": "markdown",
|
151
139
|
"metadata": {},
|
152
140
|
"source": [
|
@@ -154,7 +142,6 @@
|
|
154
142
|
]
|
155
143
|
},
|
156
144
|
{
|
157
|
-
"attachments": {},
|
158
145
|
"cell_type": "markdown",
|
159
146
|
"metadata": {},
|
160
147
|
"source": [
|
@@ -187,11 +174,12 @@
|
|
187
174
|
]
|
188
175
|
},
|
189
176
|
{
|
190
|
-
"attachments": {},
|
191
177
|
"cell_type": "markdown",
|
192
178
|
"metadata": {},
|
193
179
|
"source": [
|
194
|
-
"Settings persist in `~/.lamin/` and can also be accessed via {class}`lamindb.setup.settings`."
|
180
|
+
"Settings persist in `~/.lamin/` and can also be accessed via {class}`lamindb.setup.settings`. \n",
|
181
|
+
"\n",
|
182
|
+
"The settings directory can also be configured using `LAMIN_SETTINGS_DIR` environment variable."
|
195
183
|
]
|
196
184
|
},
|
197
185
|
{
|
@@ -222,7 +210,6 @@
|
|
222
210
|
]
|
223
211
|
},
|
224
212
|
{
|
225
|
-
"attachments": {},
|
226
213
|
"cell_type": "markdown",
|
227
214
|
"metadata": {},
|
228
215
|
"source": [
|
@@ -260,6 +247,46 @@
|
|
260
247
|
"```"
|
261
248
|
]
|
262
249
|
},
|
250
|
+
{
|
251
|
+
"cell_type": "markdown",
|
252
|
+
"metadata": {},
|
253
|
+
"source": [
|
254
|
+
"## Manage cache"
|
255
|
+
]
|
256
|
+
},
|
257
|
+
{
|
258
|
+
"cell_type": "markdown",
|
259
|
+
"metadata": {},
|
260
|
+
"source": [
|
261
|
+
"`lamindb` mantains cache for cloud instances, i.e. instances having storage set to an AWS S3 bucket.\n",
|
262
|
+
"\n",
|
263
|
+
"Cache directory can be accessed via {class}`lamindb.settings`.\n",
|
264
|
+
"\n",
|
265
|
+
"```\n",
|
266
|
+
"ln.settings.storage.cache_dir\n",
|
267
|
+
"```\n",
|
268
|
+
"\n",
|
269
|
+
"or print the cache directory path with CLI\n",
|
270
|
+
"\n",
|
271
|
+
"```\n",
|
272
|
+
"lamin cache get\n",
|
273
|
+
"```\n",
|
274
|
+
"\n",
|
275
|
+
"It can be configured using the settings\n",
|
276
|
+
"\n",
|
277
|
+
"```\n",
|
278
|
+
"ln.settings.storage.cache_dir = \"some/path/to/cache\"\n",
|
279
|
+
"```\n",
|
280
|
+
"\n",
|
281
|
+
"or using CLI\n",
|
282
|
+
"\n",
|
283
|
+
"```\n",
|
284
|
+
"lamin cache set some/path/to/cache\n",
|
285
|
+
"```\n",
|
286
|
+
"\n",
|
287
|
+
"Cache directory can also be set using `LAMIN_CACHE_DIR` environment variable."
|
288
|
+
]
|
289
|
+
},
|
263
290
|
{
|
264
291
|
"cell_type": "markdown",
|
265
292
|
"metadata": {},
|
@@ -275,7 +302,7 @@
|
|
275
302
|
"\n",
|
276
303
|
"When loading a new instance, you automatically _close_ the previously loaded old instance.\n",
|
277
304
|
"\n",
|
278
|
-
"If you want to close the instance without loading a new instance, use `lamin
|
305
|
+
"If you want to close the instance without loading a new instance, use `lamin load --unload`"
|
279
306
|
]
|
280
307
|
},
|
281
308
|
{
|
@@ -356,7 +383,6 @@
|
|
356
383
|
]
|
357
384
|
},
|
358
385
|
{
|
359
|
-
"attachments": {},
|
360
386
|
"cell_type": "markdown",
|
361
387
|
"metadata": {},
|
362
388
|
"source": [
|
@@ -387,16 +413,16 @@
|
|
387
413
|
"name": "python3"
|
388
414
|
},
|
389
415
|
"language_info": {
|
390
|
-
"artifact_extension": ".py",
|
391
416
|
"codemirror_mode": {
|
392
417
|
"name": "ipython",
|
393
418
|
"version": 3
|
394
419
|
},
|
420
|
+
"file_extension": ".py",
|
395
421
|
"mimetype": "text/x-python",
|
396
422
|
"name": "python",
|
397
423
|
"nbconvert_exporter": "python",
|
398
424
|
"pygments_lexer": "ipython3",
|
399
|
-
"version": "3.
|
425
|
+
"version": "3.9.17"
|
400
426
|
},
|
401
427
|
"vscode": {
|
402
428
|
"interpreter": {
|
@@ -177,6 +177,35 @@
|
|
177
177
|
"<br>"
|
178
178
|
]
|
179
179
|
},
|
180
|
+
{
|
181
|
+
"cell_type": "markdown",
|
182
|
+
"metadata": {},
|
183
|
+
"source": [
|
184
|
+
"## Manage templates"
|
185
|
+
]
|
186
|
+
},
|
187
|
+
{
|
188
|
+
"cell_type": "markdown",
|
189
|
+
"metadata": {},
|
190
|
+
"source": [
|
191
|
+
"Save the template:\n",
|
192
|
+
"\n",
|
193
|
+
"```bash\n",
|
194
|
+
"lamin save template1.ipynb --key templates/template1.ipynb --description \"Template for analysis type 1\" --registry artifact\n",
|
195
|
+
"```"
|
196
|
+
]
|
197
|
+
},
|
198
|
+
{
|
199
|
+
"cell_type": "markdown",
|
200
|
+
"metadata": {},
|
201
|
+
"source": [
|
202
|
+
"Load the template:\n",
|
203
|
+
"\n",
|
204
|
+
"```bash\n",
|
205
|
+
"lamin get https://lamin.ai/account/instance/artifact/Akd7gx7Y9oVOJlei0001\n",
|
206
|
+
"```"
|
207
|
+
]
|
208
|
+
},
|
180
209
|
{
|
181
210
|
"cell_type": "code",
|
182
211
|
"execution_count": null,
|
@@ -30,7 +30,7 @@ from lnschema_core.types import (
|
|
30
30
|
from lamindb._utils import attach_func_to_class_method
|
31
31
|
from lamindb.core._data import _track_run_input, describe, view_lineage
|
32
32
|
from lamindb.core._settings import settings
|
33
|
-
from lamindb.core.exceptions import IntegrityError
|
33
|
+
from lamindb.core.exceptions import IntegrityError, InvalidArgument
|
34
34
|
from lamindb.core.loaders import load_to_memory
|
35
35
|
from lamindb.core.storage import (
|
36
36
|
LocalPathClasses,
|
@@ -43,6 +43,7 @@ from lamindb.core.storage.paths import (
|
|
43
43
|
auto_storage_key_from_artifact,
|
44
44
|
auto_storage_key_from_artifact_uid,
|
45
45
|
check_path_is_child_of_root,
|
46
|
+
filepath_cache_key_from_artifact,
|
46
47
|
filepath_from_artifact,
|
47
48
|
)
|
48
49
|
from lamindb.core.versioning import (
|
@@ -88,8 +89,6 @@ def process_pathlike(
|
|
88
89
|
raise FileNotFoundError(filepath)
|
89
90
|
except PermissionError:
|
90
91
|
pass
|
91
|
-
if isinstance(filepath, LocalPathClasses):
|
92
|
-
filepath = filepath.resolve()
|
93
92
|
if check_path_is_child_of_root(filepath, default_storage.root):
|
94
93
|
use_existing_storage_key = True
|
95
94
|
return default_storage, use_existing_storage_key
|
@@ -154,7 +153,7 @@ def process_data(
|
|
154
153
|
if hasattr(default_storage, "_access_token")
|
155
154
|
else None
|
156
155
|
)
|
157
|
-
path = create_path(data, access_token=access_token)
|
156
|
+
path = create_path(data, access_token=access_token).resolve()
|
158
157
|
storage, use_existing_storage_key = process_pathlike(
|
159
158
|
path,
|
160
159
|
default_storage=default_storage,
|
@@ -175,12 +174,12 @@ def process_data(
|
|
175
174
|
key_suffix = None
|
176
175
|
suffix = infer_suffix(data, format)
|
177
176
|
if key_suffix is not None and key_suffix != suffix:
|
178
|
-
raise
|
177
|
+
raise InvalidArgument(
|
179
178
|
f"The suffix '{key_suffix}' of the provided key is incorrect, it should"
|
180
179
|
f" be '{suffix}'."
|
181
180
|
)
|
182
181
|
cache_name = f"{provisional_uid}{suffix}"
|
183
|
-
path = settings.
|
182
|
+
path = settings.storage.cache_dir / cache_name
|
184
183
|
# Alex: I don't understand the line below
|
185
184
|
if path.suffixes == []:
|
186
185
|
path = path.with_suffix(suffix)
|
@@ -344,8 +343,8 @@ def get_artifact_kwargs_from_data(
|
|
344
343
|
|
345
344
|
if revises is not None: # update provisional_uid
|
346
345
|
provisional_uid, revises = create_uid(revises=revises, version=version)
|
347
|
-
if
|
348
|
-
path = path.rename(f"{provisional_uid}{suffix}")
|
346
|
+
if settings.storage.cache_dir in path.parents:
|
347
|
+
path = path.rename(path.with_name(f"{provisional_uid}{suffix}"))
|
349
348
|
|
350
349
|
check_path_in_storage = False
|
351
350
|
if use_existing_storage_key:
|
@@ -356,7 +355,7 @@ def get_artifact_kwargs_from_data(
|
|
356
355
|
key = inferred_key
|
357
356
|
else:
|
358
357
|
if not key == inferred_key:
|
359
|
-
raise
|
358
|
+
raise InvalidArgument(
|
360
359
|
f"The path '{data}' is already in registered storage"
|
361
360
|
f" '{storage.root}' with key '{inferred_key}'\nYou passed"
|
362
361
|
f" conflicting key '{key}': please move the file before"
|
@@ -399,6 +398,7 @@ def get_artifact_kwargs_from_data(
|
|
399
398
|
"run_id": run.id if run is not None else None,
|
400
399
|
"run": run,
|
401
400
|
"_key_is_virtual": key_is_virtual,
|
401
|
+
"revises": revises,
|
402
402
|
}
|
403
403
|
if not isinstance(path, LocalPathClasses):
|
404
404
|
local_filepath = None
|
@@ -614,6 +614,9 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
614
614
|
else:
|
615
615
|
kwargs = kwargs_or_artifact
|
616
616
|
|
617
|
+
if revises is None:
|
618
|
+
revises = kwargs_or_artifact.pop("revises")
|
619
|
+
|
617
620
|
if data is not None:
|
618
621
|
artifact._local_filepath = privates["local_filepath"]
|
619
622
|
artifact._cloud_filepath = privates["cloud_filepath"]
|
@@ -750,7 +753,7 @@ def from_dir(
|
|
750
753
|
" ln.Artifact(dir_path) to get one artifact for the entire directory"
|
751
754
|
)
|
752
755
|
folderpath: UPath = create_path(path) # returns Path for local
|
753
|
-
default_storage = settings.
|
756
|
+
default_storage = settings.storage.record
|
754
757
|
using_key = settings._using_key
|
755
758
|
storage, use_existing_storage = process_pathlike(
|
756
759
|
folderpath, default_storage, using_key
|
@@ -844,7 +847,7 @@ def replace(
|
|
844
847
|
run: Run | None = None,
|
845
848
|
format: str | None = None,
|
846
849
|
) -> None:
|
847
|
-
default_storage = settings.
|
850
|
+
default_storage = settings.storage.record
|
848
851
|
kwargs, privates = get_artifact_kwargs_from_data(
|
849
852
|
provisional_uid=self.uid,
|
850
853
|
data=data,
|
@@ -919,12 +922,14 @@ def open(
|
|
919
922
|
from lamindb.core.storage._backed_access import _track_writes_factory, backed_access
|
920
923
|
|
921
924
|
using_key = settings._using_key
|
922
|
-
filepath =
|
925
|
+
filepath, cache_key = filepath_cache_key_from_artifact(self, using_key=using_key)
|
923
926
|
is_tiledbsoma_w = (
|
924
927
|
filepath.name == "soma" or filepath.suffix == ".tiledbsoma"
|
925
928
|
) and mode == "w"
|
926
929
|
# consider the case where an object is already locally cached
|
927
|
-
localpath = setup_settings.instance.storage.cloud_to_local_no_update(
|
930
|
+
localpath = setup_settings.instance.storage.cloud_to_local_no_update(
|
931
|
+
filepath, cache_key=cache_key
|
932
|
+
)
|
928
933
|
if not is_tiledbsoma_w and localpath.exists():
|
929
934
|
access = backed_access(localpath, mode, using_key)
|
930
935
|
else:
|
@@ -956,15 +961,17 @@ def open(
|
|
956
961
|
|
957
962
|
|
958
963
|
# can't really just call .cache in .load because of double tracking
|
959
|
-
def _synchronize_cleanup_on_error(
|
964
|
+
def _synchronize_cleanup_on_error(
|
965
|
+
filepath: UPath, cache_key: str | None = None
|
966
|
+
) -> UPath:
|
960
967
|
try:
|
961
968
|
cache_path = setup_settings.instance.storage.cloud_to_local(
|
962
|
-
filepath, print_progress=True
|
969
|
+
filepath, cache_key=cache_key, print_progress=True
|
963
970
|
)
|
964
971
|
except Exception as e:
|
965
972
|
if not isinstance(filepath, LocalPathClasses):
|
966
973
|
cache_path = setup_settings.instance.storage.cloud_to_local_no_update(
|
967
|
-
filepath
|
974
|
+
filepath, cache_key=cache_key
|
968
975
|
)
|
969
976
|
if cache_path.is_file():
|
970
977
|
cache_path.unlink(missing_ok=True)
|
@@ -979,8 +986,11 @@ def load(self, is_run_input: bool | None = None, **kwargs) -> Any:
|
|
979
986
|
if hasattr(self, "_memory_rep") and self._memory_rep is not None:
|
980
987
|
access_memory = self._memory_rep
|
981
988
|
else:
|
982
|
-
filepath =
|
983
|
-
|
989
|
+
filepath, cache_key = filepath_cache_key_from_artifact(
|
990
|
+
self, using_key=settings._using_key
|
991
|
+
)
|
992
|
+
cache_path = _synchronize_cleanup_on_error(filepath, cache_key=cache_key)
|
993
|
+
# cache_path is local so doesn't trigger any sync in load_to_memory
|
984
994
|
access_memory = load_to_memory(cache_path, **kwargs)
|
985
995
|
# only call if load is successfull
|
986
996
|
_track_run_input(self, is_run_input)
|
@@ -989,8 +999,10 @@ def load(self, is_run_input: bool | None = None, **kwargs) -> Any:
|
|
989
999
|
|
990
1000
|
# docstring handled through attach_func_to_class_method
|
991
1001
|
def cache(self, is_run_input: bool | None = None) -> Path:
|
992
|
-
filepath =
|
993
|
-
|
1002
|
+
filepath, cache_key = filepath_cache_key_from_artifact(
|
1003
|
+
self, using_key=settings._using_key
|
1004
|
+
)
|
1005
|
+
cache_path = _synchronize_cleanup_on_error(filepath, cache_key=cache_key)
|
994
1006
|
# only call if sync is successfull
|
995
1007
|
_track_run_input(self, is_run_input)
|
996
1008
|
return cache_path
|
@@ -1041,7 +1053,7 @@ def delete(
|
|
1041
1053
|
if delete_record:
|
1042
1054
|
# need to grab file path before deletion
|
1043
1055
|
try:
|
1044
|
-
path = filepath_from_artifact(self, using_key)
|
1056
|
+
path, _ = filepath_from_artifact(self, using_key)
|
1045
1057
|
except OSError:
|
1046
1058
|
# we can still delete the record
|
1047
1059
|
logger.warning("Could not get path")
|
@@ -1133,8 +1145,22 @@ def _save_skip_storage(file, **kwargs) -> None:
|
|
1133
1145
|
@doc_args(Artifact.path.__doc__)
|
1134
1146
|
def path(self) -> Path | UPath:
|
1135
1147
|
"""{}""" # noqa: D415
|
1136
|
-
|
1137
|
-
|
1148
|
+
# return only the path, without StorageSettings
|
1149
|
+
filepath, _ = filepath_from_artifact(self, using_key=settings._using_key)
|
1150
|
+
return filepath
|
1151
|
+
|
1152
|
+
|
1153
|
+
# get cache path without triggering sync
|
1154
|
+
@property # type: ignore
|
1155
|
+
def _cache_path(self) -> UPath:
|
1156
|
+
filepath, cache_key = filepath_cache_key_from_artifact(
|
1157
|
+
self, using_key=settings._using_key
|
1158
|
+
)
|
1159
|
+
if isinstance(filepath, LocalPathClasses):
|
1160
|
+
return filepath
|
1161
|
+
return setup_settings.instance.storage.cloud_to_local_no_update(
|
1162
|
+
filepath, cache_key=cache_key
|
1163
|
+
)
|
1138
1164
|
|
1139
1165
|
|
1140
1166
|
# docstring handled through attach_func_to_class_method
|
@@ -1173,6 +1199,7 @@ for name in METHOD_NAMES:
|
|
1173
1199
|
# privates currently dealt with separately
|
1174
1200
|
Artifact._delete_skip_storage = _delete_skip_storage
|
1175
1201
|
Artifact._save_skip_storage = _save_skip_storage
|
1202
|
+
Artifact._cache_path = _cache_path
|
1176
1203
|
Artifact.path = path
|
1177
1204
|
Artifact.describe = describe
|
1178
1205
|
Artifact.view_lineage = view_lineage
|
@@ -211,6 +211,7 @@ def mapped(
|
|
211
211
|
layers_keys: str | list[str] | None = None,
|
212
212
|
obs_keys: str | list[str] | None = None,
|
213
213
|
obsm_keys: str | list[str] | None = None,
|
214
|
+
obs_filter: tuple[str, str | tuple[str, ...]] | None = None,
|
214
215
|
join: Literal["inner", "outer"] | None = "inner",
|
215
216
|
encode_labels: bool | list[str] = True,
|
216
217
|
unknown_label: str | dict[str, str] | None = None,
|
@@ -239,6 +240,7 @@ def mapped(
|
|
239
240
|
layers_keys,
|
240
241
|
obs_keys,
|
241
242
|
obsm_keys,
|
243
|
+
obs_filter,
|
242
244
|
join,
|
243
245
|
encode_labels,
|
244
246
|
unknown_label,
|
@@ -17,6 +17,7 @@ from lnschema_core.models import Artifact, Record
|
|
17
17
|
|
18
18
|
from lamindb.core._settings import settings
|
19
19
|
from lamindb.core.storage.paths import (
|
20
|
+
_cache_key_from_artifact_storage,
|
20
21
|
attempt_accessing_path,
|
21
22
|
auto_storage_key_from_artifact,
|
22
23
|
delete_storage_using_key,
|
@@ -135,7 +136,7 @@ def check_and_attempt_upload(
|
|
135
136
|
# a local env it will have a _local_filepath and needs to be uploaded
|
136
137
|
if hasattr(artifact, "_local_filepath"):
|
137
138
|
try:
|
138
|
-
storage_path = upload_artifact(
|
139
|
+
storage_path, cache_path = upload_artifact(
|
139
140
|
artifact,
|
140
141
|
using_key,
|
141
142
|
access_token=access_token,
|
@@ -146,7 +147,7 @@ def check_and_attempt_upload(
|
|
146
147
|
return exception
|
147
148
|
# copies (if on-disk) or moves the temporary file (if in-memory) to the cache
|
148
149
|
if os.getenv("LAMINDB_MULTI_INSTANCE") is None:
|
149
|
-
copy_or_move_to_cache(artifact, storage_path)
|
150
|
+
copy_or_move_to_cache(artifact, storage_path, cache_path)
|
150
151
|
# after successful upload, we should remove the attribute so that another call
|
151
152
|
# call to save won't upload again, the user should call replace() then
|
152
153
|
del artifact._local_filepath
|
@@ -154,7 +155,9 @@ def check_and_attempt_upload(
|
|
154
155
|
return None
|
155
156
|
|
156
157
|
|
157
|
-
def copy_or_move_to_cache(
|
158
|
+
def copy_or_move_to_cache(
|
159
|
+
artifact: Artifact, storage_path: UPath, cache_path: UPath | None
|
160
|
+
):
|
158
161
|
local_path = artifact._local_filepath
|
159
162
|
|
160
163
|
# in-memory cases
|
@@ -166,7 +169,7 @@ def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
|
|
166
169
|
cache_dir = settings._storage_settings.cache_dir
|
167
170
|
|
168
171
|
# just delete from the cache dir if storage_path is local
|
169
|
-
if
|
172
|
+
if cache_path is None:
|
170
173
|
if (
|
171
174
|
local_path.as_posix() != storage_path.as_posix()
|
172
175
|
and cache_dir in local_path.parents
|
@@ -176,11 +179,12 @@ def copy_or_move_to_cache(artifact: Artifact, storage_path: UPath):
|
|
176
179
|
else:
|
177
180
|
local_path.unlink()
|
178
181
|
return None
|
179
|
-
|
180
|
-
cache_path = settings._storage_settings.cloud_to_local_no_update(storage_path)
|
182
|
+
# non-local storage_path further
|
181
183
|
if local_path != cache_path:
|
182
184
|
cache_path.parent.mkdir(parents=True, exist_ok=True)
|
183
185
|
if cache_dir in local_path.parents:
|
186
|
+
if cache_path.is_dir():
|
187
|
+
shutil.rmtree(cache_path)
|
184
188
|
local_path.replace(cache_path)
|
185
189
|
else:
|
186
190
|
if is_dir:
|
@@ -280,11 +284,11 @@ def upload_artifact(
|
|
280
284
|
using_key: str | None = None,
|
281
285
|
access_token: str | None = None,
|
282
286
|
print_progress: bool = True,
|
283
|
-
) -> UPath:
|
287
|
+
) -> tuple[UPath, UPath | None]:
|
284
288
|
"""Store and add file and its linked entries."""
|
285
289
|
# can't currently use filepath_from_artifact here because it resolves to ._local_filepath
|
286
290
|
storage_key = auto_storage_key_from_artifact(artifact)
|
287
|
-
storage_path = attempt_accessing_path(
|
291
|
+
storage_path, storage_settings = attempt_accessing_path(
|
288
292
|
artifact, storage_key, using_key=using_key, access_token=access_token
|
289
293
|
)
|
290
294
|
if hasattr(artifact, "_to_store") and artifact._to_store:
|
@@ -292,4 +296,13 @@ def upload_artifact(
|
|
292
296
|
store_file_or_folder(
|
293
297
|
artifact._local_filepath, storage_path, print_progress=print_progress
|
294
298
|
)
|
295
|
-
|
299
|
+
|
300
|
+
if isinstance(storage_path, LocalPathClasses):
|
301
|
+
cache_path = None
|
302
|
+
else:
|
303
|
+
cache_key = _cache_key_from_artifact_storage(artifact, storage_settings)
|
304
|
+
cache_path = storage_settings.cloud_to_local_no_update(
|
305
|
+
storage_path, cache_key=cache_key
|
306
|
+
)
|
307
|
+
|
308
|
+
return storage_path, cache_path
|
@@ -450,11 +450,11 @@ class Context:
|
|
450
450
|
self._logging_message += f"created Transform(uid='{transform.uid}')"
|
451
451
|
else:
|
452
452
|
uid = transform.uid
|
453
|
-
# check whether the transform
|
453
|
+
# check whether the transform.key is consistent
|
454
454
|
if transform.key != key:
|
455
455
|
suid = transform.stem_uid
|
456
456
|
new_suid = ids.base62_12()
|
457
|
-
transform_type = "
|
457
|
+
transform_type = "notebook" if is_run_from_ipython else "script"
|
458
458
|
note = message_update_key_in_version_family(
|
459
459
|
suid=suid,
|
460
460
|
existing_key=transform.key,
|
@@ -462,7 +462,7 @@ class Context:
|
|
462
462
|
registry="Transform",
|
463
463
|
)
|
464
464
|
raise UpdateContext(
|
465
|
-
f"{
|
465
|
+
f'\n✗ Filename "{key}" clashes with the existing key "{transform.key}" for uid "{transform.uid[:-4]}...."\n\nEither init a new transform with a new uid:\n\n'
|
466
466
|
f'ln.context.uid = "{new_suid}0000"\n\n{note}'
|
467
467
|
)
|
468
468
|
elif transform.name != name:
|
@@ -41,7 +41,7 @@ if TYPE_CHECKING:
|
|
41
41
|
|
42
42
|
|
43
43
|
WARNING_RUN_TRANSFORM = (
|
44
|
-
"no run & transform got linked, call `ln.context.track()` & re-run
|
44
|
+
"no run & transform got linked, call `ln.context.track()` & re-run"
|
45
45
|
)
|
46
46
|
|
47
47
|
WARNING_NO_INPUT = "run input wasn't tracked, call `ln.context.track()` and re-run"
|