diff --git a/hed/errors/exceptions.py b/hed/errors/exceptions.py index 72ab0eead..94b1b6e75 100644 --- a/hed/errors/exceptions.py +++ b/hed/errors/exceptions.py @@ -1,3 +1,4 @@ +from hed.errors.error_types import ErrorContext class HedExceptions: @@ -34,60 +35,10 @@ def __init__(self, error_type, message, filename, issues=None): self.error_type = error_type self.message = message self.filename = filename - # only filled in when this lists multiple errors, such as the HED_WIKI_DELIMITERS_INVALID or BAD_COLUMN_NAMES self.issues = issues if self.issues is None: - self.issues = [] - - def format_error_message(self, include_tabbing=True, return_string_only=False, - name=None): - """This takes a HedFileError exception and translates it to human readable - - Parameters - ---------- - include_tabbing : bool - Prefixes string with a tab if True - return_string_only : bool - If True, returns a string rather than an "error object" - name : str or None - Overrides the filename from the error if present. - This is useful on the web code and similar that deals with temporary filenames. - Returns - ------- - error_list: [{}] - A list(of one) error formatted into a human readable dictionary. - """ - error_prefix = "ERROR: " - if include_tabbing: - error_prefix = "\t" + error_prefix - - error_type, message, filename = self.error_type, self.message, self.filename - if name: - filename = name - error_types = { - HedExceptions.FILE_NOT_FOUND: f"{error_prefix}{message}. '{filename}'", - HedExceptions.INVALID_EXTENSION: f"{error_prefix}Invalid extension. '{filename}'", - HedExceptions.CANNOT_PARSE_XML: f"{error_prefix}Cannot parse schema XML: " - f"{message}. '{filename}'", - HedExceptions.CANNOT_PARSE_JSON: f"{error_prefix}Cannot parse json: {message}. '{filename}'", - HedExceptions.SCHEMA_HEADER_MISSING: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.HED_SCHEMA_HEADER_INVALID: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.BAD_HED_LIBRARY_NAME: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.HED_SCHEMA_VERSION_INVALID: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.SCHEMA_START_MISSING: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.SCHEMA_END_INVALID: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.HED_END_INVALID: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.INVALID_SECTION_SEPARATOR: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.HED_SCHEMA_NODE_NAME_INVALID: f"{error_prefix}{self.message}. '{filename}'", - HedExceptions.HED_WIKI_DELIMITERS_INVALID: f"{error_prefix}{self.message}. '{filename}'", - } - default_error_message = f'{error_prefix}Internal Error' - error_message = error_types.get(error_type, default_error_message) - - error_object = {'code': error_type, - 'message': error_message} - - if return_string_only: - return error_object['message'] - - return [error_object] + self.issues = [ + {'message': message, + ErrorContext.FILE_NAME: filename, + 'error_code': error_type} + ] diff --git a/tests/schema/test_hed_schema.py b/tests/schema/test_hed_schema.py index d6c40b05b..15deaffdd 100644 --- a/tests/schema/test_hed_schema.py +++ b/tests/schema/test_hed_schema.py @@ -1,7 +1,7 @@ import unittest import os -from hed.errors import HedFileError +from hed.errors import HedFileError, get_printable_issue_string from hed.models import HedString, HedTag from hed.schema import HedKey, HedSectionKey, get_hed_xml_version, load_schema, HedSchemaGroup, load_schema_version, HedSchema @@ -25,13 +25,12 @@ def setUpClass(cls): def test_name(self): invalid_xml_file = "invalidxmlfile.xml" - name = "PrettyDisplayName.xml" try: load_schema(invalid_xml_file) # We should have an error before we reach here. self.assertTrue(False) except HedFileError as e: - self.assertTrue(name in e.format_error_message(return_string_only=True, name=name)) + self.assertTrue(invalid_xml_file in get_printable_issue_string(e.issues, skip_filename=False)) def test_tag_attribute(self): test_strings = {