-
-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Can't compare dicts with both single and double quotes in keys #430
Comments
I get an error on stringify_element when param is a byte string.
|
Cool,Do you want to make a PR for it and add a test case?Thanks!Sep DehpourOn Nov 14, 2023, at 12:32 PM, Andrea Sterbini ***@***.***> wrote:
I get an error on stringify_element when param is a byte string.
With the following change (in the first 2 lines) it works.
def stringify_element(param, quote_str=None):
if isinstance(param, str):
has_quote = "'" in param
has_double_quote = '"' in param
else:
has_quote = b"'" in param
has_double_quote = b'"' in param
if has_quote and has_double_quote:
new_param = []
for char in param:
if char in {'"', "'"}:
new_param.append('\\')
new_param.append(char)
result = ''.join(new_param)
elif has_quote:
result = f'"{param}"'
elif has_double_quote:
result = f"'{param}'"
else:
result = param if quote_str is None else quote_str.format(param)
return result
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you modified the open/close state.Message ID: ***@***.***>
|
I am not so familiar with all the DeepDiff code, thus let me try just suggesting a correction that seems to work assuming one is using 'utf8' encoding in bytes and bytearray
Test:
|
netbsd-srcmastr
referenced
this issue
in NetBSD/pkgsrc
Jan 28, 2024
v6-7-1 - Support for subtracting delta objects when iterable_compare_func is used. - Better handling of force adding a delta to an object. - Fix for ```Can't compare dicts with both single and double quotes in keys`` <https://github.com/seperman/deepdiff/issues/430>`__ - Updated docs for Inconsistent Behavior with math_epsilon and ignore_order = True v6-7-0 - Delta can be subtracted from other objects now. - verify_symmetry is deprecated. Use bidirectional instead. - always_include_values flag in Delta can be enabled to include values in the delta for every change. - Fix for Delta.\__add\_\_ breaks with esoteric dict keys. v6-6-1 - Fix for `DeepDiff raises decimal exception when using significant digits <https://github.com/seperman/deepdiff/issues/426>`__ - Introducing group_by_sort_key - Adding group_by 2D. For example ``group_by=['last_name', 'zip_code']`` v6-6-0 - Numpy 2.0 support - Adding `Delta.to_flat_dicts <https://zepworks.com/deepdiff/current/serialization.html#delta-serialize-to-flat-dictionaries>`__ v6-5-0 - Adding ```parse_path`` <https://github.com/seperman/deepdiff/pull/419>`__ v6-4-1 - Bugfix: Keep Numpy Optional
# for free
to join this conversation on GitHub.
Already have an account?
# to comment
Describe the bug
DeepDiff falls with an exception while comparing dicts with keys containing both single and double quotes.
To Reproduce
Expected behavior
A comparison result is being returned.
OS, DeepDiff version and Python version (please complete the following information):
Additional context
The branch to handle both single and double quotes in
stringify_element
doesn't defineresult
variable which is used later in return statement which causes exception (UnboundLocalError: local variable 'result' referenced before assignment
) to be triggered.The text was updated successfully, but these errors were encountered: