From ed5baefd5daf53b8540d5dc2b424ca065e93613c Mon Sep 17 00:00:00 2001 From: John Doty Date: Fri, 14 Feb 2025 19:09:35 -0800 Subject: [PATCH] Fix errors --- makefile | 2 +- parser/parser.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index 88091e5..74e7ed7 100644 --- a/makefile +++ b/makefile @@ -18,7 +18,7 @@ include lrparser.mk wheel: dist/lrparsers-$(VERSION)-py3-none-any.whl dist/lrparsers-$(VERSION).tar.gz dist/lrparsers-$(VERSION)-py3-none-any.whl: pyproject.toml $(PYTHON_SOURCES) - uv build --no-clean + uv build --offline #--no-clean .PHONY: clean clean: diff --git a/parser/parser.py b/parser/parser.py index 7b5c18e..0bb2838 100644 --- a/parser/parser.py +++ b/parser/parser.py @@ -236,6 +236,20 @@ class ItemSet: def __init__(self, items=None): self.items = items or {} + self._hash = None + + def __hash__(self): + # TODO: FREEZE + if self._hash is None: + self._hash = hash(tuple((key, frozenset(value)) for key, value in self.items.items())) + + return self._hash + + def __eq__(self, other): + if not isinstance(other, ItemSet): + return False + + return self.items == other.items def weakly_compatible(self, other: "ItemSet") -> bool: a = self.items