diff --git a/src/main/python/gov/usgs/earthquake/nshmp/netcdf/database/database.py b/src/main/python/gov/usgs/earthquake/nshmp/netcdf/database/database.py index 1a450ec45497653a0eacd7c9d1b0a945c8104b9f..04af6b6a21ab381dfbacadd05f16ec238fad2f45 100644 --- a/src/main/python/gov/usgs/earthquake/nshmp/netcdf/database/database.py +++ b/src/main/python/gov/usgs/earthquake/nshmp/netcdf/database/database.py @@ -169,11 +169,12 @@ class Database: Download files defined in catalog.yml for a NSHM """ - for item in items: - if item["id"] == "LOCAL": + for _item in items: + item: dict = _item + if item.get("id") == "LOCAL": self._get_local_files(nshm=nshm, nshm_dir=nshm_dir, item=item) else: - response = self._session.get_item(itemid=item["id"]) + response = self._session.get_item(itemid=item.get("id")) database_files = self._session.get_item_file_info(item=response) self._get_files( nshm=nshm, nshm_dir=nshm_dir, item=item, database_files=database_files @@ -214,19 +215,22 @@ class Database: """ database_info: list[DatabaseInfo] = [] - for catalog in catalogs: - items = catalog["items"] - nshm_str = catalog["nshm"] - description = catalog["description"] + for _catalog in catalogs: + catalog: dict = _catalog + items = catalog.get("items") + nshm_str = catalog.get("nshm") + description = catalog.get("description") nshm = Nshm.from_string(nshm_str=nshm_str) if self.inputs.has_nshm(nshm=nshm) is True or self.inputs.all is True: metadata: list[ScienceBaseMetadata] = [] - for item in items: + for _item in items: + item: dict = _item metadata.append( ScienceBaseMetadata( - science_base_version=item["science_base_version"], url=item["url"] + science_base_version=item.get("science_base_version"), + url=item.get("url"), ) ) @@ -236,6 +240,7 @@ class Database: description=description, data_path=nshm_dir, database_directory=self.inputs.db_dir, + map_file=catalog.get("map_file", None), nshm=nshm, science_base_metadata=metadata, ) @@ -257,7 +262,9 @@ class Database: else: print(f"File ({Path(str(path)[0:-4]).name}) already exists, skipping") - def _get_files(self, nshm: Nshm, nshm_dir: Path, item: dict, database_files: list) -> None: + def _get_files( + self, nshm: Nshm, nshm_dir: Path, item: dict, database_files: list[dict] + ) -> None: """Get files Find matching files from config.yml to database files @@ -268,21 +275,25 @@ class Database: with console.status(status_msg, spinner="pong") as status: with ThreadPoolExecutor() as executor: - if item["files"] == "ALL": - for nshm_file in database_files: + if item.get("files") == "ALL": + for _nshm_file in database_files: + nshm_file: dict = _nshm_file futures.append( executor.submit( self._get_file, nshm=nshm, - nshm_file=Path(nshm_file["name"]), + nshm_file=Path(nshm_file.get("name")), nshm_dir=nshm_dir, - url=nshm_file["url"], + url=nshm_file.get("url"), ) ) else: - for nshm_file in item["files"]: + for _nshm_file in item.get("files"): + nshm_file: dict = _nshm_file database_file = list( - filter(lambda db_file: (db_file["name"] == nshm_file), database_files) + filter( + lambda db_file: (db_file.get("name") == nshm_file), database_files + ) ) if len(database_file) == 0: id = item["id"] @@ -294,7 +305,7 @@ class Database: nshm=nshm, nshm_file=Path(nshm_file), nshm_dir=nshm_dir, - url=database_file.pop()["url"], + url=database_file.pop().get("url"), ) ) status.stop()