From 1f46ce7e53af2dfc5f654be91dda214573584093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20=C4=8Cerm=C3=A1k?= Date: Sun, 23 Mar 2025 15:29:39 +0100 Subject: [PATCH 1/2] added try except for noncritical CLI errors --- src/relic/core/cli.py | 8 ++++++-- src/relic/core/errors.py | 13 +++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/relic/core/cli.py b/src/relic/core/cli.py index daed3f0..c2db54e 100644 --- a/src/relic/core/cli.py +++ b/src/relic/core/cli.py @@ -28,7 +28,7 @@ List, ) -from relic.core.errors import UnboundCommandError, RelicArgParserError +from relic.core.errors import UnboundCommandError, RelicArgParserError, RelicInputFileError from relic.core.typeshed import entry_points @@ -410,8 +410,12 @@ def _run( if not hasattr(ns, "function"): raise UnboundCommandError(cmd) func = ns.function + result: Optional[int] = None with setup_cli_logging(ns, logger, log_setup_options) as cli_logger: - result: Optional[int] = func(ns, logger=cli_logger) + try: + result = func(ns, logger=cli_logger) + except RelicInputFileError as error: + cli_logger.info(f"relic: {error}") if result is None: # Assume success result = 0 return result diff --git a/src/relic/core/errors.py b/src/relic/core/errors.py index c5c3520..afe3626 100644 --- a/src/relic/core/errors.py +++ b/src/relic/core/errors.py @@ -52,6 +52,14 @@ class RelicToolError(Exception): """ +class RelicInputFileError(RelicToolError): + """ + An non critical error was raised during input file parsing. + + All non critical error raised during input file handling in this library and it's plugins should inherit from this class. Only error message without trace is logged. + """ + + class CliError(RelicToolError): """ An error was raised by the command line interface. @@ -75,7 +83,7 @@ def __str__(self) -> str: return f"The '{self._name}' command was defined, but not bound to a function." -class MismatchError(Generic[_T], RelicToolError): +class MismatchError(Generic[_T], RelicInputFileError): """ An error where a received value did not match the expected value. """ @@ -100,7 +108,7 @@ class MagicMismatchError(MismatchError[bytes]): """ -class RelicSerializationError(RelicToolError): +class RelicSerializationError(RelicInputFileError): """ An error was raised while serializing an object. """ @@ -130,6 +138,7 @@ class RelicArgParserError(Exception): __all__ = [ "RelicToolError", + "RelicInputFileError", "MismatchError", "MagicMismatchError", "CliError", From eeae224ce40e1e134421aecaa1a9536ef05597bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20=C4=8Cerm=C3=A1k?= Date: Sun, 23 Mar 2025 18:51:52 +0100 Subject: [PATCH 2/2] black formating fix --- src/relic/core/cli.py | 6 +++++- src/relic/core/errors.py | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/relic/core/cli.py b/src/relic/core/cli.py index c2db54e..b8ec1f3 100644 --- a/src/relic/core/cli.py +++ b/src/relic/core/cli.py @@ -28,7 +28,11 @@ List, ) -from relic.core.errors import UnboundCommandError, RelicArgParserError, RelicInputFileError +from relic.core.errors import ( + UnboundCommandError, + RelicArgParserError, + RelicInputFileError, +) from relic.core.typeshed import entry_points diff --git a/src/relic/core/errors.py b/src/relic/core/errors.py index afe3626..9fb11a1 100644 --- a/src/relic/core/errors.py +++ b/src/relic/core/errors.py @@ -54,9 +54,10 @@ class RelicToolError(Exception): class RelicInputFileError(RelicToolError): """ - An non critical error was raised during input file parsing. + An non critical error was raised during input file parsing. - All non critical error raised during input file handling in this library and it's plugins should inherit from this class. Only error message without trace is logged. + All non critical error raised during input file handling in this library and it's plugins should inherit + from this class. Only error message without trace is logged. """