1
1
import json
2
2
import logging
3
3
from dataclasses import dataclass
4
- from typing import IO , Any , Dict , Iterable , Mapping , Optional , Tuple , Union
4
+ from typing import IO , Any , Dict , Iterable , List , Mapping , Optional , Tuple , Union
5
5
6
6
import requests
7
7
from requests import Response
8
8
9
9
from .client import Client
10
10
11
-
12
11
Body = Union [
13
12
str , bytes , Mapping [str , Any ], Iterable [Tuple [str , Optional [str ]]], IO [Any ]
14
13
]
@@ -26,14 +25,14 @@ def log_request(
26
25
self ,
27
26
method : str ,
28
27
url : str ,
29
- params : Dict [ str , Optional [ str ]],
28
+ params : List [ Tuple [ str , Any ]],
30
29
headers : Dict [str , str ],
31
30
body : Optional [str ],
32
31
) -> None :
33
32
if not self .logger .isEnabledFor (logging .DEBUG ):
34
33
return
35
34
36
- raw_params = "&" .join ([f"{ k } ={ v } " for k , v in params . items () ])
35
+ raw_params = "&" .join ([f"{ k } ={ v } " for ( k , v ) in params ])
37
36
38
37
debug_headers = {
39
38
** headers ,
@@ -129,7 +128,16 @@ def _request(
129
128
130
129
raw_body = json .dumps (body ) if body is not None else None
131
130
132
- params = {k : str (v ) for k , v in params .items () if v is not None }
131
+ request_params : List [Tuple [str , Any ]] = []
132
+ for k , v in params .items ():
133
+ if v is None :
134
+ continue
135
+
136
+ if isinstance (v , list ):
137
+ for item in v :
138
+ request_params .append ((k , item ))
139
+ else :
140
+ request_params .append ((k , v ))
133
141
134
142
headers = {
135
143
"accept" : "application/json" ,
@@ -146,15 +154,15 @@ def _request(
146
154
logger .log_request (
147
155
method = method ,
148
156
url = url ,
149
- params = params ,
157
+ params = request_params ,
150
158
headers = headers ,
151
159
body = raw_body ,
152
160
)
153
161
154
162
response = requests .request (
155
163
method = method ,
156
164
url = url ,
157
- params = params ,
165
+ params = request_params ,
158
166
headers = headers ,
159
167
data = raw_body ,
160
168
verify = not self .client .api_allow_insecure ,
0 commit comments