@@ -328,7 +328,7 @@ def __init__(
328328 :py:class:`HTTPHeaderTrait` will be checked instead. Required when
329329 collecting list entries.
330330 :param headers: An optional list of header tuples to append to. If not
331- set, one will be created.
331+ set, one will be created. Values appended will not be escaped.
332332 """
333333 self .headers : list [tuple [str , str ]] = headers if headers is not None else []
334334 self ._key = key
@@ -486,7 +486,7 @@ def write_big_decimal(self, schema: Schema, value: Decimal) -> None:
486486
487487 def write_string (self , schema : Schema , value : str ) -> None :
488488 key = self ._key or schema .expect_trait (HTTPQueryTrait ).key
489- self .query_params .append ((key , urlquote ( value , safe = "" ) ))
489+ self .query_params .append ((key , value ))
490490
491491 def write_timestamp (self , schema : Schema , value : datetime ) -> None :
492492 key = self ._key or schema .expect_trait (HTTPQueryTrait ).key
@@ -576,7 +576,7 @@ def entry(self, key: str, value_writer: Callable[[ShapeSerializer], None]):
576576
577577
578578class HTTPQueryMapValueSerializer (SpecificShapeSerializer ):
579- def __init__ (self , key : str , query_params : list [tuple [str , str ]]) -> None :
579+ def __init__ (self , key : str , query_params : list [tuple [str , str ]]) -> None :
580580 """Initialize an HTTPQueryMapValueSerializer.
581581
582582 :param key: The key of the query parameter.
@@ -586,7 +586,8 @@ def __init__(self, key: str, query_params: list[tuple[str, str]]) -> None:
586586 self ._query_params = query_params
587587
588588 def write_string (self , schema : Schema , value : str ) -> None :
589- self ._query_params .append ((self ._key , urlquote (value , safe = "" )))
589+ # Note: values are escaped when query params are joined
590+ self ._query_params .append ((self ._key , value ))
590591
591592 @contextmanager
592593 def begin_list (self , schema : Schema , size : int ) -> Iterator [ShapeSerializer ]:
0 commit comments