about summary refs log tree commit diff
path: root/quality_control/average.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-05-18 10:36:10 +0300
committerFrederick Muriuki Muriithi2022-05-18 10:36:10 +0300
commit582686e030b660f218cb7091aaab3cafa103465d (patch)
treee035d570c0a755031758770f4fcd3b240638e891 /quality_control/average.py
parent4be0ad66b86e238dd92da191061ffc63bee3d09f (diff)
downloadgn-uploader-582686e030b660f218cb7091aaab3cafa103465d.tar.gz
Return errors when found or None otherwise
This commit adds a number of functions that return the error object
when an error is found, or `None` otherwise. It avoids the use of
exceptions as control flow constructs.
Diffstat (limited to 'quality_control/average.py')
-rw-r--r--quality_control/average.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/quality_control/average.py b/quality_control/average.py
index 2907b9c..9ca16a9 100644
--- a/quality_control/average.py
+++ b/quality_control/average.py
@@ -1,6 +1,8 @@
 """Contain logic for checking average files"""
 import re
+from typing import Union
 
+from .errors import InvalidValue
 from .errors import InvalidCellValue
 
 def valid_value(val):
@@ -11,3 +13,13 @@ def valid_value(val):
         f"Invalid value '{val}'. "
         "Expected string representing a number with exactly three decimal "
         "places.")
+
+def invalid_value(line_number: int, column_number: int, val: str) -> Union[
+        InvalidValue, None]:
+    if re.search(r"^[0-9]+\.[0-9]{3}$", val):
+        return None
+    return InvalidValue(
+        line_number, column_number, val, (
+            f"Invalid value '{val}'. "
+            "Expected string representing a number with exactly three decimal "
+            "places."))