From 74507e9321f0365015b84b6e3de9ff42c8b5eed7 Mon Sep 17 00:00:00 2001 From: Haoyu Xu Date: Mon, 2 Jan 2023 05:09:08 -0500 Subject: [PATCH] feat(config): remove validator --- lib/config.py | 92 ++------------------------------------------------- 1 file changed, 2 insertions(+), 90 deletions(-) diff --git a/lib/config.py b/lib/config.py index 60e720b..e9fc171 100644 --- a/lib/config.py +++ b/lib/config.py @@ -5,101 +5,13 @@ class Config: def __init__(self) -> None: self.config_path = pathlib.Path.cwd().joinpath("config.yaml") - self.valid_keys = dict( - config=dict( - server=dict, - operators=dict, - operator=dict, - ), - server=dict( - template_folder=str, - release_folder=str, - operator_folder=str, - ), - operators={ - "index.html": dict, - "_operator_settings.js": dict, - "project.json": dict - }, - operator=dict( - preview=str, - project_json=str, - source_folder=str, - target_folder=str, - ), - operator_config={ - "index.html": dict( - id=str, - operator_logo=str, - title=str, - version=str, - ), - "_operator_settings.js": dict( - fallbackImage_height=int, - fallbackImage_width=int, - fps=int, - viewport_left=int, - viewport_right=int, - viewport_top=int, - viewport_bottom=int, - opacity=int, - ), - "project.json": dict( - description=str, - title=str, - ui_logo_ratio=float, - ui_operator_logo=str, - ) - } - ) def read(self): - self.__read_config() - return self.config + return self.__read_config() def __read_config(self): try: YamlIncludeConstructor.add_to_loader_class(loader_class=yaml.FullLoader, base_dir=pathlib.Path.cwd()) - self.config = yaml.load(open(self.config_path, "r"), Loader=yaml.FullLoader) + return yaml.load(open(self.config_path, "r"), Loader=yaml.FullLoader) except Exception as e: raise - else: - self.__validate_config() - - def __validate_config(self): - key = "config" - self.__config_check(key, self.config, self.valid_keys[key]) - - key = "server" - self.__config_check(key, self.config[key], self.valid_keys[key]) - - key = "operator" - self.__config_check(key, self.config[key], self.valid_keys[key]) - - key = "operators" - for operator_name, operator_content in self.config[key].items(): - self.__config_check(operator_name, operator_content, self.valid_keys[key]) - for filename, filetype in self.config[key][operator_name].items(): - self.__config_check(filename, filetype, self.valid_keys["operator_config"][filename]) - - def __config_check(self, block_name: str, contents: dict, required_keys: dict): - checklist = [key for key in required_keys] - if contents is not None: - for key, value in contents.items(): - value_type = type(value) - if key in checklist: - required_type = required_keys[key] - else: - continue - if value_type != required_type: - raise TypeError("Item {key} in config.yaml is not set up correctly. Type {value_type} is detected, but type {required_type} is required.".format(key=key, value_type=value_type.__name__, required_type=required_type.__name__)) - else: - checklist.remove(key) - if key.endswith("_file") is True: - if value.endswith("/") is True: - contents[key] = value[:len(value) - 1] - elif key.endswith("_folder"): - if value.endswith("/") is False: - contents[key] = value + "/" - if len(checklist) != 0: - raise LookupError("config.yaml has missing item(s) for Block {block_name}: {items}".format(block_name=block_name, items=', '.join([key for key in checklist]))) \ No newline at end of file