From f1873bfb1e3261e617cb0a4c9cfb6ddcf57b6747 Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Mon, 11 Mar 2024 08:43:18 -0400 Subject: [PATCH] Revert "Add types to TypeHash and moved away from __slots__ usage (#1232)" (#1243) This reverts commit b06baefa0b0cebd293b1dec90627641257de1db3. --- rclpy/rclpy/type_hash.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/rclpy/rclpy/type_hash.py b/rclpy/rclpy/type_hash.py index 30b4e0b8e..f2f3ea4db 100644 --- a/rclpy/rclpy/type_hash.py +++ b/rclpy/rclpy/type_hash.py @@ -18,44 +18,56 @@ class TypeHash: _TYPE_HASH_SIZE = 32 - def __init__(self, version: int = -1, value: bytes = bytes(_TYPE_HASH_SIZE)): - self.version = version - self.value = value + __slots__ = [ + '_version', + '_value', + ] + + def __init__(self, **kwargs): + assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ + 'Invalid arguments passed to constructor: %r' % kwargs.keys() + + self.version = kwargs.get('version', -1) + self.value = kwargs.get('value', bytes(self._TYPE_HASH_SIZE)) @property - def version(self) -> int: + def version(self): """ Get field 'version'. :returns: version attribute + :rtype: int """ return self._version @version.setter - def version(self, value: int) -> None: + def version(self, value): assert isinstance(value, int) self._version = value @property - def value(self) -> bytes: + def value(self): """ Get field 'value'. :returns: value attribute + :rtype: bytes """ return self._value @value.setter - def value(self, value: bytes) -> None: + def value(self, value): assert isinstance(value, bytes) self._value = value - def __eq__(self, other: object) -> bool: + def __eq__(self, other): if not isinstance(other, TypeHash): return False - return self.__dict__ == other.__dict__ + return all( + self.__getattribute__(slot) == other.__getattribute__(slot) + for slot in self.__slots__) - def __str__(self) -> str: + def __str__(self): if self._version <= 0 or len(self._value) != self._TYPE_HASH_SIZE: return 'INVALID'