From 55328795d28590c42a682caf24dd64fbde8c1a87 Mon Sep 17 00:00:00 2001 From: Noa Aviel Dove Date: Wed, 16 Oct 2024 14:52:49 -0700 Subject: [PATCH] [r] Move `table_name` to `version` field in AnVIL bundles (#6639) --- src/azul/indexer/document.py | 2 +- .../metadata/anvil/indexer/transform.py | 2 - .../plugins/repository/tdr_anvil/__init__.py | 24 ++++--- ...2-e274-affe-aabc-eb3db63ad068.results.json | 64 +++++++++---------- test/indexer/test_anvil.py | 11 ++-- test/integration_test.py | 20 +----- test/service/test_manifest.py | 15 +++-- test/service/test_response_anvil.py | 16 ++--- 8 files changed, 66 insertions(+), 88 deletions(-) diff --git a/src/azul/indexer/document.py b/src/azul/indexer/document.py index 3aa41da0a..d4ed37f7b 100644 --- a/src/azul/indexer/document.py +++ b/src/azul/indexer/document.py @@ -552,7 +552,7 @@ def _from_index(cls, ) -> 'ContributionCoordinates[CataloguedEntityReference]': entity_type = index_name.qualifier assert index_name.doc_type is DocumentType.contribution - entity_id, deleted, bundle_uuid, bundle_version = document_id.split('_') + entity_id, deleted, bundle_uuid, bundle_version = document_id.split('_', 3) if deleted == 'deleted': deleted = True elif deleted == 'exists': diff --git a/src/azul/plugins/metadata/anvil/indexer/transform.py b/src/azul/plugins/metadata/anvil/indexer/transform.py index 20107fb91..dab724291 100644 --- a/src/azul/plugins/metadata/anvil/indexer/transform.py +++ b/src/azul/plugins/metadata/anvil/indexer/transform.py @@ -423,8 +423,6 @@ def reconcile_inner_entities(cls, ) -> tuple[JSON, BundleFQID]: this_entity, this_bundle = this that_entity, that_bundle = that - # All AnVIL bundles use a fixed known version - assert this_bundle.version == that_bundle.version, (this, that) if this_entity.keys() == that_entity.keys(): return this else: diff --git a/src/azul/plugins/repository/tdr_anvil/__init__.py b/src/azul/plugins/repository/tdr_anvil/__init__.py index deb163b79..134d9fb91 100644 --- a/src/azul/plugins/repository/tdr_anvil/__init__.py +++ b/src/azul/plugins/repository/tdr_anvil/__init__.py @@ -10,6 +10,7 @@ AbstractSet, Callable, Iterable, + cast, ) import attrs @@ -116,16 +117,14 @@ class BundleType(Enum): class TDRAnvilBundleFQIDJSON(SourcedBundleFQIDJSON): - table_name: str + pass @attrs.frozen(kw_only=True) class TDRAnvilBundleFQID(TDRBundleFQID): - table_name: BundleType = attrs.field(converter=BundleType) def to_json(self) -> TDRAnvilBundleFQIDJSON: - return dict(super().to_json(), - table_name=self.table_name.value) + return cast(TDRAnvilBundleFQIDJSON, super().to_json()) class TDRAnvilBundle(AnvilBundle[TDRAnvilBundleFQID], TDRBundle): @@ -228,13 +227,12 @@ def _list_bundles(self, bundles.append(TDRAnvilBundleFQID( source=source, uuid=bundle_uuid, - version=self._version, - table_name=BundleType(row['table_name']) + version=row['table_name'] )) return bundles def resolve_bundle(self, fqid: SourcedBundleFQIDJSON) -> TDRAnvilBundleFQID: - if 'table_name' not in fqid: + if fqid['version'] is None: # Resolution of bundles without the table name is expensive, so we # only support it during canning. assert not config.is_in_lambda, ('Bundle FQID lacks table name', fqid) @@ -254,18 +252,18 @@ def resolve_bundle(self, fqid: SourcedBundleFQIDJSON) -> TDRAnvilBundleFQID: return super().resolve_bundle(fqid) def _emulate_bundle(self, bundle_fqid: TDRAnvilBundleFQID) -> TDRAnvilBundle: - if bundle_fqid.table_name is BundleType.primary: + if bundle_fqid.version == BundleType.primary.value: log.info('Bundle %r is a primary bundle', bundle_fqid.uuid) return self._primary_bundle(bundle_fqid) - elif bundle_fqid.table_name is BundleType.supplementary: + elif bundle_fqid.version == BundleType.supplementary.value: log.info('Bundle %r is a supplementary bundle', bundle_fqid.uuid) return self._supplementary_bundle(bundle_fqid) - elif bundle_fqid.table_name is BundleType.duos: + elif bundle_fqid.version == BundleType.duos.value: assert config.duos_service_url is not None, bundle_fqid log.info('Bundle %r is a DUOS bundle', bundle_fqid.uuid) return self._duos_bundle(bundle_fqid) else: - assert False, bundle_fqid.table_name + assert False, bundle_fqid.version def _primary_bundle(self, bundle_fqid: TDRAnvilBundleFQID) -> TDRAnvilBundle: source = bundle_fqid.source @@ -321,7 +319,7 @@ def _supplementary_bundle(self, bundle_fqid: TDRAnvilBundleFQID) -> TDRAnvilBund self.bundle_uuid_version, self.datarepo_row_uuid_version) source = bundle_fqid.source.spec - table_name = bundle_fqid.table_name.value + table_name = bundle_fqid.version result = TDRAnvilBundle(fqid=bundle_fqid) columns = self._columns(table_name) bundle_entity = dict(one(self._run_sql(f''' @@ -367,7 +365,7 @@ def _bundle_entity(self, bundle_fqid: TDRAnvilBundleFQID) -> KeyReference: entity_id = uuids.change_version(bundle_uuid, self.bundle_uuid_version, self.datarepo_row_uuid_version) - table_name = bundle_fqid.table_name.value + table_name = bundle_fqid.version entity_type = table_name.removeprefix('anvil_') pk_column = entity_type + '_id' bundle_entity = one(self._run_sql(f''' diff --git a/test/indexer/data/826dea02-e274-affe-aabc-eb3db63ad068.results.json b/test/indexer/data/826dea02-e274-affe-aabc-eb3db63ad068.results.json index 1cb6ea4a3..86470be78 100644 --- a/test/indexer/data/826dea02-e274-affe-aabc-eb3db63ad068.results.json +++ b/test/indexer/data/826dea02-e274-affe-aabc-eb3db63ad068.results.json @@ -236,7 +236,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -244,7 +244,7 @@ { "_index": "azul_v2_nadove4_test_activities", "_type": "_doc", - "_id": "1509ef40-d1ba-440d-b298-16b7c173dcd4_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "1509ef40-d1ba-440d-b298-16b7c173dcd4_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "1509ef40-d1ba-440d-b298-16b7c173dcd4", @@ -418,13 +418,13 @@ } ] }, - "document_id": "1509ef40-d1ba-440d-b298-16b7c173dcd4_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "1509ef40-d1ba-440d-b298-16b7c173dcd4_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -670,7 +670,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -678,7 +678,7 @@ { "_index": "azul_v2_nadove4_test_files", "_type": "_doc", - "_id": "15b76f9c-6b46-433f-851d-34e89f1b9ba6_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "15b76f9c-6b46-433f-851d-34e89f1b9ba6_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "15b76f9c-6b46-433f-851d-34e89f1b9ba6", @@ -852,13 +852,13 @@ } ] }, - "document_id": "15b76f9c-6b46-433f-851d-34e89f1b9ba6_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "15b76f9c-6b46-433f-851d-34e89f1b9ba6_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -1232,7 +1232,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -1240,7 +1240,7 @@ { "_index": "azul_v2_nadove4_test_datasets", "_type": "_doc", - "_id": "2370f948-2783-4eb6-afea-e022897f4dcf_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "2370f948-2783-4eb6-afea-e022897f4dcf_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "2370f948-2783-4eb6-afea-e022897f4dcf", @@ -1459,13 +1459,13 @@ } ] }, - "document_id": "2370f948-2783-4eb6-afea-e022897f4dcf_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "2370f948-2783-4eb6-afea-e022897f4dcf_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -1715,7 +1715,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -1755,7 +1755,7 @@ { "_index": "azul_v2_nadove4_test_files", "_type": "_doc", - "_id": "3b17377b-16b1-431c-9967-e5d01fc5923f_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "3b17377b-16b1-431c-9967-e5d01fc5923f_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "3b17377b-16b1-431c-9967-e5d01fc5923f", @@ -1929,13 +1929,13 @@ } ] }, - "document_id": "3b17377b-16b1-431c-9967-e5d01fc5923f_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "3b17377b-16b1-431c-9967-e5d01fc5923f_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -2176,7 +2176,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -2214,7 +2214,7 @@ { "_index": "azul_v2_nadove4_test_activities", "_type": "_doc", - "_id": "816e364e-1193-4e5b-a91a-14e4b009157c_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "816e364e-1193-4e5b-a91a-14e4b009157c_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "816e364e-1193-4e5b-a91a-14e4b009157c", @@ -2388,13 +2388,13 @@ } ] }, - "document_id": "816e364e-1193-4e5b-a91a-14e4b009157c_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "816e364e-1193-4e5b-a91a-14e4b009157c_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -2692,7 +2692,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -2700,7 +2700,7 @@ { "_index": "azul_v2_nadove4_test_biosamples", "_type": "_doc", - "_id": "826dea02-e274-4ffe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "826dea02-e274-4ffe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "826dea02-e274-4ffe-aabc-eb3db63ad068", @@ -2919,13 +2919,13 @@ } ] }, - "document_id": "826dea02-e274-4ffe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "826dea02-e274-4ffe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -3272,7 +3272,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -3280,7 +3280,7 @@ { "_index": "azul_v2_nadove4_test_bundles", "_type": "_doc", - "_id": "826dea02-e274-affe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "826dea02-e274-affe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "826dea02-e274-affe-aabc-eb3db63ad068", @@ -3499,13 +3499,13 @@ } ] }, - "document_id": "826dea02-e274-affe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "826dea02-e274-affe-aabc-eb3db63ad068_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, @@ -3845,7 +3845,7 @@ "bundles": [ { "uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "version": "2022-06-01T00:00:00.000000Z" + "version": "anvil_biosample" } ] } @@ -3853,7 +3853,7 @@ { "_index": "azul_v2_nadove4_test_donors", "_type": "_doc", - "_id": "bfd991f2-2797-4083-972a-da7c6d7f1b2e_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "_id": "bfd991f2-2797-4083-972a-da7c6d7f1b2e_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "_score": 1.0, "_source": { "entity_id": "bfd991f2-2797-4083-972a-da7c6d7f1b2e", @@ -4072,13 +4072,13 @@ } ] }, - "document_id": "bfd991f2-2797-4083-972a-da7c6d7f1b2e_exists_826dea02-e274-affe-aabc-eb3db63ad068_2022-06-01T00:00:00.000000Z", + "document_id": "bfd991f2-2797-4083-972a-da7c6d7f1b2e_exists_826dea02-e274-affe-aabc-eb3db63ad068_anvil_biosample", "source": { "id": "6c87f0e1-509d-46a4-b845-7584df39263b", "spec": "tdr:bigquery:gcp:test_anvil_project:anvil_snapshot:/2" }, "bundle_uuid": "826dea02-e274-affe-aabc-eb3db63ad068", - "bundle_version": "2022-06-01T00:00:00.000000Z", + "bundle_version": "anvil_biosample", "bundle_deleted": false } }, diff --git a/test/indexer/test_anvil.py b/test/indexer/test_anvil.py index fe6dd4315..4273972c1 100644 --- a/test/indexer/test_anvil.py +++ b/test/indexer/test_anvil.py @@ -104,14 +104,11 @@ class AnvilIndexerTestCase(AnvilCannedBundleTestCase, IndexerTestCase): def bundle_fqid(cls, *, uuid, - version=None, - table_name=BundleType.primary + version=BundleType.primary.value, ) -> TDRAnvilBundleFQID: - assert version is None, 'All AnVIL bundles should use the same version' return TDRAnvilBundleFQID(source=cls.source, uuid=uuid, - version=cls.version, - table_name=table_name) + version=version) @classmethod def primary_bundle(cls) -> TDRAnvilBundleFQID: @@ -120,12 +117,12 @@ def primary_bundle(cls) -> TDRAnvilBundleFQID: @classmethod def supplementary_bundle(cls) -> TDRAnvilBundleFQID: return cls.bundle_fqid(uuid='6b0f6c0f-5d80-a242-accb-840921351cd5', - table_name=BundleType.supplementary) + version=BundleType.supplementary.value) @classmethod def duos_bundle(cls) -> TDRAnvilBundleFQID: return cls.bundle_fqid(uuid='2370f948-2783-aeb6-afea-e022897f4dcf', - table_name=BundleType.duos) + version=BundleType.duos.value) class TestAnvilIndexer(AnvilIndexerTestCase, diff --git a/test/integration_test.py b/test/integration_test.py index 7578acfeb..e87c61d7c 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -153,8 +153,6 @@ ) from azul.plugins.repository.tdr_anvil import ( BundleType, - TDRAnvilBundleFQID, - TDRAnvilBundleFQIDJSON, ) from azul.portal_service import ( PortalService, @@ -347,7 +345,7 @@ def _list_managed_access_bundles(self, if not ( # DUOS bundles are too sparse to fulfill the managed access tests config.is_anvil_enabled(catalog) - and cast(TDRAnvilBundleFQID, bundle_fqid).table_name is BundleType.duos + and bundle_fqid.version == BundleType.duos.value ) ) bundle_fqid = self.random.choice(bundle_fqids) @@ -1267,22 +1265,6 @@ def _get_indexed_bundles(self, bundle_fqid = SourcedBundleFQIDJSON(uuid=bundle[special_fields.bundle_uuid], version=bundle[special_fields.bundle_version], source=source) - if config.is_anvil_enabled(catalog): - # Every primary bundle contains 1 or more biosamples, 1 dataset, - # and 0 or more other entities. Biosamples only occur in primary - # bundles. - if len(hit['biosamples']) > 0: - table_name = BundleType.primary - # Supplementary bundles contain only 1 file and 1 dataset. - elif len(hit['files']) > 0: - table_name = BundleType.supplementary - # DUOS bundles contain only 1 dataset. - elif len(hit['datasets']) > 0: - table_name = BundleType.duos - else: - assert False, hit - bundle_fqid = cast(TDRAnvilBundleFQIDJSON, bundle_fqid) - bundle_fqid['table_name'] = table_name.value bundle_fqid = self.repository_plugin(catalog).resolve_bundle(bundle_fqid) indexed_fqids.add(bundle_fqid) return indexed_fqids diff --git a/test/service/test_manifest.py b/test/service/test_manifest.py index 92d0b5546..ac8ee6ca2 100644 --- a/test/service/test_manifest.py +++ b/test/service/test_manifest.py @@ -86,6 +86,9 @@ from azul.plugins.repository.dss import ( DSSBundle, ) +from azul.plugins.repository.tdr_anvil import ( + BundleType, +) from azul.service import ( Filters, FiltersJSON, @@ -1704,11 +1707,11 @@ class TestAnvilManifests(AnvilManifestTestCase): def bundles(cls) -> list[SourcedBundleFQID]: return [ cls.bundle_fqid(uuid='2370f948-2783-aeb6-afea-e022897f4dcf', - version=cls.version), + version=BundleType.duos.value), cls.bundle_fqid(uuid='6b0f6c0f-5d80-a242-accb-840921351cd5', - version=cls.version), + version=BundleType.supplementary.value), cls.bundle_fqid(uuid='826dea02-e274-affe-aabc-eb3db63ad068', - version=cls.version) + version=BundleType.primary.value) ] def test_compact_manifest(self): @@ -1723,9 +1726,9 @@ def test_compact_manifest(self): ), ( 'bundle_version', - '2022-06-01T00:00:00.000000Z', - '2022-06-01T00:00:00.000000Z', - '2022-06-01T00:00:00.000000Z' + 'anvil_file', + 'anvil_biosample', + 'anvil_biosample' ), ( 'source_id', diff --git a/test/service/test_response_anvil.py b/test/service/test_response_anvil.py index 9a176000c..cbfc8b632 100644 --- a/test/service/test_response_anvil.py +++ b/test/service/test_response_anvil.py @@ -55,7 +55,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -176,7 +176,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -531,7 +531,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -905,7 +905,7 @@ def test_entity_indices(self): { 'accessible': True, 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'datasets': [ @@ -1095,7 +1095,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -1476,7 +1476,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -1852,7 +1852,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [ @@ -1981,7 +1981,7 @@ def test_entity_indices(self): 'bundles': [ { 'bundle_uuid': '826dea02-e274-affe-aabc-eb3db63ad068', - 'bundle_version': '2022-06-01T00:00:00.000000Z' + 'bundle_version': 'anvil_biosample' } ], 'activities': [