@@ -152,17 +152,20 @@ def __init__(
152
152
self ,
153
153
* ,
154
154
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 ,
158
158
):
159
159
self .base_url = base_url
160
160
self .base_timeout = base_timeout
161
161
self .base_headers = base_headers
162
162
self .httpx_client = httpx_client
163
163
164
164
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
+
166
169
if base_url is None :
167
170
raise ValueError ("A base_url is required to make this request, please provide one and try again." )
168
171
return base_url
@@ -187,7 +190,7 @@ def request(
187
190
timeout = (
188
191
request_options .get ("timeout_in_seconds" )
189
192
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 ()
191
194
)
192
195
193
196
json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -198,7 +201,7 @@ def request(
198
201
headers = jsonable_encoder (
199
202
remove_none_from_dict (
200
203
{
201
- ** self .base_headers ,
204
+ ** self .base_headers () ,
202
205
** (headers if headers is not None else {}),
203
206
** (request_options .get ("additional_headers" , {}) or {} if request_options is not None else {}),
204
207
}
@@ -271,7 +274,7 @@ def stream(
271
274
timeout = (
272
275
request_options .get ("timeout_in_seconds" )
273
276
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 ()
275
278
)
276
279
277
280
json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -282,7 +285,7 @@ def stream(
282
285
headers = jsonable_encoder (
283
286
remove_none_from_dict (
284
287
{
285
- ** self .base_headers ,
288
+ ** self .base_headers () ,
286
289
** (headers if headers is not None else {}),
287
290
** (request_options .get ("additional_headers" , {}) if request_options is not None else {}),
288
291
}
@@ -321,17 +324,20 @@ def __init__(
321
324
self ,
322
325
* ,
323
326
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 ,
327
330
):
328
331
self .base_url = base_url
329
332
self .base_timeout = base_timeout
330
333
self .base_headers = base_headers
331
334
self .httpx_client = httpx_client
332
335
333
336
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
+
335
341
if base_url is None :
336
342
raise ValueError ("A base_url is required to make this request, please provide one and try again." )
337
343
return base_url
@@ -356,7 +362,7 @@ async def request(
356
362
timeout = (
357
363
request_options .get ("timeout_in_seconds" )
358
364
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 ()
360
366
)
361
367
362
368
json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -368,7 +374,7 @@ async def request(
368
374
headers = jsonable_encoder (
369
375
remove_none_from_dict (
370
376
{
371
- ** self .base_headers ,
377
+ ** self .base_headers () ,
372
378
** (headers if headers is not None else {}),
373
379
** (request_options .get ("additional_headers" , {}) or {} if request_options is not None else {}),
374
380
}
@@ -438,7 +444,7 @@ async def stream(
438
444
timeout = (
439
445
request_options .get ("timeout_in_seconds" )
440
446
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 ()
442
448
)
443
449
444
450
json_body , data_body = get_request_body (json = json , data = data , request_options = request_options , omit = omit )
@@ -449,7 +455,7 @@ async def stream(
449
455
headers = jsonable_encoder (
450
456
remove_none_from_dict (
451
457
{
452
- ** self .base_headers ,
458
+ ** self .base_headers () ,
453
459
** (headers if headers is not None else {}),
454
460
** (request_options .get ("additional_headers" , {}) if request_options is not None else {}),
455
461
}
0 commit comments