@@ -152,17 +152,20 @@ def __init__(
152152 self ,
153153 * ,
154154 httpx_client : httpx .Client ,
155- base_timeout : typing .Optional [float ],
156- base_headers : typing .Dict [str , str ],
157- base_url : typing .Optional [str ] = None ,
155+ base_timeout : typing .Callable [[], typing . Optional [float ] ],
156+ base_headers : typing .Callable [[], typing . Dict [str , str ] ],
157+ base_url : typing .Optional [typing . Callable [[], str ] ] = None ,
158158 ):
159159 self .base_url = base_url
160160 self .base_timeout = base_timeout
161161 self .base_headers = base_headers
162162 self .httpx_client = httpx_client
163163
164164 def get_base_url (self , maybe_base_url : typing .Optional [str ]) -> str :
165- base_url = self .base_url if maybe_base_url is None else maybe_base_url
165+ base_url = maybe_base_url
166+ if self .base_url is not None and base_url is None :
167+ base_url = self .base_url ()
168+
166169 if base_url is None :
167170 raise ValueError ("A base_url is required to make this request, please provide one and try again." )
168171 return base_url
@@ -187,7 +190,7 @@ def request(
187190 timeout = (
188191 request_options .get ("timeout_in_seconds" )
189192 if request_options is not None and request_options .get ("timeout_in_seconds" ) is not None
190- else self .base_timeout
193+ else self .base_timeout ()
191194 )
192195
193196 json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -198,7 +201,7 @@ def request(
198201 headers = jsonable_encoder (
199202 remove_none_from_dict (
200203 {
201- ** self .base_headers ,
204+ ** self .base_headers () ,
202205 ** (headers if headers is not None else {}),
203206 ** (request_options .get ("additional_headers" , {}) or {} if request_options is not None else {}),
204207 }
@@ -271,7 +274,7 @@ def stream(
271274 timeout = (
272275 request_options .get ("timeout_in_seconds" )
273276 if request_options is not None and request_options .get ("timeout_in_seconds" ) is not None
274- else self .base_timeout
277+ else self .base_timeout ()
275278 )
276279
277280 json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -282,7 +285,7 @@ def stream(
282285 headers = jsonable_encoder (
283286 remove_none_from_dict (
284287 {
285- ** self .base_headers ,
288+ ** self .base_headers () ,
286289 ** (headers if headers is not None else {}),
287290 ** (request_options .get ("additional_headers" , {}) if request_options is not None else {}),
288291 }
@@ -321,17 +324,20 @@ def __init__(
321324 self ,
322325 * ,
323326 httpx_client : httpx .AsyncClient ,
324- base_timeout : typing .Optional [float ],
325- base_headers : typing .Dict [str , str ],
326- base_url : typing .Optional [str ] = None ,
327+ base_timeout : typing .Callable [[], typing . Optional [float ] ],
328+ base_headers : typing .Callable [[], typing . Dict [str , str ] ],
329+ base_url : typing .Optional [typing . Callable [[], str ] ] = None ,
327330 ):
328331 self .base_url = base_url
329332 self .base_timeout = base_timeout
330333 self .base_headers = base_headers
331334 self .httpx_client = httpx_client
332335
333336 def get_base_url (self , maybe_base_url : typing .Optional [str ]) -> str :
334- base_url = self .base_url if maybe_base_url is None else maybe_base_url
337+ base_url = maybe_base_url
338+ if self .base_url is not None and base_url is None :
339+ base_url = self .base_url ()
340+
335341 if base_url is None :
336342 raise ValueError ("A base_url is required to make this request, please provide one and try again." )
337343 return base_url
@@ -356,7 +362,7 @@ async def request(
356362 timeout = (
357363 request_options .get ("timeout_in_seconds" )
358364 if request_options is not None and request_options .get ("timeout_in_seconds" ) is not None
359- else self .base_timeout
365+ else self .base_timeout ()
360366 )
361367
362368 json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -368,7 +374,7 @@ async def request(
368374 headers = jsonable_encoder (
369375 remove_none_from_dict (
370376 {
371- ** self .base_headers ,
377+ ** self .base_headers () ,
372378 ** (headers if headers is not None else {}),
373379 ** (request_options .get ("additional_headers" , {}) or {} if request_options is not None else {}),
374380 }
@@ -438,7 +444,7 @@ async def stream(
438444 timeout = (
439445 request_options .get ("timeout_in_seconds" )
440446 if request_options is not None and request_options .get ("timeout_in_seconds" ) is not None
441- else self .base_timeout
447+ else self .base_timeout ()
442448 )
443449
444450 json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -449,7 +455,7 @@ async def stream(
449455 headers = jsonable_encoder (
450456 remove_none_from_dict (
451457 {
452- ** self .base_headers ,
458+ ** self .base_headers () ,
453459 ** (headers if headers is not None else {}),
454460 ** (request_options .get ("additional_headers" , {}) if request_options is not None else {}),
455461 }
0 commit comments