From 1c5cae04e36566a58227339dfc4527748a9885e1 Mon Sep 17 00:00:00 2001 From: Jules Lasne Date: Fri, 20 Sep 2024 20:02:38 +0200 Subject: [PATCH] chore: Applied suggestions from code review --- .coderabbit.yaml | 2 +- flask_utils/decorators.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 05ceb8b..824a291 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -7,4 +7,4 @@ early_access: true reviews: profile: assertive request_changes_workflow: true - collapse_walkthrough: true + collapse_walkthrough: false diff --git a/flask_utils/decorators.py b/flask_utils/decorators.py index 8fd3b62..9d4a51e 100644 --- a/flask_utils/decorators.py +++ b/flask_utils/decorators.py @@ -32,6 +32,8 @@ def _handle_bad_request( raise BadRequestError(message, solution) from original_exception else: error_response = {"error": message} + if solution: + error_response["solution"] = solution return make_response(jsonify(error_response), status_code) @@ -287,19 +289,21 @@ def wrapper(*args, **kwargs): # type: ignore for key, type_hint in parameters.items(): if not _is_optional(type_hint) and key not in data: return _handle_bad_request( - use_error_handlers, f"Missing key: {key}", f"Expected keys are: {parameters.keys()}" + use_error_handlers, f"Missing key: {key}", f"Expected keys are: {list(parameters.keys())}" ) for key in data: if key not in parameters: return _handle_bad_request( - use_error_handlers, f"Unexpected key: {key}.", f"Expected keys are: {parameters.keys()}" + use_error_handlers, f"Unexpected key: {key}.", f"Expected keys are: {list(parameters.keys())}" ) for key in data: if key in parameters and not _check_type(data[key], parameters[key], allow_empty): return _handle_bad_request( - use_error_handlers, f"Wrong type for key {key}.", f"It should be {parameters[key]}" + use_error_handlers, + f"Wrong type for key {key}.", + f"It should be {getattr(parameters[key], '__name__', str(parameters[key]))}", ) return fn(*args, **kwargs)