11from collections .abc import Mapping , MutableSequence
2+ from typing import Generator
23
34
45class 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