Open
Description
Describe the bug
Exception is thrown when using the sort_keys=True
kwarg when using the to_json()
method of a deepdiff.Deepdiff()
object.
The bug is in the serialization.py
code if orjson
is defined/used:
def json_dumps(item, default_mapping=None, **kwargs):
"""
Dump json with extra details that are not normally json serializable
"""
if orjson:
indent = kwargs.pop('indent', None)
sort_keys = kwargs.pop('sort_keys', None)
if indent:
kwargs['option'] = orjson.OPT_INDENT_2
return orjson.dumps(
item,
default=json_convertor_default(default_mapping=default_mapping),
**kwargs).decode(encoding='utf-8')
else:
return json.dumps(
item,
default=json_convertor_default(default_mapping=default_mapping),
**kwargs)
The fix would seem to be to handle all of the supported kwargs and translate them to their respective orjson opt. I.e. add in the following lines:
if sort_keys:
kwargs['sort_keys'] = orjson.OPT_SORT_KEYS
... etc
To Reproduce
NOTE: Need the orjson
import to be defined (I'm not sure what allows this to happen, but the bug is hidden behind the if orjson:
conditional
Otherwise can just do the following:
diff = deepdiff.DeepDiff(dict1, dict2)
if diff:
diff.to_json(indent=4, sort_keys=True)
Expected behavior
diff.to_json()
should not choke on standard json.dumps() kwargs (e.g. sort_keys
)
OS, DeepDiff version and Python version (please complete the following information):
- OS: Ubuntu
- Version: Noble
- Python Version: 3.11
- DeepDiff Version
deepdiff==7.0.1
Metadata
Metadata
Assignees
Labels
No labels