lamindb 1.5.0__tar.gz → 1.5.2__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-1.5.0 → lamindb-1.5.2}/.github/workflows/build.yml +2 -2
- {lamindb-1.5.0 → lamindb-1.5.2}/.pre-commit-config.yaml +2 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/PKG-INFO +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/arrays.ipynb +15 -8
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/curate.ipynb +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/anndata-accessor.ipynb +2 -2
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/__init__.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_context.py +28 -15
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_tiledbsoma.py +29 -13
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/core.py +33 -43
- lamindb-1.5.2/lamindb/migrations/0093_alter_schemacomponent_unique_together.py +16 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_feature_manager.py +24 -8
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/artifact.py +10 -11
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/has_parents.py +67 -12
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/query_set.py +3 -2
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/record.py +3 -4
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/schema.py +23 -28
- {lamindb-1.5.0 → lamindb-1.5.2}/noxfile.py +2 -6
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/conftest.py +4 -4
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_files.py +2 -2
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_notebooks.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_scripts.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/conftest.py +4 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_collection.py +4 -13
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_feature.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_load.py +10 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_curators_examples.py +16 -9
- {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/.gitmodules +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/CONTRIBUTING.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/api.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/bio-registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/bionty.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/clinicore.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/acid.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/curate-any.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/delete.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/import-modules.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/pydantic-pandera.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/search.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/setup.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/symbol-mapping.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/validate-fields.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq/visibility.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/faq.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/includes/installation.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/lamindb.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/query-search.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate-mudata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_anndata_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_dataframe_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_dataframe_minimal_errors.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/curate_spatialdata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_mini_immuno_features_labels.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_mini_immuno_schema_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_schema_anndata_ensembl_gene_ids_and_valid_features_in_obs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_schema_spatialdata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/define_valid_features.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/ingest_mini_immuno_datasets.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-track-and-finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-track-with-params.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/run-workflow.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/scripts/synced-with-git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/iris.data +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/upload.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/storage.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/track.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/transfer.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/docs/wetlab.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_tracked.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/_view.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/fields.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/ids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/uids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/base/users.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_compat.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_sync_git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/_track_environment.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/_small.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/datasets/mini_immuno.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/exceptions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/loaders.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_anndata_accessor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_polars_lazy_df.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/objects.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/storage/paths.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/_annotation_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/core/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_cellxgene_schemas/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_cellxgene_schemas/schema_versions.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/curators/_legacy.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/errors.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/_anndata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/examples/schemas/_simple.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/integrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0069_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0070_lamindbv1_migrate_data.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0071_lamindbv1_migrate_schema.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0072_remove_user__branch_code_remove_user_aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0073_merge_ourprojects.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0074_lamindbv1_part4.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0075_lamindbv1_part5.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0076_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0077_lamindbv1_part6b.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0078_lamindbv1_part6c.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0079_alter_rundata_value_json_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0080_polish_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0081_revert_textfield_collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0082_alter_feature_dtype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0083_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0084_alter_schemafeature_feature_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0085_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0086_various.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0087_rename__schemas_m2m_artifact_feature_sets_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0088_schema_components.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0089_subsequent_runs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0090_runproject_project_runs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0090_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0091_alter_featurevalue_options_alter_space_options_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/0092_alter_artifactfeaturevalue_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_describe.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_from_values.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_is_versioned.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_label_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/_relations.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/artifact_set.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/can_curate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/feature.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/flextable.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/project.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/query_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/run.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/transform.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/models/ulabel.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/setup/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_biorecord.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_shared_docstrings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_display_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_public_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_doc_util.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/dev/_io.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_disease.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_drug.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_protein.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/base/sources.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_add_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/core/_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/ids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0040_rename_feature_ref_is_symbol_artifactgene_feature_ref_is_name_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0041_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0042_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0043_lamindbv2_part2.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0044_alter_cellline_space_alter_cellmarker_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0045_rename_aux_cellline__aux_rename_aux_cellmarker__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0046_alter_cellline__aux_alter_cellmarker__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0047_lamindbv1_part5.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0048_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0049_alter_schemacellmarker_cellmarker_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0050_alter_source_uid.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/0050_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/bionty/uids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/concepts.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/config.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/dev/test_handle_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/dev/test_io.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_bfxpipeline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_biosample.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_cellline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_cellmarker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_celltype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_developmentalstage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_disease.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_drug.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_ethnicity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_experimentalfactor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_pathway.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_phenotype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_protein.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/entities/test_tissue.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/test_bionty.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/base/test_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_organism_requirement.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/bionty/tests/core/test_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_cxg_rest_api.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_features.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_labels.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/cellxgene_lamin/dev/datasets.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/cellxgene-curate.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/cellxgene.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2023-12-15-LTS.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2024-07-01-LTS.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-07-25.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-11-13.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-12-06.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/census-release-2024-07-01-References.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/files-meta.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/files.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/meta-human.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks/meta-mouse.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/docs/notebooks.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/lamin-project.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/scripts/ensembl_helpers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/cellxgene-lamin/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0001_initial.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0002_biosample_patient_biosample_project.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0003_alter_project_uid.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0004_remove_biosample_project_clinicaltrial_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0005_alter_biosample_created_by_alter_biosample_run_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0006_artifactbiosample_artifactclinicaltrial_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0007_alter_artifactbiosample_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0008_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0009_alter_biosample_space_alter_clinicaltrial_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0010_rename_aux_biosample__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0011_alter_biosample__aux_alter_clinicaltrial__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0012_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/0013_alter_biosample_artifacts.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/clinicore/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/quickstart.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/clinicore/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/compute/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/lamin_cli/compute/modal.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_cli.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_multi_process.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_parse_uid_from_code.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/core/test_save_r_code.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/modal/test_modal.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track-with-params.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track.R +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamin-cli/tests/scripts/run-track.qmd +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_disconnect.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_aws_options.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_edge_request.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/scripts/script-connect-fine-grained-access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_aws_options_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/get-started.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/pert-curator.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide/pert-registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/tests/test_integrity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0025_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0026_alter_biosample_artifacts_alter_techsample_artifacts.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0027_rename_treatment_add_donor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0028_remove_combinationperturbation_compounds_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0029_artifactbiologic_biologic_artifactbiologic_biologic.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0030_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0031_alter_biologic_space_alter_biosample_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0032_rename_aux_biologic__aux_rename_aux_biosample__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0033_alter_biologic__aux_alter_biosample__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0034_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0034_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/0035_alter_biologic_targets_alter_compound_name_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/sub/wetlab/wetlab/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/_dataset_fixtures.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/basic-r-notebook.Rmd.cleaned.html +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/basic-r-notebook.Rmd.html +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/duplicate4/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_artifact.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_artifact_folders.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_can_curate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_data.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_db.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_delete.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_describe_and_df_calls.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_dtype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_feature_label_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_from_values.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_has_parents.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_integrity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_queryset.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_record.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_run.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_schema.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_search.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_track.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_tracked.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_transform.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_ulabel.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_view.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_visibility.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/core/test_zflextables.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_cat_managers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_curators_general.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_cxg_curator.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_dataframe_curators_accounting_example.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/curators/test_pert_curator.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/jwt_utils.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/check_lamin_dev.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/setup_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/scripts/setup_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/permissions/test_permissions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/test_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.2}/tests/storage/test_transfer.py +0 -0
@@ -106,8 +106,8 @@ jobs:
|
|
106
106
|
if: ${{ matrix.group == 'tutorial' || matrix.group == 'guide' || matrix.group == 'biology' || matrix.group == 'faq'}}
|
107
107
|
run: sudo apt-get -y install graphviz
|
108
108
|
|
109
|
-
- run: nox -s lint
|
110
|
-
|
109
|
+
# - run: nox -s lint
|
110
|
+
# if: ${{ matrix.group == 'tutorial' }}
|
111
111
|
|
112
112
|
- run: nox -s "install_ci(group='${{ matrix.group }}')"
|
113
113
|
|
@@ -56,7 +56,14 @@
|
|
56
56
|
"outputs": [],
|
57
57
|
"source": [
|
58
58
|
"!lamin login testuser1\n",
|
59
|
-
"!lamin init --storage s3://lamindb-ci/test-
|
59
|
+
"!lamin init --storage s3://lamindb-ci/test-arrays"
|
60
|
+
]
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"cell_type": "markdown",
|
64
|
+
"metadata": {},
|
65
|
+
"source": [
|
66
|
+
"Import lamindb and track this notebook."
|
60
67
|
]
|
61
68
|
},
|
62
69
|
{
|
@@ -91,8 +98,8 @@
|
|
91
98
|
},
|
92
99
|
"outputs": [],
|
93
100
|
"source": [
|
94
|
-
"ln.Artifact(\"s3://lamindb-ci/
|
95
|
-
"ln.Artifact(\"s3://lamindb-ci/
|
101
|
+
"ln.Artifact(\"s3://lamindb-ci/test-arrays/pbmc68k.h5ad\").save()\n",
|
102
|
+
"ln.Artifact(\"s3://lamindb-ci/test-arrays/testfile.hdf5\").save()"
|
96
103
|
]
|
97
104
|
},
|
98
105
|
{
|
@@ -171,7 +178,7 @@
|
|
171
178
|
"metadata": {},
|
172
179
|
"outputs": [],
|
173
180
|
"source": [
|
174
|
-
"artifact = ln.Artifact.get(key=\"
|
181
|
+
"artifact = ln.Artifact.get(key=\"pbmc68k.h5ad\")"
|
175
182
|
]
|
176
183
|
},
|
177
184
|
{
|
@@ -320,7 +327,7 @@
|
|
320
327
|
"metadata": {},
|
321
328
|
"outputs": [],
|
322
329
|
"source": [
|
323
|
-
"artifact = ln.Artifact.get(key=\"
|
330
|
+
"artifact = ln.Artifact.get(key=\"testfile.hdf5\")"
|
324
331
|
]
|
325
332
|
},
|
326
333
|
{
|
@@ -550,13 +557,13 @@
|
|
550
557
|
"outputs": [],
|
551
558
|
"source": [
|
552
559
|
"# clean up test instance\n",
|
553
|
-
"!lamin delete --force test-
|
560
|
+
"!lamin delete --force test-arrays"
|
554
561
|
]
|
555
562
|
}
|
556
563
|
],
|
557
564
|
"metadata": {
|
558
565
|
"kernelspec": {
|
559
|
-
"display_name": "
|
566
|
+
"display_name": "py312",
|
560
567
|
"language": "python",
|
561
568
|
"name": "python3"
|
562
569
|
},
|
@@ -570,7 +577,7 @@
|
|
570
577
|
"name": "python",
|
571
578
|
"nbconvert_exporter": "python",
|
572
579
|
"pygments_lexer": "ipython3",
|
573
|
-
"version": "3.
|
580
|
+
"version": "3.12.8"
|
574
581
|
},
|
575
582
|
"nbproject": {
|
576
583
|
"id": "YVUCtH4GfQOy",
|
@@ -308,7 +308,7 @@
|
|
308
308
|
"id": "27",
|
309
309
|
"metadata": {},
|
310
310
|
"source": [
|
311
|
-
"The {meth}`~lamindb.curators.Curator.validate` method validates that your dataset adheres to the criteria defined by the `schema`. It identifies which values are already validated (exist in the registries) and which are potentially problematic (do not yet exist in our registries)."
|
311
|
+
"The {meth}`~lamindb.curators.core.Curator.validate` method validates that your dataset adheres to the criteria defined by the `schema`. It identifies which values are already validated (exist in the registries) and which are potentially problematic (do not yet exist in our registries)."
|
312
312
|
]
|
313
313
|
},
|
314
314
|
{
|
@@ -34,7 +34,7 @@
|
|
34
34
|
},
|
35
35
|
"outputs": [],
|
36
36
|
"source": [
|
37
|
-
"ln.Artifact(\"s3://lamindb-ci/
|
37
|
+
"ln.Artifact(\"s3://lamindb-ci/test-anndata/pbmc68k.h5ad\").save()"
|
38
38
|
]
|
39
39
|
},
|
40
40
|
{
|
@@ -50,7 +50,7 @@
|
|
50
50
|
"metadata": {},
|
51
51
|
"outputs": [],
|
52
52
|
"source": [
|
53
|
-
"artifact = ln.Artifact.filter(key=\"
|
53
|
+
"artifact = ln.Artifact.filter(key=\"pbmc68k.h5ad\").one()"
|
54
54
|
]
|
55
55
|
},
|
56
56
|
{
|
@@ -259,8 +259,8 @@ class Context:
|
|
259
259
|
self,
|
260
260
|
transform: str | Transform | None = None,
|
261
261
|
*,
|
262
|
-
project: str | None = None,
|
263
|
-
space: str | None = None,
|
262
|
+
project: str | Project | None = None,
|
263
|
+
space: str | Space | None = None,
|
264
264
|
params: dict | None = None,
|
265
265
|
new_run: bool | None = None,
|
266
266
|
path: str | None = None,
|
@@ -273,9 +273,10 @@ class Context:
|
|
273
273
|
|
274
274
|
Args:
|
275
275
|
transform: A transform (stem) `uid` (or record). If `None`, auto-creates a `transform` with its `uid`.
|
276
|
-
project: A project `name` or `uid` for labeling entities created during the run.
|
277
|
-
space: A space `name` or `uid`
|
278
|
-
|
276
|
+
project: A project, its `name` or `uid` for labeling entities created during the run.
|
277
|
+
space: A restricted space, its `name` or `uid` for creating sensitive entities are created during the run.
|
278
|
+
The default is the common `"All"` space that every LaminDB instance has.
|
279
|
+
The `space` argument doesn't affect `Storage`, `ULabel`, `Feature`, `Schema`, `Param` and bionty entities as these provide structure that should typically be commonly accessible.
|
279
280
|
If you want to manually move entities to a different space, set the `.space` field (:doc:`docs:access`).
|
280
281
|
params: A dictionary of parameters to track for the run.
|
281
282
|
new_run: If `False`, loads the latest run of transform
|
@@ -309,20 +310,32 @@ class Context:
|
|
309
310
|
if project is None:
|
310
311
|
project = os.environ.get("LAMIN_CURRENT_PROJECT")
|
311
312
|
if project is not None:
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
if project_record is None:
|
316
|
-
raise InvalidArgument(
|
317
|
-
f"Project '{project}' not found, either create it with `ln.Project(name='...').save()` or fix typos."
|
313
|
+
if isinstance(project, Project):
|
314
|
+
assert project._state.adding is False, ( # noqa: S101
|
315
|
+
"Project must be saved before passing it to track()"
|
318
316
|
)
|
317
|
+
project_record = project
|
318
|
+
else:
|
319
|
+
project_record = Project.filter(
|
320
|
+
Q(name=project) | Q(uid=project)
|
321
|
+
).one_or_none()
|
322
|
+
if project_record is None:
|
323
|
+
raise InvalidArgument(
|
324
|
+
f"Project '{project}' not found, either create it with `ln.Project(name='...').save()` or fix typos."
|
325
|
+
)
|
319
326
|
self._project = project_record
|
320
327
|
if space is not None:
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
f"Space '{space}', please check on the hub UI whether you have the correct `uid` or `name`."
|
328
|
+
if isinstance(space, Space):
|
329
|
+
assert space._state.adding is False, ( # noqa: S101
|
330
|
+
"Space must be saved before passing it to track()"
|
325
331
|
)
|
332
|
+
space_record = space
|
333
|
+
else:
|
334
|
+
space_record = Space.filter(Q(name=space) | Q(uid=space)).one_or_none()
|
335
|
+
if space_record is None:
|
336
|
+
raise InvalidArgument(
|
337
|
+
f"Space '{space}', please check on the hub UI whether you have the correct `uid` or `name`."
|
338
|
+
)
|
326
339
|
self._space = space_record
|
327
340
|
self._logging_message_track = ""
|
328
341
|
self._logging_message_imports = ""
|
@@ -110,7 +110,7 @@ def save_tiledbsoma_experiment(
|
|
110
110
|
) -> Artifact:
|
111
111
|
"""Write `AnnData` to `tiledbsoma.Experiment`.
|
112
112
|
|
113
|
-
Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an
|
113
|
+
Reads `AnnData` objects, writes them to `tiledbsoma.Experiment`, creates & saves an :class:`~lamindb.Artifact`.
|
114
114
|
|
115
115
|
Populates a column `lamin_run_uid` column in `obs` with the current `run.uid`.
|
116
116
|
|
@@ -202,28 +202,44 @@ def save_tiledbsoma_experiment(
|
|
202
202
|
context=ctx,
|
203
203
|
)
|
204
204
|
|
205
|
+
prepare_experiment = False
|
205
206
|
resize_experiment = False
|
206
207
|
if registration_mapping is not None:
|
207
|
-
|
208
|
+
soma_version_parsed = version.parse(soma.__version__)
|
209
|
+
if soma_version_parsed < version.parse("1.15.0rc4"):
|
208
210
|
n_observations = len(registration_mapping.obs_axis.data)
|
209
211
|
else:
|
210
212
|
n_observations = registration_mapping.get_obs_shape()
|
211
|
-
|
213
|
+
prepare_experiment = soma_version_parsed >= version.parse("1.16.2")
|
214
|
+
resize_experiment = not prepare_experiment
|
212
215
|
else: # happens only if not appending and only one adata passed
|
213
216
|
assert len(adata_objects) == 1 # noqa: S101
|
214
217
|
n_observations = adata_objects[0].n_obs
|
215
218
|
|
216
219
|
logger.important(f"Writing the tiledbsoma store to {storepath_str}")
|
220
|
+
experiment_exists: bool | None = None
|
217
221
|
for adata_obj in adata_objects:
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
222
|
+
# do not recheck if True
|
223
|
+
if not experiment_exists and (resize_experiment or prepare_experiment):
|
224
|
+
experiment_exists = soma.Experiment.exists(storepath_str, context=ctx)
|
225
|
+
if experiment_exists:
|
226
|
+
# both can only happen if registration_mapping is not None
|
227
|
+
if resize_experiment:
|
228
|
+
soma_io.resize_experiment(
|
229
|
+
storepath_str,
|
230
|
+
nobs=n_observations,
|
231
|
+
nvars=registration_mapping.get_var_shapes(),
|
232
|
+
context=ctx,
|
233
|
+
)
|
234
|
+
resize_experiment = False
|
235
|
+
elif prepare_experiment:
|
236
|
+
registration_mapping.prepare_experiment(storepath_str, context=ctx)
|
237
|
+
prepare_experiment = False
|
238
|
+
registration_mapping_write = (
|
239
|
+
registration_mapping.subset_for_anndata(adata_obj)
|
240
|
+
if hasattr(registration_mapping, "subset_for_anndata")
|
241
|
+
else registration_mapping
|
242
|
+
)
|
227
243
|
soma_io.from_anndata(
|
228
244
|
storepath_str,
|
229
245
|
adata_obj,
|
@@ -231,7 +247,7 @@ def save_tiledbsoma_experiment(
|
|
231
247
|
context=ctx,
|
232
248
|
obs_id_name=obs_id_name,
|
233
249
|
var_id_name=var_id_name,
|
234
|
-
registration_mapping=
|
250
|
+
registration_mapping=registration_mapping_write,
|
235
251
|
**kwargs,
|
236
252
|
)
|
237
253
|
|
@@ -305,6 +305,8 @@ class SlotsCurator(Curator):
|
|
305
305
|
for slot, curator in self._slots.items():
|
306
306
|
logger.info(f"validating slot {slot} ...")
|
307
307
|
curator.validate()
|
308
|
+
# set _is_validated to True as no slot raised an error
|
309
|
+
self._is_validated = True
|
308
310
|
|
309
311
|
@doc_args(SAVE_ARTIFACT_DOCSTRING)
|
310
312
|
def save_artifact(
|
@@ -510,7 +512,7 @@ class DataFrameCurator(Curator):
|
|
510
512
|
categoricals=categoricals,
|
511
513
|
index=schema.index,
|
512
514
|
slot=slot,
|
513
|
-
|
515
|
+
maximal_set=schema.maximal_set,
|
514
516
|
)
|
515
517
|
|
516
518
|
@property
|
@@ -836,7 +838,7 @@ class SpatialDataCurator(SlotsCurator):
|
|
836
838
|
sub_slot = split_result[1]
|
837
839
|
data_object = self._dataset.attrs[split_result[1]]
|
838
840
|
data_object = pd.DataFrame([data_object])
|
839
|
-
self._slots[slot] = DataFrameCurator(data_object, slot_schema)
|
841
|
+
self._slots[slot] = DataFrameCurator(data_object, slot_schema, slot)
|
840
842
|
_assign_var_fields_categoricals_multimodal(
|
841
843
|
modality=table_key,
|
842
844
|
slot_type=sub_slot,
|
@@ -850,27 +852,20 @@ class SpatialDataCurator(SlotsCurator):
|
|
850
852
|
|
851
853
|
|
852
854
|
class CatVector:
|
853
|
-
"""
|
854
|
-
|
855
|
-
Args:
|
856
|
-
values_getter: A callable or iterable that returns the values to validate.
|
857
|
-
field: The field to validate against.
|
858
|
-
key: The name of the column to validate. Only used for logging.
|
859
|
-
values_setter: A callable that sets the values.
|
860
|
-
source: The source to validate against.
|
861
|
-
"""
|
855
|
+
"""Vector with categorical values."""
|
862
856
|
|
863
857
|
def __init__(
|
864
858
|
self,
|
865
|
-
values_getter: Callable
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
859
|
+
values_getter: Callable
|
860
|
+
| Iterable[str], # A callable or iterable that returns the values to validate.
|
861
|
+
field: FieldAttr, # The field to validate against.
|
862
|
+
key: str, # The name of the vector to validate. Only used for logging.
|
863
|
+
values_setter: Callable | None = None, # A callable that sets the values.
|
864
|
+
source: Record | None = None, # The ontology source to validate against.
|
870
865
|
feature: Feature | None = None,
|
871
866
|
cat_manager: DataFrameCatManager | None = None,
|
872
867
|
subtype_str: str = "",
|
873
|
-
maximal_set: bool =
|
868
|
+
maximal_set: bool = True, # whether unvalidated categoricals cause validation failure.
|
874
869
|
) -> None:
|
875
870
|
self._values_getter = values_getter
|
876
871
|
self._values_setter = values_setter
|
@@ -912,18 +907,20 @@ class CatVector:
|
|
912
907
|
@property
|
913
908
|
def is_validated(self) -> bool:
|
914
909
|
"""Whether the vector is validated."""
|
915
|
-
#
|
916
|
-
#
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
910
|
+
# if nothing was validated, something likely is fundamentally wrong
|
911
|
+
# should probably add a setting `at_least_one_validated`
|
912
|
+
result = True
|
913
|
+
if len(self.values) > 0 and len(self.values) == len(self._non_validated):
|
914
|
+
result = False
|
915
|
+
# len(self._non_validated) != 0
|
916
|
+
# if maximal_set is True, return False
|
917
|
+
# if maximal_set is False, return True
|
918
|
+
# len(self._non_validated) == 0
|
919
|
+
# return True
|
920
|
+
if len(self._non_validated) != 0:
|
921
|
+
if self._maximal_set:
|
922
|
+
result = False
|
923
|
+
return result
|
927
924
|
|
928
925
|
def _replace_synonyms(self) -> list[str]:
|
929
926
|
"""Replace synonyms in the vector with standardized values."""
|
@@ -1078,11 +1075,6 @@ class CatVector:
|
|
1078
1075
|
field_name = self._field.field.name
|
1079
1076
|
model_field = f"{registry.__name__}.{field_name}"
|
1080
1077
|
|
1081
|
-
def _log_mapping_info():
|
1082
|
-
logger.indent = ""
|
1083
|
-
logger.info(f'mapping "{self._key}" on {colors.italic(model_field)}')
|
1084
|
-
logger.indent = " "
|
1085
|
-
|
1086
1078
|
kwargs_current = get_current_filter_kwargs(
|
1087
1079
|
registry, {"organism": self._organism, "source": self._source}
|
1088
1080
|
)
|
@@ -1121,7 +1113,6 @@ class CatVector:
|
|
1121
1113
|
non_validated = [i for i in non_validated if i not in values_validated]
|
1122
1114
|
n_non_validated = len(non_validated)
|
1123
1115
|
if n_non_validated == 0:
|
1124
|
-
logger.indent = ""
|
1125
1116
|
logger.success(
|
1126
1117
|
f'"{self._key}" is validated against {colors.italic(model_field)}'
|
1127
1118
|
)
|
@@ -1143,14 +1134,12 @@ class CatVector:
|
|
1143
1134
|
warning_message += f" → fix typos, remove non-existent values, or save terms via: {colors.cyan(non_validated_hint_print)}"
|
1144
1135
|
if self._subtype_query_set is not None:
|
1145
1136
|
warning_message += f"\n → a valid label for subtype '{self._subtype_str}' has to be one of {self._subtype_query_set.list('name')}"
|
1146
|
-
|
1147
|
-
_log_mapping_info()
|
1137
|
+
logger.info(f'mapping "{self._key}" on {colors.italic(model_field)}')
|
1148
1138
|
logger.warning(warning_message)
|
1149
1139
|
if self._cat_manager is not None:
|
1150
1140
|
self._cat_manager._validate_category_error_messages = strip_ansi_codes(
|
1151
1141
|
warning_message
|
1152
1142
|
)
|
1153
|
-
logger.indent = ""
|
1154
1143
|
return non_validated, syn_mapper
|
1155
1144
|
|
1156
1145
|
def validate(self) -> None:
|
@@ -1218,7 +1207,7 @@ class DataFrameCatManager:
|
|
1218
1207
|
sources: dict[str, Record] | None = None,
|
1219
1208
|
index: Feature | None = None,
|
1220
1209
|
slot: str | None = None,
|
1221
|
-
|
1210
|
+
maximal_set: bool = False,
|
1222
1211
|
) -> None:
|
1223
1212
|
self._non_validated = None
|
1224
1213
|
self._index = index
|
@@ -1235,7 +1224,7 @@ class DataFrameCatManager:
|
|
1235
1224
|
self._validate_category_error_messages: str = ""
|
1236
1225
|
self._cat_vectors: dict[str, CatVector] = {}
|
1237
1226
|
self._slot = slot
|
1238
|
-
self._maximal_set =
|
1227
|
+
self._maximal_set = maximal_set
|
1239
1228
|
|
1240
1229
|
if columns_names is None:
|
1241
1230
|
columns_names = []
|
@@ -1280,7 +1269,6 @@ class DataFrameCatManager:
|
|
1280
1269
|
feature=feature,
|
1281
1270
|
cat_manager=self,
|
1282
1271
|
subtype_str=subtype_str,
|
1283
|
-
maximal_set=self._maximal_set,
|
1284
1272
|
)
|
1285
1273
|
if index is not None and index.dtype.startswith("cat"):
|
1286
1274
|
result = parse_dtype(index.dtype)[0]
|
@@ -1292,7 +1280,6 @@ class DataFrameCatManager:
|
|
1292
1280
|
key=key,
|
1293
1281
|
feature=index,
|
1294
1282
|
cat_manager=self,
|
1295
|
-
maximal_set=self._maximal_set,
|
1296
1283
|
)
|
1297
1284
|
|
1298
1285
|
@property
|
@@ -1330,7 +1317,7 @@ class DataFrameCatManager:
|
|
1330
1317
|
|
1331
1318
|
validated = True
|
1332
1319
|
for key, cat_vector in self._cat_vectors.items():
|
1333
|
-
logger.info(f"validating
|
1320
|
+
logger.info(f"validating vector {key}")
|
1334
1321
|
cat_vector.validate()
|
1335
1322
|
validated &= cat_vector.is_validated
|
1336
1323
|
self._is_validated = validated
|
@@ -1493,6 +1480,9 @@ def annotate_artifact(
|
|
1493
1480
|
else "columns"
|
1494
1481
|
)
|
1495
1482
|
features = slot_curator.cat._cat_vectors[name].records
|
1483
|
+
if features is None:
|
1484
|
+
logger.warning(f"no features found for slot {slot}")
|
1485
|
+
continue
|
1496
1486
|
itype = parse_cat_dtype(artifact.schema.slots[slot].itype, is_itype=True)[
|
1497
1487
|
"field"
|
1498
1488
|
]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Generated by Django 5.2 on 2025-05-07 12:16
|
2
|
+
|
3
|
+
from django.db import migrations
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
dependencies = [
|
8
|
+
("lamindb", "0092_alter_artifactfeaturevalue_artifact_and_more"),
|
9
|
+
]
|
10
|
+
|
11
|
+
operations = [
|
12
|
+
migrations.AlterUniqueTogether(
|
13
|
+
name="schemacomponent",
|
14
|
+
unique_together={("composite", "slot"), ("composite", "slot", "component")},
|
15
|
+
),
|
16
|
+
]
|
@@ -49,7 +49,7 @@ from ._label_manager import _get_labels, describe_labels
|
|
49
49
|
from ._relations import (
|
50
50
|
dict_related_model_to_related_name,
|
51
51
|
)
|
52
|
-
from .feature import Feature, FeatureValue
|
52
|
+
from .feature import Feature, FeatureValue, parse_dtype
|
53
53
|
from .record import Record
|
54
54
|
from .run import Param, ParamManager, ParamManagerRun, ParamValue, Run
|
55
55
|
from .ulabel import ULabel
|
@@ -649,13 +649,22 @@ def filter_base(cls, _skip_validation: bool = True, **expression) -> QuerySet:
|
|
649
649
|
if cls == FeatureManager:
|
650
650
|
from .artifact import ArtifactFeatureValue
|
651
651
|
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
652
|
+
if value: # True
|
653
|
+
return Artifact.objects.exclude(
|
654
|
+
id__in=Subquery(
|
655
|
+
ArtifactFeatureValue.objects.filter(
|
656
|
+
featurevalue__feature=feature
|
657
|
+
).values("artifact_id")
|
658
|
+
)
|
659
|
+
)
|
660
|
+
else:
|
661
|
+
return Artifact.objects.exclude(
|
662
|
+
id__in=Subquery(
|
663
|
+
ArtifactFeatureValue.objects.filter(
|
664
|
+
featurevalue__feature=feature
|
665
|
+
).values("artifact_id")
|
666
|
+
)
|
657
667
|
)
|
658
|
-
)
|
659
668
|
if comparator in {"__startswith", "__contains"}:
|
660
669
|
logger.important(
|
661
670
|
f"currently not supporting `{comparator}`, using `__icontains` instead"
|
@@ -667,7 +676,14 @@ def filter_base(cls, _skip_validation: bool = True, **expression) -> QuerySet:
|
|
667
676
|
elif isinstance(value, (str, Record, bool)):
|
668
677
|
if comparator == "__isnull":
|
669
678
|
if cls == FeatureManager:
|
670
|
-
|
679
|
+
result = parse_dtype(feature.dtype)[0]
|
680
|
+
kwargs = {
|
681
|
+
f"links_{result['registry'].__name__.lower()}__feature": feature
|
682
|
+
}
|
683
|
+
if value: # True
|
684
|
+
return Artifact.objects.exclude(**kwargs)
|
685
|
+
else:
|
686
|
+
return Artifact.objects.filter(**kwargs)
|
671
687
|
else:
|
672
688
|
# because SQL is sensitive to whether querying with __in or not
|
673
689
|
# and might return multiple equivalent records for the latter
|
@@ -17,7 +17,6 @@ from django.db.models import CASCADE, PROTECT, Q
|
|
17
17
|
from lamin_utils import colors, logger
|
18
18
|
from lamindb_setup import settings as setup_settings
|
19
19
|
from lamindb_setup._init_instance import register_storage_in_instance
|
20
|
-
from lamindb_setup.core import doc_args
|
21
20
|
from lamindb_setup.core._settings_storage import init_storage
|
22
21
|
from lamindb_setup.core.hashing import HASH_LENGTH, hash_dir, hash_file
|
23
22
|
from lamindb_setup.core.types import UPathStr
|
@@ -99,8 +98,6 @@ WARNING_RUN_TRANSFORM = "no run & transform got linked, call `ln.track()` & re-r
|
|
99
98
|
|
100
99
|
WARNING_NO_INPUT = "run input wasn't tracked, call `ln.track()` and re-run"
|
101
100
|
|
102
|
-
DEBUG_KWARGS_DOC = "**kwargs: Internal arguments for debugging."
|
103
|
-
|
104
101
|
try:
|
105
102
|
from ..core.storage._zarr import identify_zarr_type
|
106
103
|
except ImportError:
|
@@ -914,7 +911,7 @@ def add_labels(
|
|
914
911
|
for registry_name, records in records_by_registry.items():
|
915
912
|
if not from_curator and feature.name in internal_features:
|
916
913
|
raise ValidationError(
|
917
|
-
"Cannot manually annotate
|
914
|
+
"Cannot manually annotate a feature measured *within* the dataset. Please use a Curator."
|
918
915
|
)
|
919
916
|
if registry_name not in feature.dtype:
|
920
917
|
if not feature.dtype.startswith("cat"):
|
@@ -1236,7 +1233,7 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
1236
1233
|
default=None,
|
1237
1234
|
related_name="validated_artifacts",
|
1238
1235
|
)
|
1239
|
-
"""The schema that validated this artifact in a :class:`~lamindb.curators.Curator`."""
|
1236
|
+
"""The schema that validated this artifact in a :class:`~lamindb.curators.core.Curator`."""
|
1240
1237
|
feature_sets: Schema = models.ManyToManyField(
|
1241
1238
|
Schema, related_name="artifacts", through="ArtifactSchema"
|
1242
1239
|
)
|
@@ -2363,6 +2360,11 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2363
2360
|
|
2364
2361
|
if hasattr(self, "_memory_rep") and self._memory_rep is not None:
|
2365
2362
|
access_memory = self._memory_rep
|
2363
|
+
# SpatialData objects zarr stores are moved when saved
|
2364
|
+
# SpatialData's __repr__ method attempts to access information from the old path
|
2365
|
+
# Therefore, we need to update the in-memory path to the now moved Artifact storage path
|
2366
|
+
if access_memory.__class__.__name__ == "SpatialData":
|
2367
|
+
access_memory.path = self._cache_path
|
2366
2368
|
else:
|
2367
2369
|
filepath, cache_key = filepath_cache_key_from_artifact(
|
2368
2370
|
self, using_key=settings._using_key
|
@@ -2395,9 +2397,9 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2395
2397
|
access_memory = load_to_memory(cache_path, **kwargs)
|
2396
2398
|
# only call if load is successfull
|
2397
2399
|
_track_run_input(self, is_run_input)
|
2400
|
+
|
2398
2401
|
return access_memory
|
2399
2402
|
|
2400
|
-
@doc_args(DEBUG_KWARGS_DOC)
|
2401
2403
|
def cache(
|
2402
2404
|
self, *, is_run_input: bool | None = None, mute: bool = False, **kwargs
|
2403
2405
|
) -> Path:
|
@@ -2410,7 +2412,6 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2410
2412
|
Args:
|
2411
2413
|
mute: Silence logging of caching progress.
|
2412
2414
|
is_run_input: Whether to track this artifact as run input.
|
2413
|
-
{}
|
2414
2415
|
|
2415
2416
|
Example::
|
2416
2417
|
|
@@ -2560,13 +2561,11 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2560
2561
|
if delete_msg != "did-not-delete":
|
2561
2562
|
logger.success(f"deleted {colors.yellow(f'{path}')}")
|
2562
2563
|
|
2563
|
-
@doc_args(DEBUG_KWARGS_DOC)
|
2564
2564
|
def save(self, upload: bool | None = None, **kwargs) -> Artifact:
|
2565
2565
|
"""Save to database & storage.
|
2566
2566
|
|
2567
2567
|
Args:
|
2568
2568
|
upload: Trigger upload to cloud storage in instances with hybrid storage mode.
|
2569
|
-
{}
|
2570
2569
|
|
2571
2570
|
Example::
|
2572
2571
|
|
@@ -2763,8 +2762,8 @@ def _track_run_input(
|
|
2763
2762
|
# record is on another db
|
2764
2763
|
# we have to save the record into the current db with
|
2765
2764
|
# the run being attached to a transfer transform
|
2766
|
-
logger.
|
2767
|
-
f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}') as input"
|
2765
|
+
logger.info(
|
2766
|
+
f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}...') as input"
|
2768
2767
|
)
|
2769
2768
|
data.save()
|
2770
2769
|
is_valid = True
|