Skip to content

Commit 2645817

Browse files
authored
Improve typing in headers module (#638)
1 parent 863dffe commit 2645817

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

blacksheep/headers.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
from collections.abc import Mapping, MutableSequence
2+
from typing import Generator
23

34

45
class Header:
56
def __init__(self, name: bytes, value: bytes):
67
self.name = name
78
self.value = value
89

9-
def __repr__(self):
10-
return f"<Header {self.name}: {self.value}>"
10+
def __repr__(self) -> str:
11+
return f"<Header {self.name!r}: {self.value!r}>"
1112

12-
def __iter__(self):
13+
def __iter__(self) -> Generator[bytes, None, None]:
1314
yield self.name
1415
yield self.value
1516

@@ -66,16 +67,16 @@ def update(self, values: dict[bytes, bytes]):
6667
for key, value in values.items():
6768
self[key] = value
6869

69-
def items(self):
70+
def items(self) -> Generator[tuple[bytes, bytes], None, None]:
7071
yield from self.values
7172

72-
def clone(self):
73-
values = []
73+
def clone(self) -> "Headers":
74+
values: list[tuple[bytes, bytes]] = []
7475
for name, value in self.values:
7576
values.append((name, value))
7677
return Headers(values)
7778

78-
def add_many(self, values: dict[bytes, bytes] | list[tuple[bytes, bytes]]):
79+
def add_many(self, values: dict[bytes, bytes] | list[tuple[bytes, bytes]] | list[Header]):
7980
if isinstance(values, MutableSequence):
8081
for item in values:
8182
self.add(*item)
@@ -87,7 +88,7 @@ def add_many(self, values: dict[bytes, bytes] | list[tuple[bytes, bytes]]):
8788
raise ValueError("values must be dict[bytes, bytes] or list[Header]")
8889

8990
@staticmethod
90-
def _add_to_instance(instance, other):
91+
def _add_to_instance(instance, other: "Headers | Header | tuple[bytes, bytes] | MutableSequence[tuple[bytes, bytes]]"):
9192
if isinstance(other, Headers):
9293
for value in other:
9394
instance.add(*value)
@@ -112,22 +113,22 @@ def _add_to_instance(instance, other):
112113
return instance
113114
return NotImplemented
114115

115-
def __add__(self, other):
116+
def __add__(self, other: "Headers | Header | tuple[bytes, bytes] | MutableSequence[tuple[bytes, bytes]]"):
116117
return self._add_to_instance(self.clone(), other)
117118

118-
def __radd__(self, other):
119+
def __radd__(self, other: "Headers | Header | tuple[bytes, bytes] | MutableSequence[tuple[bytes, bytes]]"):
119120
return self._add_to_instance(self.clone(), other)
120121

121-
def __iadd__(self, other):
122+
def __iadd__(self, other: "Headers | Header | tuple[bytes, bytes] | MutableSequence[tuple[bytes, bytes]]"):
122123
return self._add_to_instance(self, other)
123124

124-
def __iter__(self):
125+
def __iter__(self) -> Generator[tuple[bytes, bytes], None, None]:
125126
yield from self.values
126127

127128
def __setitem__(self, key: bytes, value: bytes):
128129
self.set(key, value)
129130

130-
def __getitem__(self, item: bytes):
131+
def __getitem__(self, item: bytes) -> tuple[bytes, ...]:
131132
return self.get(item)
132133

133134
def keys(self) -> tuple[bytes, ...]:
@@ -167,5 +168,5 @@ def __delitem__(self, key: bytes):
167168
def __contains__(self, key: bytes) -> bool:
168169
return self.contains(key)
169170

170-
def __repr__(self):
171-
return f"<Headers {self.values}>"
171+
def __repr__(self) -> str:
172+
return f"<Headers {self.values!r}>"

0 commit comments

Comments
 (0)