""" An Simple example lambda""" from typing import Set # pylint: disable=unused-argument def handler(event, context): """ Lambda event handler takes a number and returns it's factors event must have an value key which can be cast to an int return value is a comma separated list of numbers as a string """ try: value = int(event["value"]) except Exception as error: print(f"Failure\tFailed to read value\t{error}\t{event}") raise error try: factors = get_factors(value) response = stringify(factors) print(f"Success\tCalculated\t{value}\t{response}") return response except Exception as error: print(f"Failure\tFailed to calculate response\t{error}\t{value}") raise error def get_factors(number: int) -> Set[int]: """ Calculate factors of an integer """ result = set() for i in range(1, int(number ** 0.5) + 1): div, mod = divmod(number, i) if mod == 0: result.add(i) result.add(div) return result def stringify(numbers: Set[int]) -> str: """ Convert a list of numbers to an order comma separated list """ numbers = list(numbers) numbers.sort() numbers = [str(i) for i in numbers] response = ",".join(numbers) return response