From ad68a1ef8d31ce46abc8aecc77ec3a5f650bfd6e Mon Sep 17 00:00:00 2001 From: David Perl Date: Wed, 27 Aug 2025 10:32:29 +0200 Subject: [PATCH] fix: use md5 for deterministic hash --- .../available_device_resources/device_resource_backend.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bec_widgets/widgets/control/device_manager/components/available_device_resources/device_resource_backend.py b/bec_widgets/widgets/control/device_manager/components/available_device_resources/device_resource_backend.py index 66e69c15..15d94a54 100644 --- a/bec_widgets/widgets/control/device_manager/components/available_device_resources/device_resource_backend.py +++ b/bec_widgets/widgets/control/device_manager/components/available_device_resources/device_resource_backend.py @@ -1,5 +1,6 @@ from __future__ import annotations +import hashlib import operator from functools import reduce from glob import glob @@ -29,7 +30,12 @@ class HashableDevice(Device): config_values = sorted( (str(kv) for kv in self.deviceConfig.items()) if self.deviceConfig else [] ) - return (reduce(operator.add, (self.name, self.deviceClass, *config_values))).__hash__() + return int( + hashlib.md5( + (reduce(operator.add, (self.name, self.deviceClass, *config_values))).encode() + ).hexdigest(), + 16, + ) def __eq__(self, value: object) -> bool: if not isinstance(value, self.__class__):