11import json
22import logging
33from 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
55
66import requests
77from requests import Response
88
99from .client import Client
1010
11-
1211Body = Union [
1312 str , bytes , Mapping [str , Any ], Iterable [Tuple [str , Optional [str ]]], IO [Any ]
1413]
@@ -26,14 +25,14 @@ def log_request(
2625 self ,
2726 method : str ,
2827 url : str ,
29- params : Dict [ str , Optional [ str ]],
28+ params : List [ Tuple [ str , Any ]],
3029 headers : Dict [str , str ],
3130 body : Optional [str ],
3231 ) -> None :
3332 if not self .logger .isEnabledFor (logging .DEBUG ):
3433 return
3534
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 ])
3736
3837 debug_headers = {
3938 ** headers ,
@@ -129,7 +128,16 @@ def _request(
129128
130129 raw_body = json .dumps (body ) if body is not None else None
131130
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 ))
133141
134142 headers = {
135143 "accept" : "application/json" ,
@@ -146,15 +154,15 @@ def _request(
146154 logger .log_request (
147155 method = method ,
148156 url = url ,
149- params = params ,
157+ params = request_params ,
150158 headers = headers ,
151159 body = raw_body ,
152160 )
153161
154162 response = requests .request (
155163 method = method ,
156164 url = url ,
157- params = params ,
165+ params = request_params ,
158166 headers = headers ,
159167 data = raw_body ,
160168 verify = not self .client .api_allow_insecure ,
0 commit comments