about summary refs log tree commit diff
path: root/quality_control/headers.py
diff options
context:
space:
mode:
Diffstat (limited to 'quality_control/headers.py')
-rw-r--r--quality_control/headers.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/quality_control/headers.py b/quality_control/headers.py
index f4f4dad..436ea5a 100644
--- a/quality_control/headers.py
+++ b/quality_control/headers.py
@@ -5,30 +5,34 @@ from typing import Union, Tuple, Sequence
 
 from quality_control.errors import InvalidValue, DuplicateHeading
 
-def invalid_header(
-        line_number: int, headers: Sequence[str]) -> Union[InvalidValue, None]:
+def invalid_header(filename: str,
+                   line_number: int,
+                   headers: Sequence[str]) -> Union[InvalidValue, None]:
     """Return an `InvalidValue` object if the header row has less than 2
     items."""
     if len(headers) < 2:
         return InvalidValue(
-            line_number, 0, "<TAB>".join(headers),
+            filename, line_number, 0, "<TAB>".join(headers),
             "The header MUST contain at least 2 columns")
     return None
 
 def invalid_headings(
-        line_number: int, strains: Sequence[str],
+        filename: str, line_number: int, strains: Sequence[str],
         headings: Sequence[str]) -> Union[Tuple[InvalidValue, ...], None]:
     """Return tuple of `InvalidValue` objects for each error found for every
     column heading."""
     return tuple(
-        InvalidValue(
-            line_number, col, header, f"'{header}' not a valid strain.")
+        InvalidValue(filename,
+                     line_number,
+                     col,
+                     header,
+                     f"'{header}' not a valid strain.")
         for col, header in
         enumerate(headings, start=2) if header not in strains)
 
-def duplicate_headings(
-        line_number: int,
-        headers: Sequence[str]) -> Tuple[DuplicateHeading, ...]:
+def duplicate_headings(filename: str,
+                       line_number: int,
+                       headers: Sequence[str]) -> Tuple[DuplicateHeading, ...]:
     """Return a tuple of `DuplicateHeading` objects for each column heading that
     is a duplicate of another column heading."""
     def __update_columns__(acc, item):
@@ -42,7 +46,7 @@ def duplicate_headings(
     }
     return tuple(
         DuplicateHeading(
-            line_number, columns, heading, (
+            filename, line_number, columns, heading, (
                 f"Heading '{heading}', is repeated in columns "
                 f"{','.join(str(i) for i in columns)}"))
         for heading, columns in repeated.items())