Build and return a request instance. * The `params`, `headers` and `cookies` arguments are merged with any values set on the client. * The `url` argument is merged with any `base_url` set on the client. See also: [Request instances][0] [0]: /advanc
(
self,
method: str,
url: URL | str,
*,
content: RequestContent | None = None,
data: RequestData | None = None,
files: RequestFiles | None = None,
json: typing.Any | None = None,
params: QueryParamTypes | None = None,
headers: HeaderTypes | None = None,
cookies: CookieTypes | None = None,
timeout: TimeoutTypes | UseClientDefault = USE_CLIENT_DEFAULT,
extensions: RequestExtensions | None = None,
)
| 338 | self._params = QueryParams(params) |
| 339 | |
| 340 | def build_request( |
| 341 | self, |
| 342 | method: str, |
| 343 | url: URL | str, |
| 344 | *, |
| 345 | content: RequestContent | None = None, |
| 346 | data: RequestData | None = None, |
| 347 | files: RequestFiles | None = None, |
| 348 | json: typing.Any | None = None, |
| 349 | params: QueryParamTypes | None = None, |
| 350 | headers: HeaderTypes | None = None, |
| 351 | cookies: CookieTypes | None = None, |
| 352 | timeout: TimeoutTypes | UseClientDefault = USE_CLIENT_DEFAULT, |
| 353 | extensions: RequestExtensions | None = None, |
| 354 | ) -> Request: |
| 355 | """ |
| 356 | Build and return a request instance. |
| 357 | |
| 358 | * The `params`, `headers` and `cookies` arguments |
| 359 | are merged with any values set on the client. |
| 360 | * The `url` argument is merged with any `base_url` set on the client. |
| 361 | |
| 362 | See also: [Request instances][0] |
| 363 | |
| 364 | [0]: /advanced/clients/#request-instances |
| 365 | """ |
| 366 | url = self._merge_url(url) |
| 367 | headers = self._merge_headers(headers) |
| 368 | cookies = self._merge_cookies(cookies) |
| 369 | params = self._merge_queryparams(params) |
| 370 | extensions = {} if extensions is None else extensions |
| 371 | if "timeout" not in extensions: |
| 372 | timeout = ( |
| 373 | self.timeout |
| 374 | if isinstance(timeout, UseClientDefault) |
| 375 | else Timeout(timeout) |
| 376 | ) |
| 377 | extensions = dict(**extensions, timeout=timeout.as_dict()) |
| 378 | return Request( |
| 379 | method, |
| 380 | url, |
| 381 | content=content, |
| 382 | data=data, |
| 383 | files=files, |
| 384 | json=json, |
| 385 | params=params, |
| 386 | headers=headers, |
| 387 | cookies=cookies, |
| 388 | extensions=extensions, |
| 389 | ) |
| 390 | |
| 391 | def _merge_url(self, url: URL | str) -> URL: |
| 392 | """ |