From 296b108f11fc34e3d4bbbf0cec8900d4001597b5 Mon Sep 17 00:00:00 2001 From: goto <goto@cccfr.de> Date: Sat, 4 Jan 2025 22:11:30 +0100 Subject: [PATCH] Introduced dataclass containing error handling behaviour of load_yaml method. --- load_yaml_errorhandling_parameters.py | 21 +++++++++++++++++++++ page.py | 6 +++++- page_processor.py | 7 +++++-- utilities.py | 11 +++++------ 4 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 load_yaml_errorhandling_parameters.py diff --git a/load_yaml_errorhandling_parameters.py b/load_yaml_errorhandling_parameters.py new file mode 100644 index 0000000..4e06582 --- /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 ee5f3dc..e5a033e 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 6e2c0b7..838af74 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 e0d4131..c179d57 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): -- GitLab