From c035ea06980697f37daf4118998bbfd3791847c8 Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Wed, 16 Sep 2020 11:20:08 -0400 Subject: [PATCH] It's better if extension keys are unicode (native strings for Python 3, same key as bytes on Python 2) so as not to modify lots and lots and lots of code. --- src/allmydata/test/test_uri.py | 16 ++++++++-------- src/allmydata/uri.py | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/allmydata/test/test_uri.py b/src/allmydata/test/test_uri.py index f89fae151..3e21c1674 100644 --- a/src/allmydata/test/test_uri.py +++ b/src/allmydata/test/test_uri.py @@ -210,17 +210,17 @@ class Extension(testutil.ReallyEqualMixin, unittest.TestCase): } ext = uri.pack_extension(data) d = uri.unpack_extension(ext) - self.failUnlessReallyEqual(d[b"stuff"], b"value") - self.failUnlessReallyEqual(d[b"size"], 12) - self.failUnlessReallyEqual(d[b"big_hash"], hashutil.tagged_hash(b"foo", b"bar")) + self.failUnlessReallyEqual(d["stuff"], b"value") + self.failUnlessReallyEqual(d["size"], 12) + self.failUnlessReallyEqual(d["big_hash"], hashutil.tagged_hash(b"foo", b"bar")) readable = uri.unpack_extension_readable(ext) - self.failUnlessReallyEqual(readable[b"needed_shares"], 3) - self.failUnlessReallyEqual(readable[b"stuff"], b"value") - self.failUnlessReallyEqual(readable[b"size"], 12) - self.failUnlessReallyEqual(readable[b"big_hash"], + self.failUnlessReallyEqual(readable["needed_shares"], 3) + self.failUnlessReallyEqual(readable["stuff"], b"value") + self.failUnlessReallyEqual(readable["size"], 12) + self.failUnlessReallyEqual(readable["big_hash"], base32.b2a(hashutil.tagged_hash(b"foo", b"bar"))) - self.failUnlessReallyEqual(readable[b"UEB_hash"], + self.failUnlessReallyEqual(readable["UEB_hash"], base32.b2a(hashutil.uri_extension_hash(ext))) class Unknown(testutil.ReallyEqualMixin, unittest.TestCase): diff --git a/src/allmydata/uri.py b/src/allmydata/uri.py index b601226da..253cb109c 100644 --- a/src/allmydata/uri.py +++ b/src/allmydata/uri.py @@ -928,11 +928,11 @@ def unpack_extension(data): assert data[length:length+1] == b',' data = data[length+1:] - d[key] = value + d[str(key, "utf-8")] = value # convert certain things to numbers - for intkey in (b'size', b'segment_size', b'num_segments', - b'needed_shares', b'total_shares'): + for intkey in ('size', 'segment_size', 'num_segments', + 'needed_shares', 'total_shares'): if intkey in d: d[intkey] = int(d[intkey]) return d @@ -940,9 +940,9 @@ def unpack_extension(data): def unpack_extension_readable(data): unpacked = unpack_extension(data) - unpacked[b"UEB_hash"] = hashutil.uri_extension_hash(data) + unpacked["UEB_hash"] = hashutil.uri_extension_hash(data) for k in sorted(unpacked.keys()): - if b'hash' in k: + if 'hash' in k: unpacked[k] = base32.b2a(unpacked[k]) return unpacked