From d4554cd9574683b15af2336e6f64eac0e4588e01 Mon Sep 17 00:00:00 2001 From: Nick Bearson <nickb@ssec.wisc.edu> Date: Fri, 13 May 2022 10:39:01 -0500 Subject: [PATCH] ensure --ctr-lat and --ctr-lon are valid latitudes & longitudes --- gridded_glm/libexec/_minute_gridder.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/gridded_glm/libexec/_minute_gridder.py b/gridded_glm/libexec/_minute_gridder.py index 320c59f..66eea03 100644 --- a/gridded_glm/libexec/_minute_gridder.py +++ b/gridded_glm/libexec/_minute_gridder.py @@ -64,7 +64,15 @@ import dask dask.config.set(num_workers=1) def create_parser(): + def bounded_float(afloat, inclusive_min, inclusive_max): + value = float(afloat) + if inclusive_min <= value <= inclusive_max: + return value + else: + raise argparse.ArgumentTypeError('valid range %s to %s' % (inclusive_min, inclusive_max)) + import argparse + from functools import partial prog = os.getenv('PROG_NAME', sys.argv[0]) parser = argparse.ArgumentParser(prog=prog, description=parse_desc, @@ -83,10 +91,10 @@ def create_parser(): "(default: full)") parser.add_argument("-t", "--create-tiles", default=False, action='store_true', help="create AWIPS-compatible tiles (default: off)") - parser.add_argument('--ctr-lat', metavar='latitude', - type=float, help='center latitude (required for meso)') - parser.add_argument('--ctr-lon', metavar='longitude', - type=float, help='center longitude (required for meso)') + parser.add_argument('--ctr-lat', metavar='LATITUDE', + type=partial(bounded_float, inclusive_min=-90, inclusive_max=90), help='center latitude (required for meso)') + parser.add_argument('--ctr-lon', metavar='LONGITUDE', + type=partial(bounded_float, inclusive_min=-180, inclusive_max=180), help='center longitude (required for meso)') parser.add_argument('-r', "--realtime", default=False, action='store_true', help="enable 'realtime' mode, where we expect only one input file,\n" "find the surrounding trio, and automatically determine if a full minute\n" -- GitLab