Skip to content

Commit 143410e

Browse files
committed
update: fmt with black
1 parent 8e78531 commit 143410e

File tree

8 files changed

+64
-84
lines changed

8 files changed

+64
-84
lines changed

merkly/mtree.py

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class Node(BaseModel):
99
"""
1010
# 🍃 Leaf of Tree
1111
"""
12+
1213
left: Optional[str]
1314
right: Optional[str]
1415

@@ -20,12 +21,14 @@ def __repr__(self) -> str:
2021
else:
2122
return ""
2223

23-
class MerkleTree():
24+
25+
class MerkleTree:
2426
"""
2527
# 🌳 Merkle Tree
2628
- You can passa raw data
2729
- They will hashed by `keccak-256`
2830
"""
31+
2932
def __init__(self, leafs: List[str]) -> None:
3033
"""
3134
# Constructor
@@ -36,8 +39,8 @@ def __init__(self, leafs: List[str]) -> None:
3639
if not is_power_2(leafs.__len__()):
3740
# todo: custom error
3841
raise Exception(
39-
"size of leafs should be power of 2\n" +
40-
"like: 2, 4, 8, 16, 32, 64, 128..."
42+
"size of leafs should be power of 2\n"
43+
+ "like: 2, 4, 8, 16, 32, 64, 128..."
4144
)
4245
# todo: to lazy initialize
4346
# todo: cache leafs
@@ -75,7 +78,6 @@ def root(self) -> str:
7578

7679
return MerkleTree.merkle_root(self.leafs)[0]
7780

78-
7981
def proof(self, leaf: str) -> List[Node]:
8082
"""
8183
# Get a proof of merkle tree
@@ -133,16 +135,10 @@ def merkle_root(leafs: list):
133135
if len(leafs) == 1:
134136
return leafs
135137

136-
return MerkleTree.merkle_root([
137-
keccak(i + j) for i, j in slice_in_pairs(leafs)
138-
])
138+
return MerkleTree.merkle_root([keccak(i + j) for i, j in slice_in_pairs(leafs)])
139139

140140
@staticmethod
141-
def merkle_proof(
142-
leafs: List[str],
143-
proof: List[str],
144-
leaf: str
145-
) -> list:
141+
def merkle_proof(leafs: List[str], proof: List[str], leaf: str) -> list:
146142
"""
147143
# Make a proof
148144
- if the `leaf` index is less than half the size of the `leafs`
@@ -151,30 +147,22 @@ def merkle_proof(
151147
from merkly.utils.crypto import half
152148

153149
if len(leafs) == 2:
154-
proof.append(
155-
Node(right=leafs[1])
156-
)
157-
proof.append(
158-
Node(left=leafs[0])
159-
)
150+
proof.append(Node(right=leafs[1]))
151+
proof.append(Node(left=leafs[0]))
160152
return proof
161153

162154
try:
163155
index = leafs.index(leaf)
164156
except ValueError as err:
165157
raise ValueError(
166-
f'leaf: {leaf} does not exist in the tree: {leafs}'
158+
f"leaf: {leaf} does not exist in the tree: {leafs}"
167159
) from err
168160

169161
left, right = half(leafs)
170162

171163
if index < len(leafs) / 2:
172-
proof.append(
173-
Node(right=MerkleTree.merkle_root(right)[0])
174-
)
164+
proof.append(Node(right=MerkleTree.merkle_root(right)[0]))
175165
return MerkleTree.merkle_proof(left, proof, leaf)
176166
else:
177-
proof.append(
178-
Node(left=MerkleTree.merkle_root(left)[0])
179-
)
167+
proof.append(Node(left=MerkleTree.merkle_root(left)[0]))
180168
return MerkleTree.merkle_proof(right, proof, leaf)

merkly/utils/crypto.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ def keccak(data: str) -> str:
2626
"541111248b45b7a8dc3f5579f630e74cb01456ea6ac067d3f4d793245a255155"
2727
```
2828
"""
29-
return keccak_256(
30-
data.encode()
31-
).hexdigest()
29+
return keccak_256(data.encode()).hexdigest()
3230

3331

