[tor-commits] [stem/master] Differentiate bytes/unicode in hashes

atagar at torproject.org atagar at torproject.org
Sun Jan 5 21:39:28 UTC 2020


commit 2006edc5ee1878bd5c98e99b3f00c987838ba297
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Jan 5 12:54:42 2020 -0800

    Differentiate bytes/unicode in hashes
    
    Huh. To avoid bulk refactoring our tests we included a small hack that hashed
    byte and unicode types to the same value. Said another way, a unicde and byte
    string for "hello" would be equal.
    
    I expected that dropping this hack would be invasive but our tests pass. Kinda
    confused, but... neat?
---
 stem/util/__init__.py | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/stem/util/__init__.py b/stem/util/__init__.py
index c6b9ce34..2bcc8a07 100644
--- a/stem/util/__init__.py
+++ b/stem/util/__init__.py
@@ -49,19 +49,10 @@ def _hash_value(val):
   if not HASH_TYPES:
     my_hash = 0
   else:
-    # TODO: I hate doing this but until Python 2.x support is dropped we
-    # can't readily be strict about bytes vs unicode for attributes. This
-    # is because test assertions often use strings, and normalizing this
-    # would require wrapping most with to_unicode() calls.
-    #
-    # This hack will go away when we drop Python 2.x support.
-
-    if isinstance(val, (bytes, str)):
-      my_hash = hash('str')
-    else:
-      # Hashing common builtins (ints, bools, etc) provide consistant values but many others vary their value on interpreter invokation.
-
-      my_hash = hash(str(type(val)))
+    # Hashing common builtins (ints, bools, etc) provide consistant values but
+    # many others vary their value on interpreter invokation.
+
+    my_hash = hash(str(type(val)))
 
   if isinstance(val, (tuple, list)):
     for v in val:





More information about the tor-commits mailing list