diff --git a/load_yaml_errorhandling_parameters.py b/load_yaml_errorhandling_parameters.py new file mode 100644 index 0000000000000000000000000000000000000000..4e06582e676e1abf5f321be77f335350bf856901 --- /dev/null +++ b/load_yaml_errorhandling_parameters.py @@ -0,0 +1,21 @@ +""" +Contains the dataclass holding the error handling parameters for the load_yaml method. +""" + +# python standard +from dataclasses import dataclass + +# external dependencies + +# staysail modules + + +@dataclass +class LoadYAMLErrorHandlingParameters: + """ + Contains the parameters controlling the error handling in the load_yaml method. + """ + + error_message: str = None + exit_on_error: bool = False + error_on_absent_file: bool = True diff --git a/page.py b/page.py index ee5f3dc2af950616b5d96bf78146f3506d3f6c26..e5a033ed8c09eed407e7f95a5ddd78a76bc9d586 100644 --- a/page.py +++ b/page.py @@ -14,6 +14,7 @@ from slugify import slugify from utilities import Util from input_validator import InputValidator from page_type import PageType +from load_yaml_errorhandling_parameters import LoadYAMLErrorHandlingParameters class Page: @@ -71,7 +72,10 @@ class Page: if item.replace(".yaml", "") == page_name: logging.debug("Found page description: %s", item) error_message = "Could not load page definition: %s", item - data = Util.load_yaml(item_path, error_message=error_message) + error_handling_parameters = LoadYAMLErrorHandlingParameters( + error_message=error_message + ) + data = Util.load_yaml(item_path, error_handling_parameters) # ensure that all subpages have a unique name subpage_title_set = set() diff --git a/page_processor.py b/page_processor.py index 6e2c0b751724020a71bf64d84d923b92a0f17d9b..838af7423b2f4d0f2fd98f7ddd8faa506556d90c 100644 --- a/page_processor.py +++ b/page_processor.py @@ -20,6 +20,7 @@ from PIL import Image, ImageOps from utilities import Util from page import StandardPage, BlogPage, BlogEntry, ArticlePage, GalleryPage from input_validator import ImageDescriptionValidator +from load_yaml_errorhandling_parameters import LoadYAMLErrorHandlingParameters class PageProcessor: @@ -100,10 +101,12 @@ class PageProcessor: Path(image_directory_path).joinpath(gallery_file).with_suffix(".yaml") ) error_message = "Could not load image definition: %s", description_file + error_handling_parameters = LoadYAMLErrorHandlingParameters( + error_message=error_message, error_on_absent_file=False + ) page.image_descriptions[gallery_file] = Util.load_yaml( description_file, - error_message, - error_on_absent_file=False, + error_handling_parameters, validator=ImageDescriptionValidator(), ) diff --git a/utilities.py b/utilities.py index e0d41310b84209e7c62a8d1c7b1ceb66b7c51ccb..c179d57f0c7f3e96e924947eac46b59f8ce9035a 100644 --- a/utilities.py +++ b/utilities.py @@ -13,6 +13,7 @@ import yaml # staysail modules from input_validator import InputValidator +from load_yaml_errorhandling_parameters import LoadYAMLErrorHandlingParameters class Util: @@ -45,9 +46,7 @@ class Util: def load_yaml( cls, file, - error_message=None, - exit_on_error=False, - error_on_absent_file=True, + error_handling_parameters: LoadYAMLErrorHandlingParameters, validator=False, ): """ @@ -62,14 +61,14 @@ class Util: try: yaml_data = yaml.safe_load(file_stream) except yaml.YAMLError as load_error: - logging.error(error_message) + logging.error(error_handling_parameters.error_message) logging.error(load_error) else: - if error_on_absent_file: + if error_handling_parameters.error_on_absent_file: logging.error("File not found!: %s", file) else: logging.debug("File not found!: %s", file) - if exit_on_error: + if error_handling_parameters.exit_on_error: sys.exit(1) if isinstance(validator, InputValidator):