3432
def half(list_item: List[int]) -> Tuple[int, int]:
@@ -66,7 +64,4 @@ def slice_in_pairs(list_item: list):
6664
```
6765
"""
6866

69-
return [
70-
list_item[i: i + 2]
71-
for i in range(0, len(list_item), 2)
72-
]
67+
return [list_item[i : i + 2] for i in range(0, len(list_item), 2)]

merkly/utils/math.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Math utils functions
33
"""
44

5+
56
def is_power_2(number: int) -> bool:
67
"""
78
# Verify if `x: int` is power of 2
@@ -16,6 +17,6 @@ def is_power_2(number: int) -> bool:
1617
```
1718
"""
1819

19-
left: bool = (number & (number - 1) == 0)
20+
left: bool = number & (number - 1) == 0
2021
right: bool = number != 0
2122
return left and right

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pylint = "^2.14.5"
2222
pydantic = "^1.10.2"
2323
rich = "^12.6.0" # for beatfull print
2424
pytest-watcher = "^0.2.3"
25+
black = "^23.3.0"
2526

2627
[tool.poetry.group.dev.dependencies]
2728
pytest = "^7.1.2"

scripts/poetry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def w_t():
66
"""
77
# running `poetry run w-t` for watch tests
88
"""
9-
subprocess.run(["ptw", "test","-vvx"])
9+
subprocess.run(["ptw", "test", "-vvx"])
1010

1111

1212
def lint():

test/test_merkle_tree.py

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,21 @@ def test_simple_merkle_tree_constructor():
1515
tree = MerkleTree(leafs)
1616

1717
assert tree.leafs == [
18-
'3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb',
19-
'b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510',
20-
'0b42b6393c1f53060fe3ddbfcd7aadcca894465a5a438f69c87d790b2299b9b2',
21-
'f1918e8562236eb17adc8502332f4c9c82bc14e19bfc0aa10ab674ff75b3d2f3',
18+
"3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
19+
"b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
20+
"0b42b6393c1f53060fe3ddbfcd7aadcca894465a5a438f69c87d790b2299b9b2",
21+
"f1918e8562236eb17adc8502332f4c9c82bc14e19bfc0aa10ab674ff75b3d2f3",
2222
]
2323

2424

25-
2625
@mark.parametrize(
2726
"leafs",
2827
[
2928
["a", "b", "c", "d", "e", "f", "g"],
3029
["a", "b", "c", "d", "e", "f"],
3130
["a", "b", "c", "d", "e"],
32-
["a", "b", "c"]
33-
]
31+
["a", "b", "c"],
32+
],
3433
)
3534
def test_error_simple_merkle_tree_constructor(leafs: List[str]):
3635
"""
@@ -45,20 +44,18 @@ def test_error_simple_merkle_tree_constructor(leafs: List[str]):
4544
[
4645
(
4746
["a", "b", "c", "d", "e", "f", "g", "h"],
48-
"2dfe93948ecb1a0903dbf034de56d6529e62679519a37ed3b5b3356ab27b7bb8"
47+
"2dfe93948ecb1a0903dbf034de56d6529e62679519a37ed3b5b3356ab27b7bb8",
4948
),
50-
( ["a", "b", "c", "d"],
51-
"115cbb4775ed495f3d954dfa47164359a97762b40059d9502895def16eed609c"
49+
(
50+
["a", "b", "c", "d"],
51+
"115cbb4775ed495f3d954dfa47164359a97762b40059d9502895def16eed609c",
5252
),
5353
(
5454
["a", "b"],
55-
"414e3a845393ef6d68973ddbf5bd85ff524443cf0e06a361624f3d51b879ec1c"
55+
"414e3a845393ef6d68973ddbf5bd85ff524443cf0e06a361624f3d51b879ec1c",
5656
),
57-
(
58-
["a"],
59-
"3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb"
60-
)
61-
]
57+
(["a"], "3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb"),
58+
],
6259
)
6360
def test_simple_merkle_root(leafs: List[str], root: str):
6461
"""
@@ -78,24 +75,20 @@ def test_proof_simple_merkle():
7875
assert tree.proof("a") == [
7976
Node(left="3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb"),
8077
Node(right="b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510"),
81-
Node(right="64673cf40035df6d3a0d0143cc8426de49b9a93b9ad2d330cb4f0bc390a86d20")
78+
Node(right="64673cf40035df6d3a0d0143cc8426de49b9a93b9ad2d330cb4f0bc390a86d20"),
8279
]
8380

8481

8582
@mark.parametrize(
8683
"leaf",
87-
[
88-
"a", "b", "c", "d", "e", "f", "g", "h",
89-
"1", "2", "3", "4", "5", "6", "7", "8"
90-
]
84+
["a", "b", "c", "d", "e", "f", "g", "h", "1", "2", "3", "4", "5", "6", "7", "8"],
9185
)
9286
def test_verify_simple_merkle(leaf: str):
9387
"""
9488
Instantiated a simple Merkle Tree
9589
"""
96-
tree = MerkleTree([
97-
"a", "b", "c", "d", "e", "f", "g", "h",
98-
"1", "2", "3", "4", "5", "6", "7", "8"
99-
])
90+
tree = MerkleTree(
91+
["a", "b", "c", "d", "e", "f", "g", "h", "1", "2", "3", "4", "5", "6", "7", "8"]
92+
)
10093

10194
assert tree.verify(tree.proof(leaf))

test/utils/test_crypto.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,23 @@
66
@mark.parametrize(
77
"data, expect",
88
[
9-
("string very long",
10-
"2b91b0c651a9e25f0c3ca0278fe4ce8d5fae980731bc48f92fa192886d4dc4b6"),
11-
("ethereum", "541111248b45b7a8dc3f5579f630e74cb01456ea6ac067d3f4d793245a255155"),
9+
(
10+
"string very long",
11+
"2b91b0c651a9e25f0c3ca0278fe4ce8d5fae980731bc48f92fa192886d4dc4b6",
12+
),
13+
(
14+
"ethereum",
15+
"541111248b45b7a8dc3f5579f630e74cb01456ea6ac067d3f4d793245a255155",
16+
),
1217
("bitcoin", "7dee6e1aa550de37364ec77e03e62ea56bf42037b8297280de9d844d88444e4d"),
1318
("merkle", "326fe0d8a70ab934a7bf9d1323c6d87ee37bbe70079f82e72203b1e07c0c185c"),
1419
("cars", "0ee92a51567d02169526115460f55ddef86e734b94b947896e82d4532671fdf2"),
1520
("tree", "b2510336c6497719adadc7ade198c988520f3349445f074dc729df0f3c2b12ad"),
1621
("a", "3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb"),
1722
("b", "b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510"),
1823
("x", "7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83"),
19-
("y", "83847cf31c36389df832d0d4d3df7cf28f211e3f83173e5c157bab31573d61f3")
20-
]
24+
("y", "83847cf31c36389df832d0d4d3df7cf28f211e3f83173e5c157bab31573d61f3"),
25+
],
2126
)
2227
def test_of_keccak(data: str, expect: bool):
2328
assert expect == keccak(data)
@@ -35,8 +40,8 @@ def test_of_keccak(data: str, expect: bool):
3540
([i for i in range(1002)], 501),
3641
([i for i in range(2040)], 1020),
3742
([i for i in range(5008)], 2504),
38-
([i for i in range(10010)], 5005)
39-
]
43+
([i for i in range(10010)], 5005),
44+
],
4045
)
4146
def test_slice_in_pairs(full: List[int], half: int):
4247
assert half == len(slice_in_pairs(full))

test/utils/test_math.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,21 @@
22
from merkly.utils.math import is_power_2
33
from pytest import mark
44

5+
56
@mark.parametrize(
6-
"number, expect",
7-
[
8-
(3, False),
9-
(13, False),
10-
(345, False),
11-
(3098, False),
12-
(31234, False),
13-
(2, True),
14-
(4, True),
15-
(64, True),
16-
(4096, True),
17-
(65536, True)
18-
]
7+
"number, expect",
8+
[
9+
(3, False),
10+
(13, False),
11+
(345, False),
12+
(3098, False),
13+
(31234, False),
14+
(2, True),
15+
(4, True),
16+
(64, True),
17+
(4096, True),
18+
(65536, True),
19+
],
1920
)
2021
def test_of_is_power_2(number: int, expect: bool):
21-
assert expect == is_power_2(number)
22-
23-
24-
25-
22+
assert expect == is_power_2(number)

0 commit comments

Comments
 (0)