From 773dd380ca36096549f327306f176fa49863ed86 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 8 Mar 2021 15:55:10 -0600
Subject: [PATCH] Add persistent_dict.KeyBuilder.new_hash for hash alg
 customization

---
 pytools/persistent_dict.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/pytools/persistent_dict.py b/pytools/persistent_dict.py
index c33f240..c559299 100644
--- a/pytools/persistent_dict.py
+++ b/pytools/persistent_dict.py
@@ -173,6 +173,10 @@ class ItemDirManager(CleanupBase):
 # {{{ key generation
 
 class KeyBuilder:
+    # this exists so that we can (conceivably) switch algorithms at some point
+    # down the road
+    new_hash = hashlib.sha256
+
     def rec(self, key_hash, key):
         digest = None
 
@@ -187,7 +191,7 @@ class KeyBuilder:
             except AttributeError:
                 pass
             else:
-                inner_key_hash = hashlib.sha256()
+                inner_key_hash = self.new_hash()
                 method(inner_key_hash, self)
                 digest = inner_key_hash.digest()
 
@@ -205,7 +209,7 @@ class KeyBuilder:
                         method = self.update_for_specific_dtype
 
             if method is not None:
-                inner_key_hash = hashlib.sha256()
+                inner_key_hash = self.new_hash()
                 method(inner_key_hash, key)
                 digest = inner_key_hash.digest()
 
@@ -224,7 +228,7 @@ class KeyBuilder:
         key_hash.update(digest)
 
     def __call__(self, key):
-        key_hash = hashlib.sha256()
+        key_hash = self.new_hash()
         self.rec(key_hash, key)
         return key_hash.hexdigest()
 
-- 
GitLab