lamindb 1.11.0__tar.gz → 1.11.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.11.0 → lamindb-1.11.1}/PKG-INFO +2 -2
- {lamindb-1.11.0 → lamindb-1.11.1}/README.md +1 -1
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/__init__.py +1 -1
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_context.py +4 -2
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/artifact.py +49 -8
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/sqlrecord.py +1 -1
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/scripts/setup_access.py +5 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/test_permissions.py +44 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_streaming.py +8 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/ISSUE_TEMPLATE/usage_question.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/workflows/build.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.github/workflows/doc-changes.yml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.gitignore +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.gitmodules +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/.pre-commit-config.yaml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/CONTRIBUTING.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/LICENSE +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/api.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/arrays.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/bio-registries.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/bionty.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/changelog.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/clinicore.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/curate.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/acid.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/curate-any.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/delete.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/idempotency.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/import-modules.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/keep-artifacts-local.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/pydantic-pandera.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/reference-field.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/search.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/setup.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/symbol-mapping.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/test_notebooks.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/track-run-inputs.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/validate-fields.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq/visibility.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/faq.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/guide.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/includes/installation.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/index.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/lamindb.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/query-search.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/registries.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_anndata_flexible.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_anndata_uns.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_dataframe_attrs.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_dataframe_external_features.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_dataframe_flexible.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_dataframe_minimal_errors.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_mudata.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_soma_experiment.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/curate_spatialdata.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_mini_immuno_features_labels.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_mini_immuno_schema_flexible.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_schema_anndata_ensembl_gene_ids_and_valid_features_in_obs.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_schema_anndata_uns.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_schema_df_metadata.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_schema_spatialdata.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/define_valid_features.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/run_track_and_finish.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/run_track_with_params.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/run_workflow.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/save_mini_immuno_datasets.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/scripts/synced_with_git.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/add-replace-cache.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/anndata-accessor.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/prepare-transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/test-files/iris.csv +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/test-files/iris.data +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/test-files/new_iris.csv +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/test_notebooks.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/transfer-local-to-cloud.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/upload.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage/vitessce.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/storage.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/test_notebooks.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/track.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/transfer.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/docs/wetlab.md +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/_finish.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/_tracked.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/_view.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/dtypes.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/fields.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/ids.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/types.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/uids.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/base/users.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_compat.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_mapped_collection.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_settings.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_sync_git.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/_track_environment.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/exceptions.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/loaders.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_anndata_accessor.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_backed_access.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_polars_lazy_df.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_pyarrow_dataset.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_spatialdata_accessor.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_tiledbsoma.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_valid_suffixes.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/_zarr.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/objects.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/storage/paths.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/subsettings/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/subsettings/_annotation_settings.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/subsettings/_creation_settings.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/core/types.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/curators/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/curators/_legacy.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/curators/core.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/errors.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/cellxgene/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/cellxgene/_cellxgene.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/cellxgene/cellxgene_schema_versions.csv +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/croissant/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/croissant/mini_immuno.anndata.zarr_metadata.json +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/datasets/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/datasets/_core.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/datasets/_fake.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/datasets/_small.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/datasets/mini_immuno.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/fixtures/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/fixtures/sheets.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/schemas/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/schemas/_anndata.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/schemas/_simple.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/integrations/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/integrations/_croissant.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/integrations/_vitessce.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0069_squashed.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0070_lamindbv1_migrate_data.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0071_lamindbv1_migrate_schema.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0072_remove_user__branch_code_remove_user_aux_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0073_merge_ourprojects.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0074_lamindbv1_part4.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0075_lamindbv1_part5.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0076_lamindbv1_part6.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0077_lamindbv1_part6b.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0078_lamindbv1_part6c.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0079_alter_rundata_value_json_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0080_polish_lamindbv1.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0081_revert_textfield_collection.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0082_alter_feature_dtype.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0083_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0084_alter_schemafeature_feature_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0085_alter_feature_is_type_alter_flextable_is_type_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0086_various.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0087_rename__schemas_m2m_artifact_feature_sets_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0088_schema_components.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0089_subsequent_runs.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0090_runproject_project_runs.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0091_alter_featurevalue_options_alter_space_options_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0092_alter_artifactfeaturevalue_artifact_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0093_alter_schemacomponent_unique_together.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0094_writeloglock_writelogmigrationstate_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0095_remove_rundata_flextable.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0096_remove_artifact__param_values_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0097_remove_schemaparam_param_remove_paramvalue_param_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0098_alter_feature_type_alter_project_type_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0099_alter_writelog_seqno.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0100_branch_alter_artifact__branch_code_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0101_alter_artifact_hash_alter_feature_name_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0102_remove_writelog_branch_code_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0103_remove_writelog_migration_state_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0104_alter_branch_uid.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0105_record_unique_name.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0106_transfer_data_migration.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0107_add_schema_to_record.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0108_remove_record_sheet_remove_sheetproject_sheet_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0109_record_input_of_runs_alter_record_run_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0110_rename_values_artifacts_record_linked_artifacts.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0111_remove_record__sort_order.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0112_alter_recordartifact_feature_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0113_lower_case_branch_and_space_names.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0114_alter_run__status_code.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0115_alter_space_uid.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0116_remove_artifact_unique_artifact_storage_key_hash_and_more.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0117_fix_artifact_storage_hash_unique_constraints.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0118_alter_recordproject_value_projectrecord.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0119_rename_records_project_linked_in_records.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0119_squashed.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0120_add_record_fk_constraint.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/0121_recorduser.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/migrations/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_describe.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_django.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_feature_manager.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_from_values.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_is_versioned.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_label_manager.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/_relations.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/artifact_set.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/can_curate.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/collection.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/feature.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/has_parents.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/project.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/query_manager.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/query_set.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/record.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/run.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/save.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/schema.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/storage.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/transform.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/models/ulabel.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/py.typed +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/setup/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/setup/_switch.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/setup/core/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/setup/errors/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/lamindb/setup/types/__init__.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/noxfile.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/pyproject.toml +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/conftest.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/_dataset_fixtures.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/conftest.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/basic-r-notebook.Rmd.cleaned.html +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/basic-r-notebook.Rmd.html +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/duplicate/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/no-title.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/with-title-initialized-consecutive-finish-not-last-cell.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/notebooks/with-title-initialized-consecutive-finish.ipynb +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/duplicate1/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/duplicate2/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/duplicate3/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/duplicate4/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/duplicate5/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/script-to-test-filename-change.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/scripts/script-to-test-versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_artifact.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_artifact_folders.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_can_curate.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_collection.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_data.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_db.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_delete.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_describe_and_df_calls.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_dtype.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_feature.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_feature_label_manager.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_from_values.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_has_parents.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_integrity.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_load.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_manager.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_models.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_notebooks.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_queryset.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_run.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_save.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_schema.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_search.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_settings.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_sqlrecord.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_storage.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_track.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_tracked.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_transform.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_ulabel.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_versioning.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_view.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/core/test_visibility.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/conftest.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_cat_managers.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_curate_from_croissant.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_curators_examples.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_curators_general.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_curators_multivalue.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_cxg_curator.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_dataframe_curators_accounting_example.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/curators/test_records.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/conftest.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/jwt_utils.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/scripts/check_lamin_dev.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/scripts/clean_lamin_dev.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/permissions/scripts/setup_instance.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/conftest.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_artifact_storage.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_artifact_zarr.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_cache.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_connect_reconnect.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_storage_lifecycle.py +0 -0
- {lamindb-1.11.0 → lamindb-1.11.1}/tests/storage/test_transfer.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: lamindb
|
3
|
-
Version: 1.11.
|
3
|
+
Version: 1.11.1
|
4
4
|
Summary: A data framework for biology.
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
6
6
|
Requires-Python: >=3.10,<3.14
|
@@ -129,7 +129,7 @@ Conversely, you can query artifacts by the script that created them.
|
|
129
129
|
ln.Artifact.get(transform__key="create-fasta.py") # query artifact by transform key
|
130
130
|
```
|
131
131
|
|
132
|
-
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/
|
132
|
+
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/9K1dteZ6Qx0EXK8g).
|
133
133
|
|
134
134
|
<img src="https://lamin-site-assets.s3.amazonaws.com/.lamindb/6sofuDVvTANB0f480001.png" width="850">
|
135
135
|
|
@@ -76,7 +76,7 @@ Conversely, you can query artifacts by the script that created them.
|
|
76
76
|
ln.Artifact.get(transform__key="create-fasta.py") # query artifact by transform key
|
77
77
|
```
|
78
78
|
|
79
|
-
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/
|
79
|
+
Data lineage is just one type of metadata to help analysis and model training through queries, validation, and annotation. Here is a more [comprehensive example](https://lamin.ai/laminlabs/lamindata/artifact/9K1dteZ6Qx0EXK8g).
|
80
80
|
|
81
81
|
<img src="https://lamin-site-assets.s3.amazonaws.com/.lamindb/6sofuDVvTANB0f480001.png" width="850">
|
82
82
|
|
@@ -600,9 +600,11 @@ class Context:
|
|
600
600
|
if pypackages is None:
|
601
601
|
pypackages = True
|
602
602
|
description = None
|
603
|
+
if path.suffix == ".ipynb" and path.stem.startswith("Untitled"):
|
604
|
+
raise RuntimeError(
|
605
|
+
"Your notebook is untitled, please rename it before tracking"
|
606
|
+
)
|
603
607
|
path_str = path.as_posix()
|
604
|
-
if path_str.endswith("Untitled.ipynb"):
|
605
|
-
raise RuntimeError("Please rename your notebook before tracking it")
|
606
608
|
if path_str.startswith("/fileId="):
|
607
609
|
logger.warning("tracking on Google Colab is experimental")
|
608
610
|
path_str = get_notebook_key_colab()
|
@@ -10,7 +10,7 @@ import fsspec
|
|
10
10
|
import lamindb_setup as ln_setup
|
11
11
|
import pandas as pd
|
12
12
|
from anndata import AnnData
|
13
|
-
from django.db import connections, models
|
13
|
+
from django.db import ProgrammingError, connections, models
|
14
14
|
from django.db.models import CASCADE, PROTECT, Q
|
15
15
|
from django.db.models.functions import Length
|
16
16
|
from lamin_utils import colors, logger
|
@@ -32,7 +32,7 @@ from lamindb.base.fields import (
|
|
32
32
|
CharField,
|
33
33
|
ForeignKey,
|
34
34
|
)
|
35
|
-
from lamindb.errors import FieldValidationError, UnknownStorageLocation
|
35
|
+
from lamindb.errors import FieldValidationError, NoWriteAccess, UnknownStorageLocation
|
36
36
|
from lamindb.models.query_set import QuerySet
|
37
37
|
|
38
38
|
from ..base.users import current_user_id
|
@@ -294,6 +294,7 @@ def process_data(
|
|
294
294
|
|
295
295
|
def get_stat_or_artifact(
|
296
296
|
path: UPath,
|
297
|
+
storage: Record,
|
297
298
|
key: str | None = None,
|
298
299
|
check_hash: bool = True,
|
299
300
|
is_replace: bool = False,
|
@@ -331,14 +332,14 @@ def get_stat_or_artifact(
|
|
331
332
|
else:
|
332
333
|
result = (
|
333
334
|
Artifact.objects.using(instance)
|
334
|
-
.filter(Q(hash=hash) | Q(key=key, storage=
|
335
|
+
.filter(Q(hash=hash) | Q(key=key, storage=storage))
|
335
336
|
.order_by("-created_at")
|
336
337
|
.all()
|
337
338
|
)
|
338
339
|
artifact_with_same_hash_exists = result.filter(hash=hash).count() > 0
|
339
340
|
if not artifact_with_same_hash_exists and len(result) > 0:
|
340
341
|
logger.important(
|
341
|
-
f"creating new artifact version for key='{key}' (storage: '{
|
342
|
+
f"creating new artifact version for key='{key}' (storage: '{storage.root}')"
|
342
343
|
)
|
343
344
|
previous_artifact_version = result[0]
|
344
345
|
if artifact_with_same_hash_exists:
|
@@ -438,6 +439,7 @@ def get_artifact_kwargs_from_data(
|
|
438
439
|
|
439
440
|
stat_or_artifact = get_stat_or_artifact(
|
440
441
|
path=path,
|
442
|
+
storage=storage,
|
441
443
|
key=key,
|
442
444
|
instance=using_key,
|
443
445
|
is_replace=is_replace,
|
@@ -3072,8 +3074,12 @@ def _track_run_input(
|
|
3072
3074
|
)
|
3073
3075
|
data.save()
|
3074
3076
|
is_valid = True
|
3077
|
+
data_run_id, run_id = data.run_id, run.id
|
3078
|
+
different_runs = (data_run_id != run_id) or (
|
3079
|
+
data_run_id is None and run_id is None
|
3080
|
+
)
|
3075
3081
|
return (
|
3076
|
-
|
3082
|
+
different_runs
|
3077
3083
|
and not data._state.adding # this seems duplicated with data._state.db is None
|
3078
3084
|
and is_valid
|
3079
3085
|
)
|
@@ -3118,8 +3124,9 @@ def _track_run_input(
|
|
3118
3124
|
if track_run_input:
|
3119
3125
|
if run is None:
|
3120
3126
|
raise ValueError("No run context set. Call `ln.track()`.")
|
3121
|
-
|
3122
|
-
|
3127
|
+
if run._state.adding:
|
3128
|
+
# avoid adding the same run twice
|
3129
|
+
run.save()
|
3123
3130
|
if data_class_name == "artifact":
|
3124
3131
|
IsLink = run.input_artifacts.through
|
3125
3132
|
links = [
|
@@ -3131,7 +3138,41 @@ def _track_run_input(
|
|
3131
3138
|
IsLink(run_id=run.id, collection_id=data_id)
|
3132
3139
|
for data_id in input_data_ids
|
3133
3140
|
]
|
3134
|
-
|
3141
|
+
try:
|
3142
|
+
IsLink.objects.bulk_create(links, ignore_conflicts=True)
|
3143
|
+
except ProgrammingError as e:
|
3144
|
+
if "new row violates row-level security policy" in str(e):
|
3145
|
+
instance = setup_settings.instance
|
3146
|
+
available_spaces = instance.available_spaces
|
3147
|
+
if available_spaces is None:
|
3148
|
+
raise NoWriteAccess(
|
3149
|
+
f"You’re not allowed to write to the instance {instance.slug}.\n"
|
3150
|
+
"Please contact administrators of the instance if you need write access."
|
3151
|
+
) from None
|
3152
|
+
write_access_spaces = (
|
3153
|
+
available_spaces["admin"] + available_spaces["write"]
|
3154
|
+
)
|
3155
|
+
no_write_access_spaces = {
|
3156
|
+
data_space
|
3157
|
+
for data in input_data
|
3158
|
+
if (data_space := data.space) not in write_access_spaces
|
3159
|
+
}
|
3160
|
+
if (run_space := run.space) not in write_access_spaces:
|
3161
|
+
no_write_access_spaces.add(run_space)
|
3162
|
+
if len(no_write_access_spaces) > 1:
|
3163
|
+
name_msg = ", ".join(
|
3164
|
+
f"'{space.name}'" for space in no_write_access_spaces
|
3165
|
+
)
|
3166
|
+
space_msg = "spaces"
|
3167
|
+
else:
|
3168
|
+
name_msg = f"'{no_write_access_spaces.pop().name}'"
|
3169
|
+
space_msg = "space"
|
3170
|
+
raise NoWriteAccess(
|
3171
|
+
f"You’re not allowed to write to the {space_msg} {name_msg}.\n"
|
3172
|
+
f"Please contact administrators of the {space_msg} if you need write access."
|
3173
|
+
) from None
|
3174
|
+
else:
|
3175
|
+
raise e
|
3135
3176
|
|
3136
3177
|
|
3137
3178
|
# privates currently dealt with separately
|
@@ -918,7 +918,7 @@ class BaseSQLRecord(models.Model, metaclass=Registry):
|
|
918
918
|
):
|
919
919
|
raise NoWriteAccess(
|
920
920
|
f"You’re not allowed to write to the space '{self.space.name}'.\n"
|
921
|
-
"Please contact
|
921
|
+
"Please contact administrators of the space if you need write access."
|
922
922
|
) from None
|
923
923
|
else:
|
924
924
|
raise
|
@@ -100,6 +100,11 @@ feature = ln.Feature(name="team_access_feature", dtype=float)
|
|
100
100
|
feature.space = team_access
|
101
101
|
feature.save()
|
102
102
|
|
103
|
+
# artifact for testing tracking error
|
104
|
+
artifact = ln.Artifact("README.md", description="test tracking error")
|
105
|
+
artifact.space = select_access
|
106
|
+
artifact.save()
|
107
|
+
|
103
108
|
print("Created models")
|
104
109
|
|
105
110
|
# save jwt db connection
|
@@ -10,6 +10,7 @@ import pytest
|
|
10
10
|
from django.db import connection, transaction
|
11
11
|
from django.db.utils import IntegrityError, InternalError, ProgrammingError
|
12
12
|
from jwt_utils import sign_jwt
|
13
|
+
from lamindb.models.artifact import _track_run_input
|
13
14
|
from lamindb_setup.core.django import DBToken, db_token_manager
|
14
15
|
from psycopg2.extensions import adapt
|
15
16
|
|
@@ -294,6 +295,49 @@ def test_write_role():
|
|
294
295
|
|
295
296
|
ln.ULabel(name="new label team default space").save()
|
296
297
|
|
298
|
+
with psycopg2.connect(pgurl) as conn, conn.cursor() as cur:
|
299
|
+
cur.execute(
|
300
|
+
"UPDATE hubmodule_team SET role = 'read' WHERE uid = 'teamuiduid11'",
|
301
|
+
)
|
302
|
+
|
303
|
+
|
304
|
+
def test_tracking_error():
|
305
|
+
# switch user role to write to create the transform and run
|
306
|
+
with psycopg2.connect(pgurl) as conn, conn.cursor() as cur:
|
307
|
+
cur.execute(
|
308
|
+
"UPDATE hubmodule_account SET role = 'write' WHERE id = %s", (user_uuid,)
|
309
|
+
)
|
310
|
+
|
311
|
+
artifact = ln.Artifact.get(description="test tracking error")
|
312
|
+
|
313
|
+
transform = ln.Transform(key="My transform").save()
|
314
|
+
run = ln.Run(transform) # unsaved, this is saved inside _track_run_input
|
315
|
+
|
316
|
+
# this error because ln.setup.settings.instance._db_permissions is not jwt
|
317
|
+
# it is None
|
318
|
+
with pytest.raises(ln.errors.NoWriteAccess) as e:
|
319
|
+
_track_run_input(artifact, run)
|
320
|
+
assert "You’re not allowed to write to the instance " in str(e)
|
321
|
+
|
322
|
+
# the instance is local so we set this manually
|
323
|
+
ln.setup.settings.instance._db_permissions = "jwt"
|
324
|
+
# artifact.space is not available for writes
|
325
|
+
with pytest.raises(ln.errors.NoWriteAccess) as e:
|
326
|
+
_track_run_input(artifact, run)
|
327
|
+
assert "You’re not allowed to write to the space " in str(e)
|
328
|
+
|
329
|
+
# switch user role back to read
|
330
|
+
with psycopg2.connect(pgurl) as conn, conn.cursor() as cur:
|
331
|
+
cur.execute(
|
332
|
+
"UPDATE hubmodule_account SET role = 'read' WHERE id = %s", (user_uuid,)
|
333
|
+
)
|
334
|
+
# as the user is read-only now, 2 spaces are unavailable for writes (artifact.space, run.space)
|
335
|
+
with pytest.raises(ln.errors.NoWriteAccess) as e:
|
336
|
+
_track_run_input(artifact, run)
|
337
|
+
assert "You’re not allowed to write to the spaces " in str(e)
|
338
|
+
|
339
|
+
ln.setup.settings.instance._db_permissions = None
|
340
|
+
|
297
341
|
|
298
342
|
def test_token_reset():
|
299
343
|
db_token_manager.reset()
|
@@ -680,10 +680,18 @@ def test_compressed():
|
|
680
680
|
_compress(adata_f, adata_gz)
|
681
681
|
|
682
682
|
artifact = ln.Artifact.from_anndata(adata_gz, key="adata.h5ad.gz").save()
|
683
|
+
|
684
|
+
print("begin open adata.h5ad.gz")
|
685
|
+
|
683
686
|
with artifact.open() as store:
|
684
687
|
assert isinstance(store, AnnDataAccessor)
|
688
|
+
|
689
|
+
print("begin load adata.h5ad.gz")
|
690
|
+
|
685
691
|
assert isinstance(artifact.load(), ad.AnnData)
|
686
692
|
|
693
|
+
print("begin open adata.h5ad.gz with compression=None")
|
694
|
+
|
687
695
|
with pytest.raises(OSError):
|
688
696
|
artifact.open(compression=None)
|
689
697
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lamindb-1.11.0 → lamindb-1.11.1}/lamindb/examples/croissant/mini_immuno.anndata.zarr_metadata.json
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|