From dac81908fd5b46791944a76f48f093a652363b97 Mon Sep 17 00:00:00 2001 From: Ask Solem Date: Fri, 21 Oct 2016 17:49:07 -0700 Subject: [PATCH] Json: Adds ability to override default encoder --- kombu/utils/json.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kombu/utils/json.py b/kombu/utils/json.py index c9801705..7f983c7c 100644 --- a/kombu/utils/json.py +++ b/kombu/utils/json.py @@ -31,6 +31,7 @@ else: IS_PY3 = sys.version_info[0] == 3 _encoder_cls = type(json._default_encoder) +_default_encoder = None # ... set to JSONEncoder below. class JSONEncoder(_encoder_cls): @@ -59,12 +60,14 @@ class JSONEncoder(_encoder_cls): elif isinstance(o, textual): return text_t(o) return super(JSONEncoder, self).default(o) +_default_encoder = JSONEncoder -def dumps(s, _dumps=json.dumps, cls=JSONEncoder, +def dumps(s, _dumps=json.dumps, cls=None, default_kwargs=_json_extra_kwargs, **kwargs): """Serialize object to json string.""" - return _dumps(s, cls=cls, **dict(default_kwargs, **kwargs)) + return _dumps(s, cls=cls or _default_encoder, + **dict(default_kwargs, **kwargs)) def loads(s, _loads=json.loads, decode_bytes=IS_PY3):