import decimal import json import math import dictdiffer from arnparse import arnparse def table_from_arn(arn: str) -> str: arn_ = arnparse(arn) return arn_.resource.split('/')[0] def diff(first: dict, second: dict) -> list[str]: result = dictdiffer.diff(first, second) changed = [] for record in result: type_, path, _ = record if type_ == 'change': changed.append(path) return changed class JSONEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, decimal.Decimal): if o.is_nan(): return math.nan if o % 1 != 0: return float(o.quantize(decimal.Decimal('0.00'))) return int(o) if isinstance(o, set): return list(o) return super().default(o)