lamindb 1.5.0__tar.gz → 1.5.1__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.1}/.github/workflows/build.yml +2 -2
- {lamindb-1.5.0 → lamindb-1.5.1}/.pre-commit-config.yaml +2 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/PKG-INFO +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/arrays.ipynb +15 -8
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/curate.ipynb +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/anndata-accessor.ipynb +2 -2
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/__init__.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_context.py +28 -15
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_tiledbsoma.py +29 -13
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/curators/core.py +31 -43
- lamindb-1.5.1/lamindb/migrations/0093_alter_schemacomponent_unique_together.py +16 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_feature_manager.py +24 -8
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/artifact.py +4 -11
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/has_parents.py +67 -12
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/query_set.py +3 -2
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/record.py +3 -4
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/schema.py +23 -28
- {lamindb-1.5.0 → lamindb-1.5.1}/noxfile.py +2 -6
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/conftest.py +4 -4
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_save_files.py +2 -2
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_save_notebooks.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_save_scripts.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/conftest.py +4 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_collection.py +4 -13
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_feature.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_curators_examples.py +12 -8
- {lamindb-1.5.0 → lamindb-1.5.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/.gitmodules +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/CONTRIBUTING.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/api.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/bio-registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/bionty.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/clinicore.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/acid.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/curate-any.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/delete.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/import-modules.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/pydantic-pandera.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/search.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/setup.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/symbol-mapping.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/validate-fields.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq/visibility.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/faq.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/includes/installation.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/lamindb.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/query-search.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/curate-mudata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/curate_anndata_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/curate_dataframe_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/curate_dataframe_minimal_errors.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/curate_spatialdata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/define_mini_immuno_features_labels.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/define_mini_immuno_schema_flexible.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/define_schema_anndata_ensembl_gene_ids_and_valid_features_in_obs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/define_schema_spatialdata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/define_valid_features.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/ingest_mini_immuno_datasets.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/run-track-and-finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/run-track-with-params.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/run-workflow.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/scripts/synced-with-git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/upload.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/storage.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/track.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/transfer.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/docs/wetlab.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/_finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/_tracked.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/_view.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/fields.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/ids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/uids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/base/users.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_compat.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_sync_git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/_track_environment.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/datasets/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/datasets/_core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/datasets/_fake.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/datasets/_small.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/datasets/mini_immuno.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/exceptions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/loaders.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_anndata_accessor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_anndata_sizes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_polars_lazy_df.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/objects.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/storage/paths.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/subsettings/_annotation_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/core/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/curators/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/curators/_cellxgene_schemas/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/curators/_cellxgene_schemas/schema_versions.csv +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/curators/_legacy.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/errors.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/examples/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/examples/schemas/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/examples/schemas/_anndata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/examples/schemas/_simple.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/integrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0069_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0070_lamindbv1_migrate_data.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0071_lamindbv1_migrate_schema.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0072_remove_user__branch_code_remove_user_aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0073_merge_ourprojects.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0074_lamindbv1_part4.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0075_lamindbv1_part5.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0076_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0077_lamindbv1_part6b.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0078_lamindbv1_part6c.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0079_alter_rundata_value_json_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0080_polish_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0081_revert_textfield_collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0082_alter_feature_dtype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0083_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0084_alter_schemafeature_feature_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0085_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0086_various.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0087_rename__schemas_m2m_artifact_feature_sets_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0088_schema_components.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0089_subsequent_runs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0090_runproject_project_runs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0090_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0091_alter_featurevalue_options_alter_space_options_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/0092_alter_artifactfeaturevalue_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_describe.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_from_values.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_is_versioned.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_label_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/_relations.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/artifact_set.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/can_curate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/collection.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/feature.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/flextable.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/project.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/query_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/run.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/transform.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/models/ulabel.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/.github/workflows/update_ontologies.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/_biorecord.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/_shared_docstrings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/_display_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/_public_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/dev/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/dev/_doc_util.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/dev/_handle_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/dev/_io.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_bfxpipeline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_biosample.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_cellline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_cellmarker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_celltype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_developmentalstage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_disease.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_drug.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_ethnicity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_experimentalfactor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_pathway.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_phenotype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_protein.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_shared_docstrings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/entities/_tissue.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/scripts/bfxpipelines_info/custom_pipelines.json +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/scripts/check_ontologies_reachable.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/scripts/generate_bfxpipelines.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/scripts/update_new_ontologies.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/base/sources.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/core/_add_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/core/_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/ids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0028_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0029_alter_cellline_previous_runs_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0030_rename_publicsource_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0031_alter_cellmarker_name_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0032_rename_source_name_source_description_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0033_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0034_alter_source_unique_together.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0035_alter_protein_gene_symbol.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0036_alter_source_artifacts_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0037_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0038_alter_artifactcellline_created_by_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0039_alter_cellline_source_alter_cellmarker_source_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/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.1}/sub/bionty/bionty/migrations/0041_alter_artifactcellline_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0042_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0043_lamindbv2_part2.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0044_alter_cellline_space_alter_cellmarker_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/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.1}/sub/bionty/bionty/migrations/0046_alter_cellline__aux_alter_cellmarker__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0047_lamindbv1_part5.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0048_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0049_alter_schemacellmarker_cellmarker_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0050_alter_source_uid.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/0050_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/bionty/uids.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/guide/concepts.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/guide/config.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/guide/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/dev/test_handle_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/dev/test_io.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_bfxpipeline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_biosample.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_cellline.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_cellmarker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_celltype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_developmentalstage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_disease.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_drug.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_ethnicity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_experimentalfactor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_pathway.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_phenotype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_protein.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/entities/test_tissue.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/test_bionty.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/base/test_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/core/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/core/test_models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/core/test_organism_requirement.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/bionty/tests/core/test_source.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_cxg_rest_api.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_features.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_gene.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_labels.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_ontology.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/_organism.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/cellxgene_lamin/dev/datasets.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/cellxgene-curate.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/cellxgene.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2023-12-15-LTS.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/cencus-release-2024-07-01-LTS.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-07-25.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-11-13.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/census-release-2023-12-06.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/census-release-2024-07-01-References.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/files-meta.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/files.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/meta-human.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks/meta-mouse.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/docs/notebooks.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/lamin-project.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/scripts/ensembl_helpers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/cellxgene-lamin/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0001_initial.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0002_biosample_patient_biosample_project.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0003_alter_project_uid.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0004_remove_biosample_project_clinicaltrial_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0005_alter_biosample_created_by_alter_biosample_run_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0006_artifactbiosample_artifactclinicaltrial_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0007_alter_artifactbiosample_artifact_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0008_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0009_alter_biosample_space_alter_clinicaltrial_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0010_rename_aux_biosample__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0011_alter_biosample__aux_alter_clinicaltrial__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0012_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/0013_alter_biosample_artifacts.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/clinicore/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/docs/quickstart.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/clinicore/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/__main__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/_migration.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/compute/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/lamin_cli/compute/modal.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_cli.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_multi_process.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_parse_uid_from_code.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/core/test_save_r_code.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/modal/test_modal.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/notebooks/not-initialized.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-consecutive.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/notebooks/with-title-and-initialized-non-consecutive.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/merely-import-lamindb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/run-track-and-finish-sync-git.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/run-track-and-finish.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/run-track-with-params.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/run-track.R +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamin-cli/tests/scripts/run-track.qmd +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/LICENSE +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/04-test-bionty.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/08-test-multi-session.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-cloud/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-cache-management.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-cloud-sync.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-empty-init.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-import-schema.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-init-load-local-anonymously.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-invalid-schema.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/hub-prod/test_notebooks2.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/notebooks.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_check.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_check_setup.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_connect_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_delete.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_disconnect.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_entry_points.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_exportdb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_importdb.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_init_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_register_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_schema.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_schema_metadata.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_set_managed_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_setup_user.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/_silence_loggers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_aws_options.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_aws_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_deprecated.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_docs.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_hub_client.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_hub_core.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_hub_crud.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_hub_utils.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_private_django_api.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_store.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_settings_user.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/_setup_bionty_sources.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/exceptions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/hashing.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/lamindb_setup/core/upath.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/scripts/script-init-pass-user-no-writes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/scripts/script-to-fail-managed-storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_connect_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_delete_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_edge_request.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_fail_managed_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_init_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_init_pass_user_no_writes.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_login.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_migrate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-cloud/test_set_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-local/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-local/scripts/script-connect-fine-grained-access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-local/test_all.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-local/test_update_schema_in_hub.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/test_aws_options_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/test_django.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/test_global_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/hub-prod/test_upath.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_entry_point.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_hashing.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_storage_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_storage_basis.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_storage_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_storage_stats.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/lamindb-setup/tests/storage/test_to_url.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/.github/workflows/build.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/.gitignore +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/.pre-commit-config.yaml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/README.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/changelog.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/guide/get-started.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/guide/pert-curator.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/guide/pert-registries.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/guide.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/index.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/docs/reference.md +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/noxfile.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/pyproject.toml +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/tests/test_integrity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/tests/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0025_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0026_alter_biosample_artifacts_alter_techsample_artifacts.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0027_rename_treatment_add_donor.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0028_remove_combinationperturbation_compounds_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0029_artifactbiologic_biologic_artifactbiologic_biologic.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0030_lamindbv1.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0031_alter_biologic_space_alter_biosample_space_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/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.1}/sub/wetlab/wetlab/migrations/0033_alter_biologic__aux_alter_biosample__aux_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0034_lamindbv1_part6.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0034_squashed.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/0035_alter_biologic_targets_alter_compound_name_and_more.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/migrations/__init__.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/sub/wetlab/wetlab/types.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/_dataset_fixtures.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/basic-r-notebook.Rmd.cleaned.html +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/basic-r-notebook.Rmd.html +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/duplicate4/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_artifact.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_artifact_folders.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_cache.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_can_curate.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_data.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_db.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_delete.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_describe_and_df_calls.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_dtype.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_feature_label_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_from_values.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_has_parents.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_integrity.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_load.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_manager.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_models.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_notebooks.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_queryset.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_record.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_run.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_save.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_schema.py +1 -1
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_search.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_settings.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_track.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_tracked.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_transform.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_ulabel.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_versioning.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_view.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_visibility.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/core/test_zflextables.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_cat_managers.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_curators_general.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_cxg_curator.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_dataframe_curators_accounting_example.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/curators/test_pert_curator.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/jwt_utils.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/scripts/check_lamin_dev.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/scripts/setup_access.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/scripts/setup_instance.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/permissions/test_permissions.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/storage/conftest.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/tests/storage/test_storage.py +0 -0
- {lamindb-1.5.0 → lamindb-1.5.1}/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
|
|
@@ -510,7 +510,7 @@ class DataFrameCurator(Curator):
|
|
510
510
|
categoricals=categoricals,
|
511
511
|
index=schema.index,
|
512
512
|
slot=slot,
|
513
|
-
|
513
|
+
maximal_set=schema.maximal_set,
|
514
514
|
)
|
515
515
|
|
516
516
|
@property
|
@@ -836,7 +836,7 @@ class SpatialDataCurator(SlotsCurator):
|
|
836
836
|
sub_slot = split_result[1]
|
837
837
|
data_object = self._dataset.attrs[split_result[1]]
|
838
838
|
data_object = pd.DataFrame([data_object])
|
839
|
-
self._slots[slot] = DataFrameCurator(data_object, slot_schema)
|
839
|
+
self._slots[slot] = DataFrameCurator(data_object, slot_schema, slot)
|
840
840
|
_assign_var_fields_categoricals_multimodal(
|
841
841
|
modality=table_key,
|
842
842
|
slot_type=sub_slot,
|
@@ -850,27 +850,20 @@ class SpatialDataCurator(SlotsCurator):
|
|
850
850
|
|
851
851
|
|
852
852
|
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
|
-
"""
|
853
|
+
"""Vector with categorical values."""
|
862
854
|
|
863
855
|
def __init__(
|
864
856
|
self,
|
865
|
-
values_getter: Callable
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
857
|
+
values_getter: Callable
|
858
|
+
| Iterable[str], # A callable or iterable that returns the values to validate.
|
859
|
+
field: FieldAttr, # The field to validate against.
|
860
|
+
key: str, # The name of the vector to validate. Only used for logging.
|
861
|
+
values_setter: Callable | None = None, # A callable that sets the values.
|
862
|
+
source: Record | None = None, # The ontology source to validate against.
|
870
863
|
feature: Feature | None = None,
|
871
864
|
cat_manager: DataFrameCatManager | None = None,
|
872
865
|
subtype_str: str = "",
|
873
|
-
maximal_set: bool =
|
866
|
+
maximal_set: bool = True, # whether unvalidated categoricals cause validation failure.
|
874
867
|
) -> None:
|
875
868
|
self._values_getter = values_getter
|
876
869
|
self._values_setter = values_setter
|
@@ -912,18 +905,20 @@ class CatVector:
|
|
912
905
|
@property
|
913
906
|
def is_validated(self) -> bool:
|
914
907
|
"""Whether the vector is validated."""
|
915
|
-
#
|
916
|
-
#
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
908
|
+
# if nothing was validated, something likely is fundamentally wrong
|
909
|
+
# should probably add a setting `at_least_one_validated`
|
910
|
+
result = True
|
911
|
+
if len(self.values) > 0 and len(self.values) == len(self._non_validated):
|
912
|
+
result = False
|
913
|
+
# len(self._non_validated) != 0
|
914
|
+
# if maximal_set is True, return False
|
915
|
+
# if maximal_set is False, return True
|
916
|
+
# len(self._non_validated) == 0
|
917
|
+
# return True
|
918
|
+
if len(self._non_validated) != 0:
|
919
|
+
if self._maximal_set:
|
920
|
+
result = False
|
921
|
+
return result
|
927
922
|
|
928
923
|
def _replace_synonyms(self) -> list[str]:
|
929
924
|
"""Replace synonyms in the vector with standardized values."""
|
@@ -1078,11 +1073,6 @@ class CatVector:
|
|
1078
1073
|
field_name = self._field.field.name
|
1079
1074
|
model_field = f"{registry.__name__}.{field_name}"
|
1080
1075
|
|
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
1076
|
kwargs_current = get_current_filter_kwargs(
|
1087
1077
|
registry, {"organism": self._organism, "source": self._source}
|
1088
1078
|
)
|
@@ -1121,7 +1111,6 @@ class CatVector:
|
|
1121
1111
|
non_validated = [i for i in non_validated if i not in values_validated]
|
1122
1112
|
n_non_validated = len(non_validated)
|
1123
1113
|
if n_non_validated == 0:
|
1124
|
-
logger.indent = ""
|
1125
1114
|
logger.success(
|
1126
1115
|
f'"{self._key}" is validated against {colors.italic(model_field)}'
|
1127
1116
|
)
|
@@ -1143,14 +1132,12 @@ class CatVector:
|
|
1143
1132
|
warning_message += f" → fix typos, remove non-existent values, or save terms via: {colors.cyan(non_validated_hint_print)}"
|
1144
1133
|
if self._subtype_query_set is not None:
|
1145
1134
|
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()
|
1135
|
+
logger.info(f'mapping "{self._key}" on {colors.italic(model_field)}')
|
1148
1136
|
logger.warning(warning_message)
|
1149
1137
|
if self._cat_manager is not None:
|
1150
1138
|
self._cat_manager._validate_category_error_messages = strip_ansi_codes(
|
1151
1139
|
warning_message
|
1152
1140
|
)
|
1153
|
-
logger.indent = ""
|
1154
1141
|
return non_validated, syn_mapper
|
1155
1142
|
|
1156
1143
|
def validate(self) -> None:
|
@@ -1218,7 +1205,7 @@ class DataFrameCatManager:
|
|
1218
1205
|
sources: dict[str, Record] | None = None,
|
1219
1206
|
index: Feature | None = None,
|
1220
1207
|
slot: str | None = None,
|
1221
|
-
|
1208
|
+
maximal_set: bool = False,
|
1222
1209
|
) -> None:
|
1223
1210
|
self._non_validated = None
|
1224
1211
|
self._index = index
|
@@ -1235,7 +1222,7 @@ class DataFrameCatManager:
|
|
1235
1222
|
self._validate_category_error_messages: str = ""
|
1236
1223
|
self._cat_vectors: dict[str, CatVector] = {}
|
1237
1224
|
self._slot = slot
|
1238
|
-
self._maximal_set =
|
1225
|
+
self._maximal_set = maximal_set
|
1239
1226
|
|
1240
1227
|
if columns_names is None:
|
1241
1228
|
columns_names = []
|
@@ -1280,7 +1267,6 @@ class DataFrameCatManager:
|
|
1280
1267
|
feature=feature,
|
1281
1268
|
cat_manager=self,
|
1282
1269
|
subtype_str=subtype_str,
|
1283
|
-
maximal_set=self._maximal_set,
|
1284
1270
|
)
|
1285
1271
|
if index is not None and index.dtype.startswith("cat"):
|
1286
1272
|
result = parse_dtype(index.dtype)[0]
|
@@ -1292,7 +1278,6 @@ class DataFrameCatManager:
|
|
1292
1278
|
key=key,
|
1293
1279
|
feature=index,
|
1294
1280
|
cat_manager=self,
|
1295
|
-
maximal_set=self._maximal_set,
|
1296
1281
|
)
|
1297
1282
|
|
1298
1283
|
@property
|
@@ -1330,7 +1315,7 @@ class DataFrameCatManager:
|
|
1330
1315
|
|
1331
1316
|
validated = True
|
1332
1317
|
for key, cat_vector in self._cat_vectors.items():
|
1333
|
-
logger.info(f"validating
|
1318
|
+
logger.info(f"validating vector {key}")
|
1334
1319
|
cat_vector.validate()
|
1335
1320
|
validated &= cat_vector.is_validated
|
1336
1321
|
self._is_validated = validated
|
@@ -1493,6 +1478,9 @@ def annotate_artifact(
|
|
1493
1478
|
else "columns"
|
1494
1479
|
)
|
1495
1480
|
features = slot_curator.cat._cat_vectors[name].records
|
1481
|
+
if features is None:
|
1482
|
+
logger.warning(f"no features found for slot {slot}")
|
1483
|
+
continue
|
1496
1484
|
itype = parse_cat_dtype(artifact.schema.slots[slot].itype, is_itype=True)[
|
1497
1485
|
"field"
|
1498
1486
|
]
|
@@ -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
|
)
|
@@ -2397,7 +2394,6 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2397
2394
|
_track_run_input(self, is_run_input)
|
2398
2395
|
return access_memory
|
2399
2396
|
|
2400
|
-
@doc_args(DEBUG_KWARGS_DOC)
|
2401
2397
|
def cache(
|
2402
2398
|
self, *, is_run_input: bool | None = None, mute: bool = False, **kwargs
|
2403
2399
|
) -> Path:
|
@@ -2410,7 +2406,6 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2410
2406
|
Args:
|
2411
2407
|
mute: Silence logging of caching progress.
|
2412
2408
|
is_run_input: Whether to track this artifact as run input.
|
2413
|
-
{}
|
2414
2409
|
|
2415
2410
|
Example::
|
2416
2411
|
|
@@ -2560,13 +2555,11 @@ class Artifact(Record, IsVersioned, TracksRun, TracksUpdates):
|
|
2560
2555
|
if delete_msg != "did-not-delete":
|
2561
2556
|
logger.success(f"deleted {colors.yellow(f'{path}')}")
|
2562
2557
|
|
2563
|
-
@doc_args(DEBUG_KWARGS_DOC)
|
2564
2558
|
def save(self, upload: bool | None = None, **kwargs) -> Artifact:
|
2565
2559
|
"""Save to database & storage.
|
2566
2560
|
|
2567
2561
|
Args:
|
2568
2562
|
upload: Trigger upload to cloud storage in instances with hybrid storage mode.
|
2569
|
-
{}
|
2570
2563
|
|
2571
2564
|
Example::
|
2572
2565
|
|
@@ -2763,8 +2756,8 @@ def _track_run_input(
|
|
2763
2756
|
# record is on another db
|
2764
2757
|
# we have to save the record into the current db with
|
2765
2758
|
# the run being attached to a transfer transform
|
2766
|
-
logger.
|
2767
|
-
f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}') as input"
|
2759
|
+
logger.info(
|
2760
|
+
f"completing transfer to track {data.__class__.__name__}('{data.uid[:8]}...') as input"
|
2768
2761
|
)
|
2769
2762
|
data.save()
|
2770
2763
|
is_valid = True
|