Return bytes instead of str

Closes https://github.com/datpy/merkle-tree-stream/issues/2.
This commit is contained in:
Luke Murphy 2019-10-06 16:11:49 +02:00
parent 1c4fe9533f
commit dd1c0776b2
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
5 changed files with 17 additions and 18 deletions

View File

@ -1,3 +1,12 @@
Merkle_Tree_Stream 0.0.1a2 (2019-10-06)
=======================================
Bug Fixes
---------
- MerkleTreeIterator leaf and parent functions now return bytes.
Merkle_Tree_Stream 0.0.1a1 (2019-08-07)
=======================================

View File

@ -23,7 +23,7 @@ class MerkleTreeNode:
parent: int
size: int
data: bytes
hash: Optional[str] = attr.Factory(str)
hash: Optional[bytes] = attr.Factory(bytes)
def __attrs_post_init__(self) -> Any:
"""Initialise the parent index."""

View File

@ -7,8 +7,6 @@ from flat_tree import FlatTreeAccessor
from merkle_tree_stream.node import MerkleTreeNode
Hash = str
EMPTY_DATA = b''
EMPTY_HASH = None
@ -26,8 +24,8 @@ class MerkleTreeIterator:
:param roots: The tree roots
"""
leaf: Callable[[MerkleTreeNode], Hash]
parent: Callable[[MerkleTreeNode, MerkleTreeNode], Hash]
leaf: Callable[[MerkleTreeNode], bytes]
parent: Callable[[MerkleTreeNode, MerkleTreeNode], bytes]
roots: List[MerkleTreeNode] = attr.Factory(list)
_position: int = 0

View File

@ -6,7 +6,7 @@ import pytest
@pytest.fixture
def leaf():
def _leaf(node, roots=None):
return hashlib.sha256(node.data).hexdigest()
return hashlib.sha256(node.data).digest()
return _leaf
@ -17,6 +17,6 @@ def parent():
sha256 = hashlib.sha256()
sha256.update(first.data)
sha256.update(second.data)
return sha256.hexdigest()
return sha256.digest()
return _parent

View File

@ -17,26 +17,18 @@ def test_hashes(leaf, parent):
assert len(merkle_iter) == expected_count
assert next(merkle_iter) == MerkleTreeNode(
index=0,
parent=1,
hash=hashlib.sha256(b'a').hexdigest(),
size=1,
data=b'a',
index=0, parent=1, hash=hashlib.sha256(b'a').digest(), size=1, data=b'a'
)
assert next(merkle_iter) == MerkleTreeNode(
index=2,
parent=1,
hash=hashlib.sha256(b'b').hexdigest(),
size=1,
data=b'b',
index=2, parent=1, hash=hashlib.sha256(b'b').digest(), size=1, data=b'b'
)
hashed = hashlib.sha256(b'a')
hashed.update(b'b')
assert next(merkle_iter) == MerkleTreeNode(
index=1, parent=3, hash=hashed.hexdigest(), size=2, data=b''
index=1, parent=3, hash=hashed.digest(), size=2, data=b''
)
with pytest.raises(StopIteration):