0

I wanted to see the statistics of list values and I passed the value to event() after converting it to tuple to make it hashable.

@dataclass(frozen=True)
class Foo:
    x: int
    y: str

    def __hash__(self):
        return hash((self.x, self.y))

@given(lists(builds(Foo, integers(), text()), max_size=3))
def test_foo(l):
    t = tuple(l)
    event(t)

However, it still doesn't work because of the following error:

self = <WeakKeyDictionary at 0x105c17430>, key = ()

    def __getitem__(self, key):
>       return self.data[ref(key)]
E       TypeError: cannot create weak reference to 'tuple' object

../../../.pyenv/versions/3.10.4/lib/python3.10/weakref.py:416: TypeError

Because tuple is builtin, I don't come up with the easy work around. I'm interested in how others are doing when they want to see list/tuple values with event().

Yoshi
  • 405
  • 4
  • 12

1 Answers1

0

Hmm, I'll take this as a bug report - as a workaround you can convert to str, since events are always counted as strings in the end anyway.

(update: fixed a few hours later)

Zac Hatfield-Dodds
  • 2,455
  • 6
  • 19