From 6f8b8fc9c9bd371f2a70f9c83b9d434c3fb945ba Mon Sep 17 00:00:00 2001 From: Aaron Wagener Date: Thu, 2 May 2024 02:22:50 -0500 Subject: [PATCH] Options: Add an OptionError to specify bad options caused the failure (#2343) * Options: Add an OptionError to specify bad options caused the failure * inherit from ValueError instead of RuntimeError since this error should be thrown via bad input --------- Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> --- Generate.py | 4 ++-- Options.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Generate.py b/Generate.py index 8c649d76..d215f39d 100644 --- a/Generate.py +++ b/Generate.py @@ -353,7 +353,7 @@ def roll_meta_option(option_key, game: str, category_dict: Dict) -> Any: if options[option_key].supports_weighting: return get_choice(option_key, category_dict) return category_dict[option_key] - raise Exception(f"Error generating meta option {option_key} for {game}.") + raise Options.OptionError(f"Error generating meta option {option_key} for {game}.") def roll_linked_options(weights: dict) -> dict: @@ -417,7 +417,7 @@ def handle_option(ret: argparse.Namespace, game_weights: dict, option_key: str, player_option = option.from_any(get_choice(option_key, game_weights)) setattr(ret, option_key, player_option) except Exception as e: - raise Exception(f"Error generating option {option_key} in {ret.game}") from e + raise Options.OptionError(f"Error generating option {option_key} in {ret.game}") from e else: player_option.verify(AutoWorldRegister.world_types[ret.game], ret.name, plando_options) else: diff --git a/Options.py b/Options.py index fc633589..1eb0afee 100644 --- a/Options.py +++ b/Options.py @@ -21,6 +21,10 @@ if typing.TYPE_CHECKING: import pathlib +class OptionError(ValueError): + pass + + class Visibility(enum.IntFlag): none = 0b0000 template = 0b0001