From 81df1a2f671eb0eb87f41516c47a00ed4acaee29 Mon Sep 17 00:00:00 2001 From: Moul Date: Wed, 8 May 2019 21:53:51 +0200 Subject: [PATCH] [enh] Transaction Unlock parameters: add __eq__() and __hash__() methods --- duniterpy/documents/transaction.py | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/duniterpy/documents/transaction.py b/duniterpy/documents/transaction.py index 565470e..7377312 100644 --- a/duniterpy/documents/transaction.py +++ b/duniterpy/documents/transaction.py @@ -230,6 +230,19 @@ class SIGParameter: """ self.index = index + + def __eq__(self, other: Any) -> bool: + """ + Check SIGParameter instances equality + """ + if not isinstance(other, SIGParameter): + return NotImplemented + return self.index == other.index + + def __hash__(self) -> int: + return hash((self.index)) + + @classmethod def from_parameter(cls: Type[SIGParameterType], parameter: str) -> Optional[SIGParameterType]: """ @@ -272,6 +285,19 @@ class XHXParameter: """ self.integer = integer + + def __eq__(self, other: Any) -> bool: + """ + Check XHXParameter instances equality + """ + if not isinstance(other, XHXParameter): + return NotImplemented + return self.integer == other.integer + + def __hash__(self) -> int: + return hash((self.integer)) + + @classmethod def from_parameter(cls: Type[XHXParameterType], parameter: str) -> Optional[XHXParameterType]: """ @@ -348,6 +374,24 @@ class Unlock: self.index = index self.parameters = parameters + + def __eq__(self, other: Any) -> bool: + """ + Check Unlock instances equality + """ + if not isinstance(other, Unlock): + return NotImplemented + + params_equals = True + for spar, opar in zip(self.parameters, other.parameters): + if spar != opar: + params_equals = False + return self.index == other.index and params_equals + + def __hash__(self) -> int: + return hash((self.index, self.parameters)) + + @classmethod def from_inline(cls: Type[UnlockType], inline: str) -> UnlockType: """ -- 2.22.0