@@ -34,7 +34,7 @@ def _add_field_value(self, field_name: str, value: Union[str, bytes]) -> None:
3434 self ._storage [field_name ].append (value )
3535
3636 @staticmethod
37- def _encode_html_entities (value ) :
37+ def _encode_html_entities (value : str ) -> str :
3838 """Encodes unsafe HTML characters."""
3939 return (
4040 str (value )
@@ -84,11 +84,11 @@ def __repr__(self) -> str:
8484
8585class QueryParams (_IFieldStorage ):
8686 """
87- Class for parsing and storing GET quer parameters requests.
87+ Class for parsing and storing GET query parameters requests.
8888
8989 Examples::
9090
91- query_params = QueryParams(b "foo=bar&baz=qux&baz=quux")
91+ query_params = QueryParams("foo=bar&baz=qux&baz=quux")
9292 # QueryParams({"foo": "bar", "baz": ["qux", "quux"]})
9393
9494 query_params.get("foo") # "bar"
@@ -99,7 +99,7 @@ class QueryParams(_IFieldStorage):
9999 query_params.fields # ["foo", "baz"]
100100 """
101101
102- _storage : Dict [str , List [Union [ str , bytes ] ]]
102+ _storage : Dict [str , List [str ]]
103103
104104 def __init__ (self , query_string : str ) -> None :
105105 self ._storage = {}
@@ -151,7 +151,7 @@ def __init__(self, data: bytes, content_type: str) -> None:
151151 self ._parse_text_plain (data )
152152
153153 def _parse_x_www_form_urlencoded (self , data : bytes ) -> None :
154- decoded_data = data .decode ()
154+ decoded_data = data .decode ("utf-8" )
155155
156156 for field_name , value in [
157157 key_value .split ("=" , 1 ) for key_value in decoded_data .split ("&" )
@@ -169,12 +169,12 @@ def _parse_multipart_form_data(self, data: bytes, boundary: str) -> None:
169169 self ._add_field_value (field_name , value )
170170
171171 def _parse_text_plain (self , data : bytes ) -> None :
172- lines = data .split (b "\r \n " )[:- 1 ]
172+ lines = data .decode ( "utf-8" ). split ("\r \n " )[:- 1 ]
173173
174174 for line in lines :
175- field_name , value = line .split (b "=" , 1 )
175+ field_name , value = line .split ("=" , 1 )
176176
177- self ._add_field_value (field_name . decode () , value . decode () )
177+ self ._add_field_value (field_name , value )
178178
179179
180180class Request :
@@ -231,7 +231,7 @@ class Request:
231231
232232 raw_request : bytes
233233 """
234- Raw ' bytes' that were received from the client.
234+ Raw `` bytes`` that were received from the client.
235235
236236 Should **not** be modified directly.
237237 """
@@ -340,10 +340,10 @@ def _raw_body_bytes(self) -> bytes:
340340 return self .raw_request [empty_line_index + 4 :]
341341
342342 @staticmethod
343- def _parse_start_line (header_bytes : bytes ) -> Tuple [str , str , Dict [ str , str ] , str ]:
343+ def _parse_start_line (header_bytes : bytes ) -> Tuple [str , str , QueryParams , str ]:
344344 """Parse HTTP Start line to method, path, query_params and http_version."""
345345
346- start_line = header_bytes .decode ("utf8 " ).splitlines ()[0 ]
346+ start_line = header_bytes .decode ("utf-8 " ).splitlines ()[0 ]
347347
348348 method , path , http_version = start_line .split ()
349349
@@ -359,7 +359,7 @@ def _parse_start_line(header_bytes: bytes) -> Tuple[str, str, Dict[str, str], st
359359 @staticmethod
360360 def _parse_headers (header_bytes : bytes ) -> Headers :
361361 """Parse HTTP headers from raw request."""
362- header_lines = header_bytes .decode ("utf8 " ).splitlines ()[1 :]
362+ header_lines = header_bytes .decode ("utf-8 " ).splitlines ()[1 :]
363363
364364 return Headers (
365365 {
0 commit comments