Skip to content

Commit 0633573

Browse files
authored
Merge pull request #94 from gridsmartercities/defaults
default value None added to kwargs
2 parents 15f432b + cb5bbfc commit 0633573

File tree

3 files changed

+27
-8
lines changed

3 files changed

+27
-8
lines changed

aws_lambda_decorators/decorators.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
CORS_NON_DICT_ERROR = "Invalid response type for CORS headers"
2525
CORS_INVALID_TYPE_LOG_MESSAGE = "Cannot set %s header to a non %s value"
2626
CORS_NON_DICT_LOG_MESSAGE = "Cannot add headers to a non dictionary response"
27+
UNKNOWN = "Unknown"
2728

2829

2930
def extract_from_event(parameters, group_errors=False):
@@ -87,6 +88,7 @@ def lambda_handler(event, context, user_id=None)
8788
def decorator(func):
8889
def wrapper(*args, **kwargs):
8990
try:
91+
param = None
9092
errors = []
9193
arg_dictionary = all_func_args(func, args, kwargs)
9294
for param in parameters:
@@ -98,17 +100,19 @@ def wrapper(*args, **kwargs):
98100
if not group_errors:
99101
LOGGER.error(VALIDATE_ERROR_MESSAGE, errors)
100102
return failure(errors)
101-
elif return_val is not None:
103+
else:
102104
kwargs[param.get_var_name()] = return_val
103105
except Exception as ex: # noqa: pylint - broad-except
104-
LOGGER.error(EXCEPTION_LOG_MESSAGE, full_name(ex), str(ex), param.func_param_name, param.path)
106+
LOGGER.error(EXCEPTION_LOG_MESSAGE, full_name(ex), str(ex),
107+
param.func_param_name if param else UNKNOWN,
108+
param.path if param else UNKNOWN)
105109
return failure(ERROR_MESSAGE)
110+
else:
111+
if group_errors and errors:
112+
LOGGER.error(VALIDATE_ERROR_MESSAGE, errors)
113+
return failure(errors)
106114

107-
if group_errors and errors:
108-
LOGGER.error(VALIDATE_ERROR_MESSAGE, errors)
109-
return failure(errors)
110-
111-
return func(*args, **kwargs)
115+
return func(*args, **kwargs)
112116
return wrapper
113117
return decorator
114118

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
LONG_DESCRIPTION = open("README.md").read()
44

55
setup(name="aws-lambda-decorators",
6-
version="0.36",
6+
version="0.37",
77
description="A set of python decorators to simplify aws python lambda development",
88
long_description=LONG_DESCRIPTION,
99
long_description_content_type="text/markdown",

tests/test_decorators.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,3 +1295,18 @@ def handler(event, context, c=None): # noqa
12951295

12961296
self.assertEqual(400, response["statusCode"])
12971297
self.assertEqual("{\"message\": [{\"c\": [\"Missing mandatory value\"]}]}", response["body"])
1298+
1299+
def test_extract_nulls_are_returned(self):
1300+
path = "/a/b"
1301+
dictionary = {
1302+
"a": {
1303+
}
1304+
}
1305+
1306+
@extract([Parameter(path, "event", default=None)])
1307+
def handler(event, context, **kwargs): # noqa
1308+
return kwargs["b"]
1309+
1310+
response = handler(dictionary, None)
1311+
1312+
self.assertEqual(None, response)

0 commit comments

Comments
 (0)