lamindb 0.76.3__tar.gz → 0.76.5__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.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/config.yml +1 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/PKG-INFO +7 -7
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/api.md +3 -17
- lamindb-0.76.5/docs/laminr.md +3 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/tutorial.ipynb +1 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/__init__.py +6 -9
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_artifact.py +43 -30
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_can_validate.py +20 -4
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_curate.py +23 -6
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_finish.py +117 -106
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_query_set.py +41 -33
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_record.py +3 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_transform.py +5 -3
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/__init__.py +0 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_context.py +71 -37
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_label_manager.py +1 -3
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_anndata_accessor.py +6 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_tiledbsoma.py +24 -20
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/versioning.py +4 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/integrations/_vitessce.py +9 -15
- {lamindb-0.76.3 → lamindb-0.76.5}/noxfile.py +2 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/pyproject.toml +7 -7
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/__init__.py +1 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/__init__.py +8 -21
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/models.py +4 -4
- lamindb-0.76.5/sub/lamin-cli/LICENSE +201 -0
- lamindb-0.76.5/sub/lamin-cli/lamin_cli/__init__.py +3 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/__main__.py +43 -14
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_cache.py +1 -1
- lamindb-0.76.5/sub/lamin-cli/lamin_cli/_get.py +66 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_save.py +3 -7
- lamindb-0.76.5/sub/lamin-cli/tests/test_cli.py +42 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_notebooks.py +69 -26
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_scripts.py +22 -6
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.github/workflows/build.yml +7 -7
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +16 -12
- lamindb-0.76.5/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +140 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +8 -15
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +7 -7
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/notebooks.md +1 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/__init__.py +10 -7
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +11 -4
- lamindb-0.76.5/sub/lamindb-setup/lamindb_setup/_entry_points.py +22 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +31 -11
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_setup_user.py +55 -39
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +11 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +56 -5
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +13 -8
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +1 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +3 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +3 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/noxfile.py +1 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +9 -0
- lamindb-0.76.5/sub/lamindb-setup/tests/hub-cloud/test_login.py +67 -0
- lamindb-0.76.5/sub/lamindb-setup/tests/storage/test_entry_point.py +76 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/__init__.py +1 -1
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/models.py +36 -40
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +2 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +2 -2
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_artifact.py +14 -5
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_context.py +8 -4
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_curate.py +25 -8
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/storage/test_storage.py +5 -0
- lamindb-0.76.3/docs/readfcs.md +0 -3
- lamindb-0.76.3/sub/lamin-cli/lamin_cli/__init__.py +0 -3
- lamindb-0.76.3/sub/lamin-cli/lamin_cli/_get.py +0 -44
- lamindb-0.76.3/sub/lamin-cli/tests/test_cli.py +0 -16
- lamindb-0.76.3/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -19
- {lamindb-0.76.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.github/workflows/build.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.gitmodules +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/CONTRIBUTING.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/LICENSE +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/arrays.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/bio-registries.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/bionty.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/changelog.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate-any.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate-df.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/curate.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/acid.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/delete.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/import-schema.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/key.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/setup.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq/visibility.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/faq.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/guide.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/features-lamindb.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/features-laminhub.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/includes/installation.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/index.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/introduction.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/lamindb.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/query-search.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/records.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/rest.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/schemas.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/setup.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/signup-login.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/iris.data +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/upload.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/storage.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/track.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/transfer.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/tutorial2.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/docs/wetlab.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_collection.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_feature.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_feature_set.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_filter.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_from_values.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_is_versioned.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_parents.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_query_manager.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_run.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_save.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_ulabel.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_utils.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/_view.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_data.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_feature_manager.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_sync_git.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/_track_environment.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/_core.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/exceptions.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/fields.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/schema.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/objects.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/storage/paths.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/subsettings/_transform_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/core/types.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/integrations/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/setup/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/LICENSE +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/_bionty.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_display_sources.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_ontology.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_public_ontology.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/_sync_sources.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_io.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/dev/_md5.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_disease.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_drug.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_gene.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_organism.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_protein.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/determine_md5s.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/scripts/upload_new_ontologies.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/base/sources.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_add_ontology.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_bionty.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/core/_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/ids.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0023_rename_publicsource_encode_uid.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0024_remove_cellline_collections_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0025_artifactcellline_alter_cellline_artifacts_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0026_artifactcellline_cell_line_ref_is_name_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0027_remove_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0028_artifactcellline_created_at_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/bionty/migrations/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/concepts.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/config.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/extend.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/guide.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/index.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/docs/reference.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/lamin-project.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/noxfile.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/pyproject.toml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/dev/test_handle_sources.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/dev/test_io.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_bfxpipeline.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_biosample.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_cellline.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_cellmarker.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_celltype.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_developmentalstage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_disease.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_drug.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_ethnicity.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_experimentalfactor.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_gene.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_organism.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_pathway.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_phenotype.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_protein.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/entities/test_tissue.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_bionty.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_lamindb.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_md5.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/bionty/tests/test_ontology.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/conftest.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_get.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_migrate.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_multi_process.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamin-cli/tests/test_save_files.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/changelog.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_close.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_aws_credentials.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.github/workflows/build.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/CHANGELOG.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/LICENSE +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/ids.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0037_rename_dataset_to_collection.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0038_alter_collection_artifact_alter_collection_artifacts_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0039_remove_collection_artifacts_collectionartifact_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0040_alter_transform_type.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0041_remove_transform_short_name_transform_description_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0042_rename_run_at_run_started_at_run_finished_at.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0043_run_json.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0044_run_replicated_outputs_transform_ulabels_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0045_rename_replicated_outputs_run_replicated_output_artifacts_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0046_storage_instance_uid.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0047_featurevalue_artifactfeaturevalue_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0048_alter_artifactulabel_feature_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0049_rename_type_feature_dtype_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0050_artifactfeatureset_feature_ref_is_semantic_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0051_remove_feature_feature_sets_featuresetfeature_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0052_rename_feature_value_artifactfeaturevalue_featurevalue_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0052_squashed.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0053_alter_featureset_hash_alter_paramvalue_created_by_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0054_alter_feature_previous_runs_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0055_artifact_type_artifactparamvalue_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/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.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0057_link_models_latest_report_and_others.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0058_artifact__actions_collection__actions.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0059_alter_artifact__accessor_alter_artifact__hash_type_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0060_alter_artifact__actions.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0061_alter_collection_meta_artifact_alter_run_environment_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0062_add_is_latest_field.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0063_populate_latest_field.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/0064_alter_artifact_version_alter_collection_version_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/migrations/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/mocks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/types.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/lnschema_core/users.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/noxfile.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/pyproject.toml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/conftest.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_integrity.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_models.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/lnschema-core/tests/test_types.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.github/workflows/build.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.gitignore +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/.pre-commit-config.yaml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/README.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/changelog.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide/get-started.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide/modeling_perturbations.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/guide.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/index.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/docs/reference.md +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/noxfile.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/pyproject.toml +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/tests/test_integrity.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/tests/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0017_remove_biosample_artifacts.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0018_squashed.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0018_well_created_at_well_created_by_well_updated_at.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0019_alter_treatment_system.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0020_treatmenttarget_pathways_treatmenttarget_proteins_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/0021_alter_compoundtreatment_duration_unit_and_more.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/sub/wetlab/wetlab/models.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/conftest.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/notebooks/not-initialized.ipynb +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_artifact_folders.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_cache.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_can_validate.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_collection.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_data.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_db.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_delete.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature_manager.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_feature_set.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_from_values.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_label_manager.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_load.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_manager.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_notebooks.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_parents.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_queryset.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_record.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_run.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_save.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_search.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_settings.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_transfer.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_transform.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_uid.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_ulabel.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_versioning.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_view.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/core/test_visibility.py +0 -0
- {lamindb-0.76.3 → lamindb-0.76.5}/tests/storage/conftest.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.5
|
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,22 +9,22 @@ 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.73.
|
13
|
-
Requires-Dist: lamindb_setup==0.
|
12
|
+
Requires-Dist: lnschema_core==0.73.5
|
13
|
+
Requires-Dist: lamindb_setup==0.77.1
|
14
14
|
Requires-Dist: lamin_utils==0.13.4
|
15
|
-
Requires-Dist: lamin_cli==0.
|
15
|
+
Requires-Dist: lamin_cli==0.17.1
|
16
16
|
Requires-Dist: rapidfuzz
|
17
17
|
Requires-Dist: pyarrow
|
18
18
|
Requires-Dist: typing_extensions!=4.6.0
|
19
19
|
Requires-Dist: python-dateutil
|
20
|
-
Requires-Dist: anndata>=0.8.0,<=0.10.
|
20
|
+
Requires-Dist: anndata>=0.8.0,<=0.10.9
|
21
21
|
Requires-Dist: scipy<1.13.0rc1
|
22
22
|
Requires-Dist: fsspec
|
23
23
|
Requires-Dist: pandas
|
24
24
|
Requires-Dist: graphviz
|
25
25
|
Requires-Dist: psycopg2-binary
|
26
26
|
Requires-Dist: lamindb_setup[aws] ; extra == "aws"
|
27
|
-
Requires-Dist: bionty==0.49.
|
27
|
+
Requires-Dist: bionty==0.49.1 ; extra == "bionty"
|
28
28
|
Requires-Dist: pre-commit ; extra == "dev"
|
29
29
|
Requires-Dist: nox ; extra == "dev"
|
30
30
|
Requires-Dist: laminci>=0.3 ; extra == "dev"
|
@@ -38,7 +38,7 @@ Requires-Dist: django-schema-graph ; extra == "erdiagram"
|
|
38
38
|
Requires-Dist: readfcs>=1.1.8 ; extra == "fcs"
|
39
39
|
Requires-Dist: lamindb_setup[gcp] ; extra == "gcp"
|
40
40
|
Requires-Dist: nbproject==0.10.4 ; extra == "jupyter"
|
41
|
-
Requires-Dist:
|
41
|
+
Requires-Dist: jupytext ; extra == "jupyter"
|
42
42
|
Requires-Dist: nbconvert ; extra == "jupyter"
|
43
43
|
Requires-Dist: zarr>=2.16.0 ; extra == "zarr"
|
44
44
|
Project-URL: Home, https://github.com/laminlabs/lamindb
|
@@ -12,33 +12,19 @@ cli
|
|
12
12
|
|
13
13
|
```{toctree}
|
14
14
|
:maxdepth: 1
|
15
|
-
:caption:
|
15
|
+
:caption: Python
|
16
16
|
:hidden:
|
17
17
|
|
18
18
|
lamindb
|
19
|
-
```
|
20
|
-
|
21
|
-
```{toctree}
|
22
|
-
:maxdepth: 1
|
23
|
-
:caption: Plugins
|
24
|
-
:hidden:
|
25
|
-
|
26
19
|
bionty
|
27
20
|
wetlab
|
28
21
|
```
|
29
22
|
|
30
23
|
```{toctree}
|
31
24
|
:maxdepth: 1
|
32
|
-
:caption:
|
25
|
+
:caption: R & REST
|
33
26
|
:hidden:
|
34
27
|
|
28
|
+
laminr
|
35
29
|
rest
|
36
30
|
```
|
37
|
-
|
38
|
-
```{toctree}
|
39
|
-
:maxdepth: 1
|
40
|
-
:caption: Utilities
|
41
|
-
:hidden:
|
42
|
-
|
43
|
-
readfcs
|
44
|
-
```
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"""A data framework for biology.
|
2
2
|
|
3
|
-
|
4
|
-
=======
|
3
|
+
Core registries.
|
5
4
|
|
6
5
|
.. autosummary::
|
7
6
|
:toctree: .
|
@@ -17,8 +16,7 @@ Records
|
|
17
16
|
FeatureSet
|
18
17
|
Param
|
19
18
|
|
20
|
-
Key functionality
|
21
|
-
=================
|
19
|
+
Key functionality.
|
22
20
|
|
23
21
|
.. autosummary::
|
24
22
|
:toctree: .
|
@@ -29,8 +27,7 @@ Key functionality
|
|
29
27
|
view
|
30
28
|
save
|
31
29
|
|
32
|
-
Modules
|
33
|
-
==================
|
30
|
+
Modules and settings.
|
34
31
|
|
35
32
|
.. autosummary::
|
36
33
|
:toctree: .
|
@@ -44,7 +41,7 @@ Modules & settings
|
|
44
41
|
"""
|
45
42
|
|
46
43
|
# denote a release candidate for 0.1.0 with 0.1rc1, 0.1a1, 0.1b1, etc.
|
47
|
-
__version__ = "0.76.
|
44
|
+
__version__ = "0.76.5"
|
48
45
|
|
49
46
|
import os as _os
|
50
47
|
|
@@ -111,6 +108,6 @@ if _check_instance_setup(from_lamindb=True):
|
|
111
108
|
track = context.track # backward compat
|
112
109
|
finish = context.finish # backward compat
|
113
110
|
Curate = Curator # backward compat
|
114
|
-
settings.__doc__ = """Global :class:`~lamindb.core.Settings
|
115
|
-
context.__doc__ = """Global :class:`~lamindb.core.Context
|
111
|
+
settings.__doc__ = """Global settings (:class:`~lamindb.core.Settings`)."""
|
112
|
+
context.__doc__ = """Global run context (:class:`~lamindb.core.Context`)."""
|
116
113
|
from django.db.models import Q
|
@@ -366,11 +366,6 @@ def get_artifact_kwargs_from_data(
|
|
366
366
|
else:
|
367
367
|
storage = default_storage
|
368
368
|
|
369
|
-
# for now comment out this error to allow creating new versions of stores
|
370
|
-
# in the default folder (.lamindb)
|
371
|
-
# if key is not None and key.startswith(AUTO_KEY_PREFIX):
|
372
|
-
# raise ValueError(f"Key cannot start with {AUTO_KEY_PREFIX}")
|
373
|
-
|
374
369
|
log_storage_hint(
|
375
370
|
check_path_in_storage=check_path_in_storage,
|
376
371
|
storage=storage,
|
@@ -542,10 +537,10 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
542
537
|
else VisibilityChoice.default.value
|
543
538
|
)
|
544
539
|
format = kwargs.pop("format") if "format" in kwargs else None
|
540
|
+
_is_internal_call = kwargs.pop("_is_internal_call", False)
|
545
541
|
skip_check_exists = (
|
546
542
|
kwargs.pop("skip_check_exists") if "skip_check_exists" in kwargs else False
|
547
543
|
)
|
548
|
-
_uid = kwargs.pop("_uid", None)
|
549
544
|
if "default_storage" in kwargs:
|
550
545
|
default_storage = kwargs.pop("default_storage")
|
551
546
|
else:
|
@@ -561,9 +556,6 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
561
556
|
if "is_new_version_of" in kwargs:
|
562
557
|
logger.warning("`is_new_version_of` will be removed soon, please use `revises`")
|
563
558
|
revises = kwargs.pop("is_new_version_of")
|
564
|
-
assert not ( # noqa: S101
|
565
|
-
revises is not None and _uid is not None
|
566
|
-
), "Can not init with both `revises` and `_uid`"
|
567
559
|
if not len(kwargs) == 0:
|
568
560
|
raise ValueError(
|
569
561
|
"Only data, key, run, description, version, revises, visibility"
|
@@ -579,15 +571,29 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
579
571
|
raise ValueError(
|
580
572
|
f"`key` is {key}, but `revises.key` is '{revises.key}'\n\n Either do *not* pass `key`.\n\n{note}"
|
581
573
|
)
|
582
|
-
if _uid is not None:
|
583
|
-
provisional_uid, revises = _uid, None
|
584
|
-
else:
|
585
|
-
provisional_uid, revises = create_uid(revises=revises, version=version)
|
586
574
|
if revises is not None:
|
587
575
|
if not isinstance(revises, Artifact):
|
588
576
|
raise TypeError("`revises` has to be of type `Artifact`")
|
589
577
|
if description is None:
|
590
578
|
description = revises.description
|
579
|
+
if key is not None and AUTO_KEY_PREFIX in key:
|
580
|
+
raise ValueError(
|
581
|
+
f"Do not pass key that contains a managed storage path in `{AUTO_KEY_PREFIX}`"
|
582
|
+
)
|
583
|
+
# below is for internal calls that require defining the storage location
|
584
|
+
# ahead of constructing the Artifact
|
585
|
+
if isinstance(data, (str, Path)) and AUTO_KEY_PREFIX in str(data):
|
586
|
+
if _is_internal_call:
|
587
|
+
is_automanaged_path = True
|
588
|
+
user_provided_key = key
|
589
|
+
key = None
|
590
|
+
else:
|
591
|
+
raise ValueError(
|
592
|
+
f"Do not pass path inside the `{AUTO_KEY_PREFIX}` directory."
|
593
|
+
)
|
594
|
+
else:
|
595
|
+
is_automanaged_path = False
|
596
|
+
provisional_uid, revises = create_uid(revises=revises, version=version)
|
591
597
|
kwargs_or_artifact, privates = get_artifact_kwargs_from_data(
|
592
598
|
data=data,
|
593
599
|
key=key,
|
@@ -615,16 +621,29 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
615
621
|
else:
|
616
622
|
kwargs = kwargs_or_artifact
|
617
623
|
|
624
|
+
if data is not None:
|
625
|
+
artifact._local_filepath = privates["local_filepath"]
|
626
|
+
artifact._cloud_filepath = privates["cloud_filepath"]
|
627
|
+
artifact._memory_rep = privates["memory_rep"]
|
628
|
+
artifact._to_store = not privates["check_path_in_storage"]
|
629
|
+
|
630
|
+
if is_automanaged_path and _is_internal_call:
|
631
|
+
kwargs["_key_is_virtual"] = True
|
632
|
+
assert AUTO_KEY_PREFIX in kwargs["key"] # noqa: S101
|
633
|
+
uid = kwargs["key"].replace(AUTO_KEY_PREFIX, "").replace(kwargs["suffix"], "")
|
634
|
+
kwargs["key"] = user_provided_key
|
635
|
+
if revises is not None:
|
636
|
+
assert uid.startswith(revises.stem_uid) # noqa: S101
|
637
|
+
if len(uid) == 16:
|
638
|
+
if revises is None:
|
639
|
+
uid += "0000"
|
640
|
+
else:
|
641
|
+
uid, revises = create_uid(revises=revises, version=version)
|
642
|
+
kwargs["uid"] = uid
|
643
|
+
|
618
644
|
# only set key now so that we don't do a look-up on it in case revises is passed
|
619
645
|
if revises is not None:
|
620
646
|
kwargs["key"] = revises.key
|
621
|
-
# in case we have a new version of a folder with a different hash, print a
|
622
|
-
# warning that the old version can't be recovered
|
623
|
-
if revises is not None and revises.n_objects is not None and revises.n_objects > 1:
|
624
|
-
logger.warning(
|
625
|
-
f"artifact version {version} will _update_ the state of folder {revises.path} - "
|
626
|
-
"to _retain_ the old state by duplicating the entire folder, do _not_ pass `revises`"
|
627
|
-
)
|
628
647
|
|
629
648
|
kwargs["type"] = type
|
630
649
|
kwargs["version"] = version
|
@@ -643,12 +662,6 @@ def __init__(artifact: Artifact, *args, **kwargs):
|
|
643
662
|
|
644
663
|
add_transform_to_kwargs(kwargs, kwargs["run"])
|
645
664
|
|
646
|
-
if data is not None:
|
647
|
-
artifact._local_filepath = privates["local_filepath"]
|
648
|
-
artifact._cloud_filepath = privates["cloud_filepath"]
|
649
|
-
artifact._memory_rep = privates["memory_rep"]
|
650
|
-
artifact._to_store = not privates["check_path_in_storage"]
|
651
|
-
|
652
665
|
super(Artifact, artifact).__init__(**kwargs)
|
653
666
|
|
654
667
|
|
@@ -943,10 +956,9 @@ def open(
|
|
943
956
|
if self.hash != hash:
|
944
957
|
from ._record import init_self_from_db
|
945
958
|
|
946
|
-
|
947
|
-
|
948
|
-
)
|
949
|
-
new_version = Artifact(filepath, revises=self).save()
|
959
|
+
new_version = Artifact(
|
960
|
+
filepath, revises=self, _is_internal_call=True
|
961
|
+
).save()
|
950
962
|
init_self_from_db(self, new_version)
|
951
963
|
|
952
964
|
if localpath != filepath and localpath.exists():
|
@@ -1174,3 +1186,4 @@ Artifact._delete_skip_storage = _delete_skip_storage
|
|
1174
1186
|
Artifact._save_skip_storage = _save_skip_storage
|
1175
1187
|
Artifact.path = path
|
1176
1188
|
Artifact.backed = backed
|
1189
|
+
Artifact.view_lineage = HasFeatures.view_lineage
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from typing import TYPE_CHECKING,
|
3
|
+
from typing import TYPE_CHECKING, Literal
|
4
4
|
|
5
5
|
import lamindb_setup as ln_setup
|
6
6
|
import numpy as np
|
@@ -79,6 +79,19 @@ def _check_organism_db(organism: Record, using_key: str | None):
|
|
79
79
|
)
|
80
80
|
|
81
81
|
|
82
|
+
def _concat_lists(values: ListLike) -> list[str]:
|
83
|
+
"""Concatenate a list of lists of strings into a single list."""
|
84
|
+
if len(values) > 0 and isinstance(values, (list, pd.Series)):
|
85
|
+
try:
|
86
|
+
if isinstance(values[0], list):
|
87
|
+
if isinstance(values, pd.Series):
|
88
|
+
values = values.tolist()
|
89
|
+
values = sum([v for v in values if isinstance(v, list)], [])
|
90
|
+
except KeyError:
|
91
|
+
pass
|
92
|
+
return values
|
93
|
+
|
94
|
+
|
82
95
|
def _inspect(
|
83
96
|
cls,
|
84
97
|
values: ListLike,
|
@@ -94,6 +107,7 @@ def _inspect(
|
|
94
107
|
|
95
108
|
if isinstance(values, str):
|
96
109
|
values = [values]
|
110
|
+
values = _concat_lists(values)
|
97
111
|
|
98
112
|
field = get_name_field(cls, field=field)
|
99
113
|
queryset = _queryset(cls, using_key)
|
@@ -184,6 +198,7 @@ def _validate(
|
|
184
198
|
return_str = True if isinstance(values, str) else False
|
185
199
|
if isinstance(values, str):
|
186
200
|
values = [values]
|
201
|
+
values = _concat_lists(values)
|
187
202
|
|
188
203
|
field = get_name_field(cls, field=field)
|
189
204
|
|
@@ -229,7 +244,7 @@ def _validate(
|
|
229
244
|
@doc_args(CanValidate.standardize.__doc__)
|
230
245
|
def standardize(
|
231
246
|
cls,
|
232
|
-
values:
|
247
|
+
values: ListLike,
|
233
248
|
field: str | StrField | None = None,
|
234
249
|
*,
|
235
250
|
return_field: str = None,
|
@@ -295,7 +310,7 @@ def remove_synonym(self, synonym: str | ListLike):
|
|
295
310
|
|
296
311
|
def _standardize(
|
297
312
|
cls,
|
298
|
-
values:
|
313
|
+
values: ListLike,
|
299
314
|
field: str | StrField | None = None,
|
300
315
|
*,
|
301
316
|
return_field: str = None,
|
@@ -315,6 +330,7 @@ def _standardize(
|
|
315
330
|
return_str = True if isinstance(values, str) else False
|
316
331
|
if isinstance(values, str):
|
317
332
|
values = [values]
|
333
|
+
values = _concat_lists(values)
|
318
334
|
|
319
335
|
field = get_name_field(cls, field=field)
|
320
336
|
return_field = get_name_field(
|
@@ -416,7 +432,7 @@ def _standardize(
|
|
416
432
|
|
417
433
|
|
418
434
|
def _add_or_remove_synonyms(
|
419
|
-
synonym: str |
|
435
|
+
synonym: str | ListLike,
|
420
436
|
record: Record,
|
421
437
|
action: Literal["add", "remove"],
|
422
438
|
force: bool = False,
|
@@ -144,6 +144,7 @@ class DataFrameCurator(BaseCurator):
|
|
144
144
|
organism: str | None = None,
|
145
145
|
sources: dict[str, Record] | None = None,
|
146
146
|
exclude: dict | None = None,
|
147
|
+
check_valid_keys: bool = True,
|
147
148
|
) -> None:
|
148
149
|
from lamindb.core._settings import settings
|
149
150
|
|
@@ -163,6 +164,8 @@ class DataFrameCurator(BaseCurator):
|
|
163
164
|
exclude = {}
|
164
165
|
self._exclude = exclude
|
165
166
|
self._non_validated = None
|
167
|
+
if check_valid_keys:
|
168
|
+
self._check_valid_keys()
|
166
169
|
self._save_columns()
|
167
170
|
|
168
171
|
@property
|
@@ -191,14 +194,25 @@ class DataFrameCurator(BaseCurator):
|
|
191
194
|
using_key=using_key or self._using_key,
|
192
195
|
)
|
193
196
|
|
197
|
+
def _check_valid_keys(self, extra: set = None) -> None:
|
198
|
+
if extra is None:
|
199
|
+
extra = set()
|
200
|
+
for name, d in {
|
201
|
+
"categoricals": self._fields,
|
202
|
+
"sources": self._sources,
|
203
|
+
"exclude": self._exclude,
|
204
|
+
}.items():
|
205
|
+
if not isinstance(d, dict):
|
206
|
+
raise TypeError(f"{name} must be a dictionary!")
|
207
|
+
valid_keys = set(self._df.columns) | {"columns"} | extra
|
208
|
+
nonval_keys = [key for key in d.keys() if key not in valid_keys]
|
209
|
+
if len(nonval_keys) > 0:
|
210
|
+
raise ValueError(
|
211
|
+
f"the following keys passed to {name} are not allowed: {nonval_keys}"
|
212
|
+
)
|
213
|
+
|
194
214
|
def _save_columns(self, validated_only: bool = True, **kwargs) -> None:
|
195
215
|
"""Save column name records."""
|
196
|
-
missing_columns = set(self.fields.keys()) - set(self._df.columns)
|
197
|
-
if missing_columns:
|
198
|
-
raise ValueError(
|
199
|
-
f"Columns {missing_columns} are not found in the data object!"
|
200
|
-
)
|
201
|
-
|
202
216
|
# Always save features specified as the fields keys
|
203
217
|
update_registry(
|
204
218
|
values=list(self.fields.keys()),
|
@@ -426,8 +440,10 @@ class AnnDataCurator(DataFrameCurator):
|
|
426
440
|
organism=organism,
|
427
441
|
sources=sources,
|
428
442
|
exclude=exclude,
|
443
|
+
check_valid_keys=False,
|
429
444
|
)
|
430
445
|
self._obs_fields = categoricals
|
446
|
+
self._check_valid_keys(extra={"var_index"})
|
431
447
|
|
432
448
|
@property
|
433
449
|
def var_index(self) -> FieldAttr:
|
@@ -633,6 +649,7 @@ class MuDataCurator:
|
|
633
649
|
verbosity=verbosity,
|
634
650
|
sources=self._sources.get(modality),
|
635
651
|
exclude=self._exclude.get(modality),
|
652
|
+
check_valid_keys=False,
|
636
653
|
**self._kwargs,
|
637
654
|
)
|
638
655
|
for modality in self._modalities
|