Skip to content
This repository was archived by the owner on Apr 19, 2024. It is now read-only.

Commit 7885684

Browse files
committed
accept function codes in Multihash
1 parent fd4f150 commit 7885684

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

multihash.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,28 @@ class Func(Enum):
2626
class Multihash(namedtuple('Multihash', 'func length digest')):
2727
"""A named tuple representing multihash function, length and digest.
2828
29+
The function may be a `Func` member or its integer value (the function
30+
code).
31+
2932
>>> mh = Multihash(Func.sha1, 20, b'BINARY_DIGEST')
3033
>>> mh == (Func.sha1, 20, b'BINARY_DIGEST')
3134
True
3235
>>> mh == (mh.func, mh.length, mh.digest)
3336
True
37+
38+
>>> mhfc = Multihash(Func.sha1.value, mh.length, mh.digest)
39+
>>> mhfc == mh
40+
True
3441
"""
3542
__slots__ = ()
3643

44+
def __new__(cls, func, length, digest):
45+
try:
46+
f = Func(func)
47+
except ValueError as ve:
48+
raise ValueError("invalid hash function code", f)
49+
return super(cls, Multihash).__new__(cls, f, length, digest)
50+
3751

3852
def _test():
3953
import doctest

0 commit comments

Comments
 (0)