def test_from_file_pre_081(self): d = STAC_IO.read_json(self.label_example_1_uri) d['properties']['label:property'] = d['properties']['label:properties'] d['properties'].pop('label:properties') d['properties']['label:overview'] = d['properties']['label:overviews'] d['properties'].pop('label:overviews') d['properties']['label:method'] = d['properties']['label:methods'] d['properties'].pop('label:methods') d['properties']['label:task'] = d['properties']['label:tasks'] d['properties'].pop('label:tasks') label_example_1 = LabelItem.from_dict(d) self.assertEqual(len(label_example_1.label_tasks), 1)
def stac_object_from_dict(d, href=None, root=None): """Determines how to deserialize a dictionary into a STAC object. Args: d (dict): The dict to parse. href (str): Optional href that is the file location of the object being parsed. root (Catalog or Collection): Optional root of the catalog for this object. If provided, the root's resolved object cache can be used to search for previously resolved instances of the STAC object. Note: This is used internally in STAC_IO to deserialize STAC Objects. It is in the top level __init__ in order to avoid circular dependencies. """ if identify_stac_object_type(d) == STACObjectType.ITEM: collection_cache = None if root is not None: collection_cache = root._resolved_objects.as_collection_cache() merge_common_properties(d, json_href=href, collection_cache=collection_cache) info = identify_stac_object(d) d = migrate_to_latest(d, info) if info.object_type == STACObjectType.CATALOG: return Catalog.from_dict(d, href=href, root=root) if info.object_type == STACObjectType.COLLECTION: return Collection.from_dict(d, href=href, root=root) if info.object_type == STACObjectType.ITEMCOLLECTION: if Extension.SINGLE_FILE_STAC in info.common_extensions: return SingleFileSTAC.from_dict(d, href=href, root=root) return ItemCollection.from_dict(d, href=href, root=root) if info.object_type == STACObjectType.ITEM: if Extension.EO in info.common_extensions: return EOItem.from_dict(d, href=href, root=root) if Extension.LABEL in info.common_extensions: return LabelItem.from_dict(d, href=href, root=root) return Item.from_dict(d, href=href, root=root)
def test_validate_label(self): sv = SchemaValidator() with open(self.label_example_1_uri) as f: label_example_1_dict = json.load(f) sv.validate_dict(label_example_1_dict, LabelItem) with TemporaryDirectory() as tmp_dir: cat_dir = os.path.join(tmp_dir, 'catalog') catalog = TestCases.test_case_1() label_item = LabelItem.from_dict(label_example_1_dict) catalog.add_item(label_item) catalog.normalize_and_save(cat_dir, catalog_type=CatalogType.SELF_CONTAINED) cat_read = Catalog.from_file(os.path.join(cat_dir, 'catalog.json')) label_item_read = cat_read.get_item("label-example-1-label-item") sv = SchemaValidator() sv.validate_object(label_item_read)