seperman/deepdiff

Error after comparing: Can not produce a hash (type datetime.date doesn't define __round__ method)

36const opened this issue · 1 comments

DeepDiff has crashing comparing on the stage of hashes creating.

Compare two lists of dictionaries with type date and True for parameters ignore_order and ignore_numeric_type_changes:

import datetime

DeepDiff(
[{'due_date': datetime.date(2024, 2, 1)}],
[{'due_date': datetime.date(2024, 2, 2)}],
ignore_order=True,
ignore_numeric_type_changes=True
)

Actual result:
Can not produce a hash for root.Not counting this object.
type datetime.date doesn't define round method
Can not produce a hash for iterable root. type datetime.date doesn't define round method
Can not produce a hash for root.Not counting this object.
type datetime.date doesn't define round method
Can not produce a hash for iterable root. type datetime.date doesn't define round method
{}

image

Expected result:
{'values_changed': {"root[0]['due_date']": {'new_value': datetime.date(2024, 2, 1), 'old_value': datetime.date(2024, 2, 2)}}}

Environment:

  • OS: Ubuntu
  • Version 22.04
  • Python Version 3.10.12
  • DeepDiff Version 6.7.1

Hi @36const
Thanks for reporting this bug. I will take a look at it when I have a chance.
PRs are always very welcome too!