From 2bbfc7927d8a3c2e58a9ca2907763bb13d3be70d Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Thu, 18 Jul 2013 20:51:06 +0100 Subject: [PATCH] src/allmydata/uri.py: Remove unused 'human encoding' methods, and associated tests. fixes #1807 Signed-off-by: Daira Hopwood --- src/allmydata/test/test_uri.py | 94 +------------------------ src/allmydata/uri.py | 123 +++------------------------------ 2 files changed, 12 insertions(+), 205 deletions(-) diff --git a/src/allmydata/test/test_uri.py b/src/allmydata/test/test_uri.py index c6fb5bc8..8832d3a1 100644 --- a/src/allmydata/test/test_uri.py +++ b/src/allmydata/test/test_uri.py @@ -39,10 +39,6 @@ class Literal(testutil.ReallyEqualMixin, unittest.TestCase): self.failUnlessIdentical(u, u3) self.failUnlessReallyEqual(u.get_verify_cap(), None) - he = u.to_human_encoding() - u_h = uri.LiteralFileURI.init_from_human_encoding(he) - self.failUnlessReallyEqual(u, u_h) - def test_empty(self): data = "" # This data is some *very* small data! return self._help_test(data) @@ -119,9 +115,6 @@ class CHKFile(testutil.ReallyEqualMixin, unittest.TestCase): u_ro = u.get_readonly() self.failUnlessIdentical(u, u_ro) - he = u.to_human_encoding() - self.failUnlessReallyEqual(he, "http://127.0.0.1:3456/uri/" + u.to_string()) - self.failUnlessReallyEqual(uri.CHKFileURI.init_from_human_encoding(he), u) u2 = uri.from_string(u.to_string()) self.failUnlessReallyEqual(u2.get_storage_index(), storage_index) @@ -151,9 +144,6 @@ class CHKFile(testutil.ReallyEqualMixin, unittest.TestCase): v2 = uri.from_string(v.to_string()) self.failUnlessReallyEqual(v, v2) - he = v.to_human_encoding() - v2_h = uri.CHKFileVerifierURI.init_from_human_encoding(he) - self.failUnlessReallyEqual(v2, v2_h) v3 = uri.CHKFileVerifierURI(storage_index="\x00"*16, uri_extension_hash="\x00"*32, @@ -246,11 +236,7 @@ class Unknown(testutil.ReallyEqualMixin, unittest.TestCase): class Constraint(testutil.ReallyEqualMixin, unittest.TestCase): def test_constraint(self): - good="http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/" - uri.DirectoryURI.init_from_human_encoding(good) - self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, good) - bad = good + '===' - self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_human_encoding, bad) + bad = "http://127.0.0.1:3456/uri/URI%3ADIR2%3Agh3l5rbvnv2333mrfvalmjfr4i%3Alz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma/" self.failUnlessRaises(uri.BadURIError, uri.DirectoryURI.init_from_string, bad) fileURI = 'URI:CHK:gh3l5rbvnv2333mrfvalmjfr4i:lz6l7u3z3b7g37s4zkdmfpx5ly4ib4m6thrpbusi6ys62qtc6mma:3:10:345834' uri.CHKFileURI.init_from_string(fileURI) @@ -273,10 +259,6 @@ class Mutable(testutil.ReallyEqualMixin, unittest.TestCase): self.failIf(IDirnodeURI.providedBy(u)) self.failUnless("WriteableSSKFileURI" in str(u)) - he = u.to_human_encoding() - u_h = uri.WriteableSSKFileURI.init_from_human_encoding(he) - self.failUnlessReallyEqual(u, u_h) - u2 = uri.from_string(u.to_string()) self.failUnlessReallyEqual(u2.writekey, self.writekey) self.failUnlessReallyEqual(u2.fingerprint, self.fingerprint) @@ -310,10 +292,6 @@ class Mutable(testutil.ReallyEqualMixin, unittest.TestCase): u3imm = uri.from_string(uri.ALLEGED_IMMUTABLE_PREFIX + u3.to_string()) self.failUnless(isinstance(u3imm, uri.UnknownURI), u3imm) - he = u3.to_human_encoding() - u3_h = uri.ReadonlySSKFileURI.init_from_human_encoding(he) - self.failUnlessReallyEqual(u3, u3_h) - u4 = uri.ReadonlySSKFileURI(readkey, self.fingerprint) self.failUnlessReallyEqual(u4.fingerprint, self.fingerprint) self.failUnlessReallyEqual(u4.readkey, readkey) @@ -342,11 +320,6 @@ class Mutable(testutil.ReallyEqualMixin, unittest.TestCase): self.failUnless(IVerifierURI.providedBy(u7)) self.failUnlessReallyEqual(u7.get_storage_index(), u.get_storage_index()) - he = u5.to_human_encoding() - u5_h = uri.SSKVerifierURI.init_from_human_encoding(he) - self.failUnlessReallyEqual(u5, u5_h) - - def test_writeable_mdmf_cap(self): u1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint) cap = u1.to_string() @@ -465,71 +438,6 @@ class Mutable(testutil.ReallyEqualMixin, unittest.TestCase): self.failUnless(u5.is_readonly()) self.failIf(u5.is_mutable()) - - def test_mdmf_valid_human_encoding(self): - # What's a human encoding? Well, it's of the form: - base = "https://127.0.0.1:3456/uri/" - # With a cap on the end. For each of the cap types, we need to - # test that a valid cap (with and without the traditional - # separators) is recognized and accepted by the classes. - w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint) - r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint) - v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint) - - # These will yield three different caps. - for o in (w1, r1, v1): - url = base + o.to_string() - o1 = o.__class__.init_from_human_encoding(url) - self.failUnlessReallyEqual(o1, o) - - # Note that our cap will, by default, have : as separators. - # But it's expected that users from, e.g., the WUI, will - # have %3A as a separator. We need to make sure that the - # initialization routine handles that, too. - cap = o.to_string() - cap = re.sub(":", "%3A", cap) - url = base + cap - o2 = o.__class__.init_from_human_encoding(url) - self.failUnlessReallyEqual(o2, o) - - - def test_mdmf_human_encoding_invalid_base(self): - # What's a human encoding? Well, it's of the form: - base = "https://127.0.0.1:3456/foo/bar/bazuri/" - # With a cap on the end. For each of the cap types, we need to - # test that a valid cap (with and without the traditional - # separators) is recognized and accepted by the classes. - w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint) - r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint) - v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint) - - # These will yield three different caps. - for o in (w1, r1, v1): - url = base + o.to_string() - self.failUnlessRaises(uri.BadURIError, - o.__class__.init_from_human_encoding, - url) - - def test_mdmf_human_encoding_invalid_cap(self): - base = "https://127.0.0.1:3456/uri/" - # With a cap on the end. For each of the cap types, we need to - # test that a valid cap (with and without the traditional - # separators) is recognized and accepted by the classes. - w1 = uri.WriteableMDMFFileURI(self.writekey, self.fingerprint) - r1 = uri.ReadonlyMDMFFileURI(self.readkey, self.fingerprint) - v1 = uri.MDMFVerifierURI(self.storage_index, self.fingerprint) - - # These will yield three different caps. - for o in (w1, r1, v1): - # not exhaustive, obviously... - url = base + o.to_string() + "foobarbaz" - url2 = base + "foobarbaz" + o.to_string() - url3 = base + o.to_string()[:25] + "foo" + o.to_string()[:25] - for u in (url, url2, url3): - self.failUnlessRaises(uri.BadURIError, - o.__class__.init_from_human_encoding, - u) - def test_mdmf_from_string(self): # Make sure that the from_string utility function works with # MDMF caps. diff --git a/src/allmydata/uri.py b/src/allmydata/uri.py index 1f3dbd15..372e0b8b 100644 --- a/src/allmydata/uri.py +++ b/src/allmydata/uri.py @@ -1,7 +1,9 @@ -import re, urllib +import re + from zope.interface import implements from twisted.python.components import registerAdapter + from allmydata.storage.server import si_a2b, si_b2a from allmydata.util import base32, hashutil from allmydata.util.assertutil import _assert @@ -21,19 +23,11 @@ class BadURIError(CapConstraintError): # - rename all of the *URI classes/interfaces to *Cap # - make variable and method names consistently use _uri for an URI string, # and _cap for a Cap object (decoded URI) -# - remove the human_encoding methods? BASE32STR_128bits = '(%s{25}%s)' % (base32.BASE32CHAR, base32.BASE32CHAR_3bits) BASE32STR_256bits = '(%s{51}%s)' % (base32.BASE32CHAR, base32.BASE32CHAR_1bits) -SEP='(?::|%3A)' NUMBER='([0-9]+)' -NUMBER_IGNORE='(?:[0-9]+)' - -# "human-encoded" URIs are allowed to come with a leading -# 'http://127.0.0.1:(8123|3456)/uri/' that will be ignored. -# Note that nothing in the Tahoe code currently uses the human encoding. -OPTIONALHTTPLEAD=r'(?:https?://(?:[^:/]+)(?::%s)?/uri/)?' % NUMBER_IGNORE class _BaseURI: @@ -52,9 +46,6 @@ class _BaseURI: else: return True - def to_human_encoding(self): - return 'http://127.0.0.1:3456/uri/'+self.to_string() - def get_storage_index(self): return self.storage_index @@ -66,9 +57,6 @@ class CHKFileURI(_BaseURI): STRING_RE=re.compile('^URI:CHK:'+BASE32STR_128bits+':'+ BASE32STR_256bits+':'+NUMBER+':'+NUMBER+':'+NUMBER+ '$') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'CHK'+SEP+ - BASE32STR_128bits+SEP+BASE32STR_256bits+SEP+NUMBER+ - SEP+NUMBER+SEP+NUMBER+'$') def __init__(self, key, uri_extension_hash, needed_shares, total_shares, size): @@ -81,14 +69,6 @@ class CHKFileURI(_BaseURI): if not len(self.storage_index) == 16: # sha256 hash truncated to 128 raise BadURIError("storage index must be 16 bytes long") - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)), - int(mo.group(3)), int(mo.group(4)), int(mo.group(5))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -128,15 +108,13 @@ class CHKFileURI(_BaseURI): total_shares=self.total_shares, size=self.size) + class CHKFileVerifierURI(_BaseURI): implements(IVerifierURI) BASE_STRING='URI:CHK-Verifier:' STRING_RE=re.compile('^URI:CHK-Verifier:'+BASE32STR_128bits+':'+ BASE32STR_256bits+':'+NUMBER+':'+NUMBER+':'+NUMBER) - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'CHK-Verifier'+SEP+ - BASE32STR_128bits+SEP+BASE32STR_256bits+SEP+NUMBER+ - SEP+NUMBER+SEP+NUMBER) def __init__(self, storage_index, uri_extension_hash, needed_shares, total_shares, size): @@ -147,14 +125,6 @@ class CHKFileVerifierURI(_BaseURI): self.total_shares = total_shares self.size = size - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2)), - int(mo.group(3)), int(mo.group(4)), int(mo.group(5))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -193,20 +163,12 @@ class LiteralFileURI(_BaseURI): BASE_STRING='URI:LIT:' STRING_RE=re.compile('^URI:LIT:'+base32.BASE32STR_anybytes+'$') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'LIT'+SEP+base32.BASE32STR_anybytes+'$') def __init__(self, data=None): if data is not None: assert isinstance(data, str) self.data = data - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -243,8 +205,6 @@ class WriteableSSKFileURI(_BaseURI): BASE_STRING='URI:SSK:' STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+ BASE32STR_256bits+'$') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK'+SEP+ - BASE32STR_128bits+SEP+BASE32STR_256bits+'$') def __init__(self, writekey, fingerprint): self.writekey = writekey @@ -253,13 +213,6 @@ class WriteableSSKFileURI(_BaseURI): assert len(self.storage_index) == 16 self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -294,12 +247,12 @@ class WriteableSSKFileURI(_BaseURI): def get_verify_cap(self): return SSKVerifierURI(self.storage_index, self.fingerprint) + class ReadonlySSKFileURI(_BaseURI): implements(IURI, IMutableFileURI) BASE_STRING='URI:SSK-RO:' STRING_RE=re.compile('^URI:SSK-RO:'+BASE32STR_128bits+':'+BASE32STR_256bits+'$') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK-RO'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'$') def __init__(self, readkey, fingerprint): self.readkey = readkey @@ -307,13 +260,6 @@ class ReadonlySSKFileURI(_BaseURI): assert len(self.storage_index) == 16 self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -348,25 +294,18 @@ class ReadonlySSKFileURI(_BaseURI): def get_verify_cap(self): return SSKVerifierURI(self.storage_index, self.fingerprint) + class SSKVerifierURI(_BaseURI): implements(IVerifierURI) BASE_STRING='URI:SSK-Verifier:' STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'$') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'SSK-Verifier'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'$') def __init__(self, storage_index, fingerprint): assert len(storage_index) == 16 self.storage_index = storage_index self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -392,12 +331,12 @@ class SSKVerifierURI(_BaseURI): def get_verify_cap(self): return self + class WriteableMDMFFileURI(_BaseURI): implements(IURI, IMutableFileURI) BASE_STRING='URI:MDMF:' STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)') def __init__(self, writekey, fingerprint): self.writekey = writekey @@ -406,13 +345,6 @@ class WriteableMDMFFileURI(_BaseURI): assert len(self.storage_index) == 16 self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -448,12 +380,12 @@ class WriteableMDMFFileURI(_BaseURI): def get_verify_cap(self): return MDMFVerifierURI(self.storage_index, self.fingerprint) + class ReadonlyMDMFFileURI(_BaseURI): implements(IURI, IMutableFileURI) BASE_STRING='URI:MDMF-RO:' STRING_RE=re.compile('^' +BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF-RO'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)') def __init__(self, readkey, fingerprint): self.readkey = readkey @@ -461,13 +393,6 @@ class ReadonlyMDMFFileURI(_BaseURI): assert len(self.storage_index) == 16 self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(base32.a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -504,25 +429,18 @@ class ReadonlyMDMFFileURI(_BaseURI): def get_verify_cap(self): return MDMFVerifierURI(self.storage_index, self.fingerprint) + class MDMFVerifierURI(_BaseURI): implements(IVerifierURI) BASE_STRING='URI:MDMF-Verifier:' STRING_RE=re.compile('^'+BASE_STRING+BASE32STR_128bits+':'+BASE32STR_256bits+'(:|$)') - HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'MDMF-Verifier'+SEP+BASE32STR_128bits+SEP+BASE32STR_256bits+'(:|$)') def __init__(self, storage_index, fingerprint): assert len(storage_index) == 16 self.storage_index = storage_index self.fingerprint = fingerprint - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - return cls(si_a2b(mo.group(1)), base32.a2b(mo.group(2))) - @classmethod def init_from_string(cls, uri): mo = cls.STRING_RE.search(uri) @@ -549,6 +467,7 @@ class MDMFVerifierURI(_BaseURI): def get_verify_cap(self): return self + class _DirectoryBaseURI(_BaseURI): implements(IURI, IDirnodeURI) def __init__(self, filenode_uri=None): @@ -567,18 +486,6 @@ class _DirectoryBaseURI(_BaseURI): cls.INNER_URI_CLASS.BASE_STRING+bits) return cls(fn) - @classmethod - def init_from_human_encoding(cls, uri): - mo = cls.BASE_HUMAN_RE.search(uri) - if not mo: - raise BadURIError("'%s' doesn't look like a %s cap" % (uri, cls)) - bits = uri[mo.end():] - while bits and bits[-1] == '/': - bits = bits[:-1] - fn = cls.INNER_URI_CLASS.init_from_string( - cls.INNER_URI_CLASS.BASE_STRING+urllib.unquote(bits)) - return cls(fn) - def to_string(self): fnuri = self._filenode_uri.to_string() mo = re.match(self.INNER_URI_CLASS.BASE_STRING, fnuri) @@ -607,12 +514,12 @@ class _DirectoryBaseURI(_BaseURI): def get_storage_index(self): return self._filenode_uri.get_storage_index() + class DirectoryURI(_DirectoryBaseURI): implements(IDirectoryURI) BASE_STRING='URI:DIR2:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2'+SEP) INNER_URI_CLASS=WriteableSSKFileURI def __init__(self, filenode_uri=None): @@ -632,7 +539,6 @@ class ReadonlyDirectoryURI(_DirectoryBaseURI): BASE_STRING='URI:DIR2-RO:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-RO'+SEP) INNER_URI_CLASS=ReadonlySSKFileURI def __init__(self, filenode_uri=None): @@ -667,7 +573,6 @@ class _ImmutableDirectoryBaseURI(_DirectoryBaseURI): class ImmutableDirectoryURI(_ImmutableDirectoryBaseURI): BASE_STRING='URI:DIR2-CHK:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-CHK'+SEP) INNER_URI_CLASS=CHKFileURI def get_verify_cap(self): @@ -678,7 +583,6 @@ class ImmutableDirectoryURI(_ImmutableDirectoryBaseURI): class LiteralDirectoryURI(_ImmutableDirectoryBaseURI): BASE_STRING='URI:DIR2-LIT:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-LIT'+SEP) INNER_URI_CLASS=LiteralFileURI def get_verify_cap(self): @@ -691,7 +595,6 @@ class MDMFDirectoryURI(_DirectoryBaseURI): BASE_STRING='URI:DIR2-MDMF:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF'+SEP) INNER_URI_CLASS=WriteableMDMFFileURI def __init__(self, filenode_uri=None): @@ -714,7 +617,6 @@ class ReadonlyMDMFDirectoryURI(_DirectoryBaseURI): BASE_STRING='URI:DIR2-MDMF-RO:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF-RO'+SEP) INNER_URI_CLASS=ReadonlyMDMFFileURI def __init__(self, filenode_uri=None): @@ -753,7 +655,6 @@ class MDMFDirectoryURIVerifier(_DirectoryBaseURI): BASE_STRING='URI:DIR2-MDMF-Verifier:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-MDMF-Verifier'+SEP) INNER_URI_CLASS=MDMFVerifierURI def __init__(self, filenode_uri=None): @@ -779,7 +680,6 @@ class DirectoryURIVerifier(_DirectoryBaseURI): BASE_STRING='URI:DIR2-Verifier:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-Verifier'+SEP) INNER_URI_CLASS=SSKVerifierURI def __init__(self, filenode_uri=None): @@ -804,7 +704,6 @@ class ImmutableDirectoryURIVerifier(DirectoryURIVerifier): implements(IVerifierURI) BASE_STRING='URI:DIR2-CHK-Verifier:' BASE_STRING_RE=re.compile('^'+BASE_STRING) - BASE_HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'DIR2-CHK-VERIFIER'+SEP) INNER_URI_CLASS=CHKFileVerifierURI -- 2.45.2