diff --git a/CHANGES.rst b/CHANGES.rst index ebd23b6a9..191d9008d 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -11,6 +11,8 @@ Unreleased when parsing values on Python 3.10. :pr:`1537` - Improve async performance by avoiding checks for common types. :issue:`1514` +- Revert change to ``hash(Node)`` behavior. Nodes are hashed by id + again :issue:`1521` Version 3.0.2 diff --git a/src/jinja2/nodes.py b/src/jinja2/nodes.py index 226e729c0..8feb2698d 100644 --- a/src/jinja2/nodes.py +++ b/src/jinja2/nodes.py @@ -241,8 +241,7 @@ def __eq__(self, other: t.Any) -> bool: return tuple(self.iter_fields()) == tuple(other.iter_fields()) - def __hash__(self) -> int: - return hash(tuple(self.iter_fields())) + __hash__ = object.__hash__ def __repr__(self) -> str: args_str = ", ".join(f"{a}={getattr(self, a, None)!r}" for a in self.fields) diff --git a/tests/test_nodes.py b/tests/test_nodes.py new file mode 100644 index 000000000..e910998ff --- /dev/null +++ b/tests/test_nodes.py @@ -0,0 +1,3 @@ +def test_template_hash(env): + template = env.parse("hash test") + hash(template)