This fixes a regression in commit
60293416db69782fd048a7820667afa4ae7c423b that
changed the `__hash__` implementation of Node from the default pointer
hash, to a hash based on the node fields.
Since these fields contains list objects, they are not hashable, making
every call to `Node.__hash__` fail.
This breaks some third-party usage such as in `django-compressor`
(See: https://github.com/django-compressor/django-compressor/issues/1060)
This changed reverts the hash method back to using `object.__hash__` as
the hash implementation.
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
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)
--- /dev/null
+def test_template_hash(env):
+ template = env.parse("hash test")
+ hash(template)