### Added
* Add `socket_options` argument to `httpx.HTTPTransport` and `httpx.AsyncHTTPTransport` classes. (#2716)
+* The `Response.raise_for_status()` method now returns the response instance. For example: `data = httpx.get('...').raise_for_status().json()`. (#2776)
### Fixed
* The amount of time elapsed between sending the request and calling `close()` on the corresponding response received for that request.
[total_seconds()](https://docs.python.org/3/library/datetime.html#datetime.timedelta.total_seconds) to correctly get
the total elapsed seconds.
-* `def .raise_for_status()` - **None**
+* `def .raise_for_status()` - **Response**
* `def .json()` - **Any**
* `def .read()` - **bytes**
* `def .iter_raw([chunk_size])` - **bytes iterator**
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
```
-Any successful response codes will simply return `None` rather than raising an exception.
+Any successful response codes will return the `Response` instance rather than raising an exception.
```pycon
>>> r.raise_for_status()
```
+The method returns the response instance, allowing you to use it inline. For example:
+
+```pycon
+>>> r = httpx.get('...').raise_for_status()
+>>> data = httpx.get('...').raise_for_status().json()
+```
+
## Response Headers
The response headers are available as a dictionary-like interface.
and "Location" in self.headers
)
- def raise_for_status(self) -> None:
+ def raise_for_status(self) -> "Response":
"""
Raise the `HTTPStatusError` if one occurred.
"""
)
if self.is_success:
- return
+ return self
if self.has_redirect_location:
message = (
response.raise_for_status()
assert exc_info.value.response == response
else:
- assert response.raise_for_status() is None # type: ignore
+ assert response.raise_for_status() is response
@pytest.mark.anyio
assert exc_info.value.response == response
assert exc_info.value.request.url.path == f"/status/{status_code}"
else:
- assert response.raise_for_status() is None # type: ignore
+ assert response.raise_for_status() is response
def test_options(server):