Skip to content

Commit 1d64108

Browse files
committed
Remove encode_bool
1 parent 33d4d21 commit 1d64108

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

bencoder.pyx

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,25 +107,20 @@ def encode(v, r):
107107
)
108108

109109

110-
def encode_int(x, list r):
110+
cdef encode_int(long x, list r):
111111
r.extend((b'i', str(x).encode(), b'e'))
112112

113113

114-
def encode_long(long x, list r):
114+
def encode_long(x, list r):
115115
r.extend((b'i', str(x).encode(), b'e'))
116116

117117

118-
def encode_bool(x, list r):
119-
if x:
120-
encode_int(1, r)
121-
else:
122-
encode_int(0, r)
118+
cdef encode_bytes(bytes x, list r):
119+
r.extend((str(len(x)).encode(), b':', x))
123120

124121

125-
def encode_string(x, list r):
126-
if isinstance(x, str):
127-
x = x.encode()
128-
r.extend((str(len(x)).encode(), b':', x))
122+
def encode_string(str x, list r):
123+
r.extend((str(len(x)).encode(), b':', x.encode()))
129124

130125

131126
def encode_list(x, list r):
@@ -149,14 +144,14 @@ def encode_dict(x, list r):
149144

150145
encode_func = {
151146
int: encode_int,
147+
bool: encode_int,
152148
long: encode_long,
153-
bytes: encode_string,
149+
bytes: encode_bytes,
154150
str: encode_string,
155151
list: encode_list,
156152
tuple: encode_list,
157153
dict: encode_dict,
158154
OrderedDict: encode_dict,
159-
bool: encode_bool,
160155
}
161156

162157

tests/test_decode.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ def test_decode_int(benchmark):
2121
def test_decode_large_int(benchmark):
2222
assert bdecode(b'i1455189890e') == 1455189890
2323
assert bdecode(b'i25735241490e') == 25735241490
24-
assert benchmark(bdecode, ('i%de' % sys.maxsize).encode()) == sys.maxsize
24+
25+
MAX_SIZE = sys.maxsize + 1
26+
BENCODED_MAXSIZE = ('i%de' % MAX_SIZE).encode()
27+
assert benchmark(bdecode, BENCODED_MAXSIZE) == MAX_SIZE
2528

2629

2730
def test_decode_list(benchmark):

tests/test_encode.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ def test_encode_int(benchmark):
2121
def test_encode_large_int(benchmark):
2222
assert bencode(1455189890) == b'i1455189890e'
2323
assert bencode(25735241490) == b'i25735241490e'
24-
assert benchmark(bencode, sys.maxsize) == ('i%de' % sys.maxsize).encode()
24+
MAX_SIZE = sys.maxsize + 1
25+
BENCODED_MAXSIZE = ('i%de' % MAX_SIZE).encode()
26+
27+
assert benchmark(bencode, MAX_SIZE) == BENCODED_MAXSIZE
2528

2629

2730
def test_encode_bytes(benchmark):
@@ -31,6 +34,13 @@ def test_encode_bytes(benchmark):
3134
assert coded == l + b':' + b
3235

3336

37+
def test_encode_string(benchmark):
38+
b = "TheseAreSomeString"
39+
coded = benchmark(bencode, b)
40+
l = str(len(b))
41+
assert coded == (l + ':' + b).encode()
42+
43+
3444
def test_encode_list(benchmark):
3545
assert benchmark(bencode, ['a', 'b', 3]) == b'l1:a1:bi3ee'
3646

0 commit comments

Comments
 (0)