Files
saladeaula.digital/streams-events/app/utils.py

41 lines
828 B
Python

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)