From 9ef46ba05ff033dbf04c451a214bf4ced23c90e8 Mon Sep 17 00:00:00 2001 From: "Shane R. Spencer" <305301+whardier@users.noreply.github.com> Date: Mon, 1 Nov 2021 06:05:29 -0800 Subject: [PATCH] feat(AWS Local Invocation): Support decimal serialization for Python --- lib/plugins/aws/invokeLocal/runtimeWrappers/invoke.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/plugins/aws/invokeLocal/runtimeWrappers/invoke.py b/lib/plugins/aws/invokeLocal/runtimeWrappers/invoke.py index 0df5bc4bc..5279f5e53 100755 --- a/lib/plugins/aws/invokeLocal/runtimeWrappers/invoke.py +++ b/lib/plugins/aws/invokeLocal/runtimeWrappers/invoke.py @@ -3,9 +3,17 @@ import argparse import json import logging import sys +import decimal from time import strftime, time from importlib import import_module +def decimal_serializer(o): + if isinstance(o, decimal.Decimal): + f = float(o) + if f.is_integer(): + return int(f) + return f + class FakeLambdaContext(object): def __init__(self, name='Fake', version='LATEST', timeout=6, **kwargs): self.name = name @@ -84,4 +92,4 @@ if __name__ == '__main__': context = FakeLambdaContext(**input.get('context', {})) result = handler(input['event'], context) - sys.stdout.write(json.dumps(result, indent=4)) + sys.stdout.write(json.dumps(result, default=decimal_serializer, indent=4))