Allow tuple as input of query parameters. (#1426)
* Allow tuple as input of query parameters. In the documentation it is stated that params can be dict, string or two tuples. This allows to used two tuples. Previously it was possible to use only tuple inside a list. * tests for two tuples * use isinstance to check the type of query params * change list|tuple to in Sequence * update documentation * fix typing
This commit is contained in:
parent
584a40513f
commit
86964054d6
@ -47,7 +47,7 @@ def request(
|
||||
`HEAD`, `POST`, `PUT`, `PATCH`, or `DELETE`.
|
||||
* **url** - URL for the new `Request` object.
|
||||
* **params** - *(optional)* Query parameters to include in the URL, as a
|
||||
string, dictionary, or list of two-tuples.
|
||||
string, dictionary, or sequence of two-tuples.
|
||||
* **content** - *(optional)* Binary content to include in the body of the
|
||||
request, as bytes or a byte iterator.
|
||||
* **data** - *(optional)* Form data to include in the body of the request,
|
||||
|
||||
@ -520,7 +520,7 @@ class Client(BaseClient):
|
||||
* **auth** - *(optional)* An authentication class to use when sending
|
||||
requests.
|
||||
* **params** - *(optional)* Query parameters to include in request URLs, as
|
||||
a string, dictionary, or list of two-tuples.
|
||||
a string, dictionary, or sequence of two-tuples.
|
||||
* **headers** - *(optional)* Dictionary of HTTP headers to include when
|
||||
sending requests.
|
||||
* **cookies** - *(optional)* Dictionary of Cookie items to include when
|
||||
@ -1161,7 +1161,7 @@ class AsyncClient(BaseClient):
|
||||
* **auth** - *(optional)* An authentication class to use when sending
|
||||
requests.
|
||||
* **params** - *(optional)* Query parameters to include in request URLs, as
|
||||
a string, dictionary, or list of two-tuples.
|
||||
a string, dictionary, or sequence of two-tuples.
|
||||
* **headers** - *(optional)* Dictionary of HTTP headers to include when
|
||||
sending requests.
|
||||
* **cookies** - *(optional)* Dictionary of Cookie items to include when
|
||||
|
||||
@ -441,7 +441,7 @@ class QueryParams(typing.Mapping[str, str]):
|
||||
items = parse_qsl(value)
|
||||
elif isinstance(value, QueryParams):
|
||||
items = value.multi_items()
|
||||
elif isinstance(value, list):
|
||||
elif isinstance(value, (list, tuple)):
|
||||
items = value
|
||||
else:
|
||||
items = flatten_queryparams(value)
|
||||
|
||||
@ -35,6 +35,7 @@ QueryParamTypes = Union[
|
||||
"QueryParams",
|
||||
Mapping[str, Union[PrimitiveData, Sequence[PrimitiveData]]],
|
||||
List[Tuple[str, PrimitiveData]],
|
||||
Tuple[Tuple[str, PrimitiveData], ...],
|
||||
str,
|
||||
bytes,
|
||||
None,
|
||||
|
||||
@ -9,6 +9,8 @@ import httpx
|
||||
"a=123&a=456&b=789",
|
||||
{"a": ["123", "456"], "b": 789},
|
||||
{"a": ("123", "456"), "b": 789},
|
||||
[("a", "123"), ("a", "456"), ("b", "789")],
|
||||
(("a", "123"), ("a", "456"), ("b", "789")),
|
||||
],
|
||||
)
|
||||
def test_queryparams(source):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user