From 369d3d766d4fd48ead6e7ce194010dda9cb936dd Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas@kluyver.me.uk>
Date: Thu, 9 Jul 2020 16:19:19 +0100
Subject: [PATCH] Let errors parsing 'intelli-list' propagate

---
 xfel_calibrate/calibrate.py | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/xfel_calibrate/calibrate.py b/xfel_calibrate/calibrate.py
index b865c1384..52470a648 100755
--- a/xfel_calibrate/calibrate.py
+++ b/xfel_calibrate/calibrate.py
@@ -101,6 +101,7 @@ def make_intelli_list(ltype):
 
     """
     class IntelliListAction(argparse.Action):
+        element_type = ltype
 
         def __init__(self, *args, **kwargs):
             super(IntelliListAction, self).__init__(*args, **kwargs)
@@ -109,24 +110,22 @@ def make_intelli_list(ltype):
 
             parsed_values = []
             values = ",".join(values)
-            try:
-                if isinstance(values, str):
-                    for rcomp in values.split(","):
-                        if "-" in rcomp:
-                            start, end = rcomp.split("-")
-                            parsed_values += list(range(int(start), int(end)))
-                        else:
-                            parsed_values += [int(rcomp)]
-                elif isinstance(values, (list, tuple)):
-                    parsed_values = values
-                else:
-                    parsed_values = [values, ]
-            except Exception as e:
-                print('ERROR:', e)
-            parsed_values = [self.ltype(p) for p in parsed_values]
+            if isinstance(values, str):
+                for rcomp in values.split(","):
+                    if "-" in rcomp:
+                        start, end = rcomp.split("-")
+                        parsed_values += list(range(int(start), int(end)))
+                    else:
+                        parsed_values += [int(rcomp)]
+            elif isinstance(values, (list, tuple)):
+                parsed_values = values
+            else:
+                parsed_values = [values, ]
+
+            parsed_values = [self.element_type(p) for p in parsed_values]
             print("Parsed input {} to {}".format(values, parsed_values))
             setattr(namespace, self.dest, parsed_values)
-    IntelliListAction.ltype = ltype
+
     return IntelliListAction
 
 
-- 
GitLab