From 0f4cd56b8539dfd986c9957a214de5d5d4795198 Mon Sep 17 00:00:00 2001 From: Thomas Haener Date: Wed, 31 Jan 2018 09:51:10 +0100 Subject: [PATCH] Added hash to DaggeredGate, including test. --- projectq/ops/_metagates.py | 3 +++ projectq/ops/_metagates_test.py | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/projectq/ops/_metagates.py b/projectq/ops/_metagates.py index 684bcf9cb..3bcdae528 100755 --- a/projectq/ops/_metagates.py +++ b/projectq/ops/_metagates.py @@ -108,6 +108,9 @@ def __eq__(self, other): """ return isinstance(other, self.__class__) and self._gate == other._gate + def __hash__(self): + return hash(str(self)) + def get_inverse(gate): """ diff --git a/projectq/ops/_metagates_test.py b/projectq/ops/_metagates_test.py index 250499a9f..ea9526bcb 100755 --- a/projectq/ops/_metagates_test.py +++ b/projectq/ops/_metagates_test.py @@ -75,6 +75,15 @@ def test_daggered_gate_str(): assert str(daggered_gate) == str(Y) + "^\dagger" +def test_daggered_gate_hashable(): + daggered_gate1 = _metagates.DaggeredGate(Y) + daggered_gate2 = _metagates.DaggeredGate(T) + d = {daggered_gate1 : 1, daggered_gate2 : 3} + assert len(d) == 2 + # for efficiency reasons the following should be true: + assert hash(daggered_gate1) != hash(daggered_gate2) + + def test_daggered_gate_tex_str(): daggered_gate = _metagates.DaggeredGate(Y) str_Y = Y.tex_str() if hasattr(Y, 'tex_str') else str(Y)