Skip to content

Commit b91871f

Browse files
authored
Merge pull request #770 from djhoese/bugfix-missing-dep-err-msg
2 parents 7d4eba7 + 69e3a22 commit b91871f

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

polar2grid/glue.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
from datetime import datetime
3535
from typing import Optional, Union
3636

37+
from satpy.node import MissingDependencies
38+
3739
# isort: off
3840
# hdf5plugin must be imported before h5py and xarray or it won't be available
3941
# Used by the FCI reader
@@ -368,7 +370,11 @@ def _run_processing(self):
368370
persist_geolocation = not arg_parser._reader_args.pop("no_persist_geolocation", False)
369371
if not products:
370372
return -1
371-
scn.load(products, **load_args, generate=False)
373+
try:
374+
scn.load(products, **load_args, generate=False)
375+
except KeyError as dep_key_error:
376+
_handle_missing_deps_keyerror(dep_key_error)
377+
return -1
372378
if persist_geolocation:
373379
scn = _persist_swath_definition_in_scene(scn)
374380
scn.generate_possible_composites(True)
@@ -476,6 +482,25 @@ def _set_preferred_chunk_size(preferred_chunk_size: int) -> Iterator[None]:
476482
yield
477483

478484

485+
def _handle_missing_deps_keyerror(dep_key_error: KeyError) -> None:
486+
miss_dep_exc = getattr(dep_key_error, "__context__", None)
487+
if not isinstance(miss_dep_exc, MissingDependencies):
488+
raise
489+
flat_queries = sorted(set(data_query for dep_set in miss_dep_exc.missing_dependencies for data_query in dep_set))
490+
flat_queries_dicts = [dq.to_dict() for dq in flat_queries]
491+
plural_s = "s" if len(flat_queries_dicts) > 1 else ""
492+
LOG.error(
493+
"Unknown product{} requested:\n\t{}".format(
494+
plural_s,
495+
"\n\t".join(
496+
(dq_dict["name"] if len(dq_dict) == 1 and "name" in dq_dict else repr(dq_dict))
497+
for dq_dict in flat_queries_dicts
498+
),
499+
)
500+
)
501+
LOG.debug("Unknown product requested", exc_info=True)
502+
503+
479504
def _persist_swath_definition_in_scene(scn: Scene) -> None:
480505
to_persist_swath_defs = _swaths_to_persist(scn)
481506
if not to_persist_swath_defs:

0 commit comments

Comments
 (0)