(
self,
status_code: int,
*,
headers: HeaderTypes | None = None,
content: ResponseContent | None = None,
text: str | None = None,
html: str | None = None,
json: typing.Any = None,
stream: SyncByteStream | AsyncByteStream | None = None,
request: Request | None = None,
extensions: ResponseExtensions | None = None,
history: list[Response] | None = None,
default_encoding: str | typing.Callable[[bytes], str] = "utf-8",
)
| 514 | |
| 515 | class Response: |
| 516 | def __init__( |
| 517 | self, |
| 518 | status_code: int, |
| 519 | *, |
| 520 | headers: HeaderTypes | None = None, |
| 521 | content: ResponseContent | None = None, |
| 522 | text: str | None = None, |
| 523 | html: str | None = None, |
| 524 | json: typing.Any = None, |
| 525 | stream: SyncByteStream | AsyncByteStream | None = None, |
| 526 | request: Request | None = None, |
| 527 | extensions: ResponseExtensions | None = None, |
| 528 | history: list[Response] | None = None, |
| 529 | default_encoding: str | typing.Callable[[bytes], str] = class="st">"utf-8", |
| 530 | ) -> None: |
| 531 | self.status_code = status_code |
| 532 | self.headers = Headers(headers) |
| 533 | |
| 534 | self._request: Request | None = request |
| 535 | |
| 536 | class="cm"># When follow_redirects=False and a redirect is received, |
| 537 | class="cm"># the client will set `response.next_request`. |
| 538 | self.next_request: Request | None = None |
| 539 | |
| 540 | self.extensions = {} if extensions is None else dict(extensions) |
| 541 | self.history = [] if history is None else list(history) |
| 542 | |
| 543 | self.is_closed = False |
| 544 | self.is_stream_consumed = False |
| 545 | |
| 546 | self.default_encoding = default_encoding |
| 547 | |
| 548 | if stream is None: |
| 549 | headers, stream = encode_response(content, text, html, json) |
| 550 | self._prepare(headers) |
| 551 | self.stream = stream |
| 552 | if isinstance(stream, ByteStream): |
| 553 | class="cm"># Load the response body, except for streaming content. |
| 554 | self.read() |
| 555 | else: |
| 556 | class="cm"># There's an important distinction between `Response(content=...)`, |
| 557 | class="cm"># and `Response(stream=...)`. |
| 558 | class="cm"># |
| 559 | class="cm"># Using `content=...` implies automatically populated content headers, |
| 560 | class="cm"># of either `Content-Length: ...` or `Transfer-Encoding: chunked`. |
| 561 | class="cm"># |
| 562 | class="cm"># Using `stream=...` will not automatically include any content headers. |
| 563 | class="cm"># |
| 564 | class="cm"># As an end-user you donclass="st">'t really need `stream=...`. It's only |
| 565 | class="cm"># useful when creating response instances having received a stream |
| 566 | class="cm"># from the transport API. |
| 567 | self.stream = stream |
| 568 | |
| 569 | self._num_bytes_downloaded = 0 |
| 570 | |
| 571 | def _prepare(self, default_headers: dict[str, str]) -> None: |
| 572 | for key, value in default_headers.items(): |
nothing calls this directly
no test coverage detected