Skip to content

Commit

Permalink
allow memoize to serialize sets
Browse files Browse the repository at this point in the history
  • Loading branch information
chaosbot committed Jun 3, 2017
1 parent 8637b39 commit 626de9e
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion memoize/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,19 @@ def _extract_args(sig_args, sig_defaults, args, kwargs, whitelist, blacklist):
return to_use


class JSONEncoder(json.JSONEncoder):
""" custom json serializer for our key-serializing function. knows how to
serialize things like sets """
def default(self, obj):
if isinstance(obj, set):
obj = list(obj)
obj.sort()
return obj

return json.JSONEncoder.default(self, obj)


def _json_keyify(args):
""" converts arguments into a deterministic key used for memoizing """
args = tuple(sorted(args.items(), key=lambda e: e[0]))
return json.dumps(args)
return json.dumps(args, cls=JSONEncoder)

0 comments on commit 626de9e

Please sign in to comment.