about summary refs log tree commit diff
path: root/quality_control
diff options
context:
space:
mode:
Diffstat (limited to 'quality_control')
-rw-r--r--quality_control/average.py3
-rw-r--r--quality_control/errors.py5
-rw-r--r--quality_control/parsing.py13
-rw-r--r--quality_control/standard_error.py3
4 files changed, 17 insertions, 7 deletions
diff --git a/quality_control/average.py b/quality_control/average.py
index c552ba3..3261e1c 100644
--- a/quality_control/average.py
+++ b/quality_control/average.py
@@ -4,7 +4,8 @@ import re
 from .errors import InvalidCellValue
 
 def valid_value(val):
-    if re.search("^[0-9]+\.[0-9]{3}$", val):
+    """Checks whether `val` is a valid value for averages"""
+    if re.search(r"^[0-9]+\.[0-9]{3}$", val):
         return float(val)
     raise InvalidCellValue(
         f"Invalid value '{val}'.\n"
diff --git a/quality_control/errors.py b/quality_control/errors.py
index 993748c..0802159 100644
--- a/quality_control/errors.py
+++ b/quality_control/errors.py
@@ -19,5 +19,6 @@ class DuplicateHeader(Exception):
         super().__init__(self, *args)
 
 class ParseError(Exception):
-    def __init(self, *args):
-        super().__init__(*args)
+    """Raised if any of the above exceptions are raised"""
+    def __init__(self, *args):
+        super().__init__(self, *args)
diff --git a/quality_control/parsing.py b/quality_control/parsing.py
index 8b2715a..6e5bb8f 100644
--- a/quality_control/parsing.py
+++ b/quality_control/parsing.py
@@ -1,3 +1,5 @@
+"""Module handling the high-level parsing of the files"""
+
 import csv
 from enum import Enum
 from functools import reduce
@@ -9,11 +11,13 @@ from quality_control.errors import (
     ParseError, DuplicateHeader, InvalidCellValue, InvalidHeaderValue)
 
 class FileType(Enum):
+    """Enumerate the expected file types"""
     AVERAGE = 1
     STANDARD_ERROR = 2
 
 def parse_strains(filepath):
-    with open(filepath) as strains_file:
+    """Parse the strains file"""
+    with open(filepath, encoding="utf8") as strains_file:
         reader = csv.DictReader(
             strains_file,
             fieldnames=[
@@ -43,6 +47,7 @@ LINE_PARSERS = {
 }
 
 def strain_names(strains):
+    """Retrieve a complete list of the names of the strains"""
     def __extract_strain_names(acc, strain):
         return acc + tuple(
             item for item in (strain["Name"], strain["Name2"])
@@ -50,6 +55,7 @@ def strain_names(strains):
     return reduce(__extract_strain_names, strains, tuple())
 
 def parse_file(filepath: str, filetype: FileType, strains: list):
+    """Parse the given file"""
     seek_pos = 0
     try:
         with open(filepath, encoding="utf-8") as input_file:
@@ -66,5 +72,6 @@ def parse_file(filepath: str, filetype: FileType, strains: list):
             "filepath": filepath,
             "filetype": filetype,
             "position": seek_pos,
-            "line_number": line_number
-        })
+            "line_number": line_number,
+            "error": err
+        }) from err
diff --git a/quality_control/standard_error.py b/quality_control/standard_error.py
index 7b49913..805c30e 100644
--- a/quality_control/standard_error.py
+++ b/quality_control/standard_error.py
@@ -4,7 +4,8 @@ import re
 from .errors import InvalidCellValue
 
 def valid_value(val):
-    if re.search("^[0-9]+\.[0-9]{6,}$", val):
+    """Checks whether `val` is a valid value for standard errors"""
+    if re.search(r"^[0-9]+\.[0-9]{6,}$", val):
         return float(val)
     raise InvalidCellValue(
         f"Invalid value '{val}'.\n"