Bump httpx to 0.17.1 (#48388)

* Bump httpx to 0.17.1

* git add

* typing

* add test

* tweak
This commit is contained in:
J. Nick Koston 2021-03-26 22:02:01 -10:00 committed by GitHub
parent b50dcef94f
commit 79af18a8ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 4 deletions

View file

@ -39,6 +39,17 @@ def get_async_client(
return client
class HassHttpXAsyncClient(httpx.AsyncClient):
"""httpx AsyncClient that suppresses context management."""
async def __aenter__(self: HassHttpXAsyncClient) -> HassHttpXAsyncClient:
"""Prevent an integration from reopen of the client via context manager."""
return self
async def __aexit__(self, *args: Any) -> None: # pylint: disable=signature-differs
"""Prevent an integration from close of the client via context manager."""
@callback
def create_async_httpx_client(
hass: HomeAssistantType,
@ -53,7 +64,7 @@ def create_async_httpx_client(
This method must be run in the event loop.
"""
client = httpx.AsyncClient(
client = HassHttpXAsyncClient(
verify=verify_ssl,
headers={USER_AGENT: SERVER_SOFTWARE},
**kwargs,

View file

@ -16,7 +16,7 @@ distro==1.5.0
emoji==1.2.0
hass-nabucasa==0.42.0
home-assistant-frontend==20210324.0
httpx==0.16.1
httpx==0.17.1
jinja2>=2.11.3
netdisco==2.8.2
paho-mqtt==1.5.1

View file

@ -9,7 +9,7 @@ awesomeversion==21.2.3
bcrypt==3.1.7
certifi>=2020.12.5
ciso8601==2.1.3
httpx==0.16.1
httpx==0.17.1
jinja2>=2.11.3
PyJWT==1.7.1
cryptography==3.3.2

View file

@ -40,7 +40,7 @@ REQUIRES = [
"bcrypt==3.1.7",
"certifi>=2020.12.5",
"ciso8601==2.1.3",
"httpx==0.16.1",
"httpx==0.17.1",
"jinja2>=2.11.3",
"PyJWT==1.7.1",
# PyJWT has loose dependency. We want the latest one.

View file

@ -80,6 +80,19 @@ async def test_get_async_client_patched_close(hass):
assert mock_aclose.call_count == 0
async def test_get_async_client_context_manager(hass):
"""Test using the async client with a context manager does not close the session."""
with patch("httpx.AsyncClient.aclose") as mock_aclose:
httpx_session = client.get_async_client(hass)
assert isinstance(hass.data[client.DATA_ASYNC_CLIENT], httpx.AsyncClient)
async with httpx_session:
pass
assert mock_aclose.call_count == 0
async def test_warning_close_session_integration(hass, caplog):
"""Test log warning message when closing the session from integration context."""
with patch(