Skip to content

Commit 7b163a7

Browse files
committed
add tests for new early exit cases, restore coverage, surpisingly reduce time of headers_dict_to_raw to 1.7883 seconds in benchmark
1 parent 789e5de commit 7b163a7

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

tests/test_http.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ def test_headers_raw_dict_none(self):
3535
assert headers_raw_to_dict(None) is None
3636
assert headers_dict_to_raw(None) is None
3737

38+
def test_headers_raw_dict_empty(self):
39+
assert headers_raw_to_dict(b"") == {}
40+
assert headers_dict_to_raw({}) == b""
41+
3842
def test_headers_raw_to_dict(self):
3943
raw = b"Content-type: text/html\n\rAccept: gzip\n\r\
4044
Cache-Control: no-cache\n\rCache-Control: no-store\n\n"

w3lib/http.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,21 @@ def headers_dict_to_raw(headers_dict: HeadersDictInput | None) -> bytes | None:
100100
if not headers_dict:
101101
return b""
102102

103-
parts = bytearray()
103+
parts = b""
104104

105105
for key, value in headers_dict.items():
106106
if isinstance(value, bytes):
107107
if parts:
108-
parts.extend(b"\r\n")
109-
parts.extend(key + b": " + value)
108+
parts += b"\r\n"
109+
parts += key + b": " + value
110110

111111
elif isinstance(value, (list, tuple)):
112112
for v in value:
113113
if parts:
114-
parts.extend(b"\r\n")
115-
parts.extend(key + b": " + v)
114+
parts += b"\r\n"
115+
parts += key + b": " + v
116116

117-
return bytes(parts)
117+
return parts
118118

119119

120120
def basic_auth_header(

0 commit comments

Comments
 (0)