Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions httpx/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -1273,13 +1273,6 @@ def __exit__(
if transport is not None:
transport.__exit__(exc_type, exc_value, traceback)

def __del__(self) -> None:
# We use 'getattr' here, to manage the case where '__del__()' is called
# on a partially initiallized instance that raised an exception during
# the call to '__init__()'.
if getattr(self, "_state", None) == ClientState.OPENED: # noqa: B009
self.close()


class AsyncClient(BaseClient):
"""
Expand Down Expand Up @@ -1983,34 +1976,3 @@ async def __aexit__(
for proxy in self._mounts.values():
if proxy is not None:
await proxy.__aexit__(exc_type, exc_value, traceback)

def __del__(self) -> None:
# We use 'getattr' here, to manage the case where '__del__()' is called
# on a partially initiallized instance that raised an exception during
# the call to '__init__()'.
if getattr(self, "_state", None) == ClientState.OPENED: # noqa: B009
# Unlike the sync case, we cannot silently close the client when
# it is garbage collected, because `.aclose()` is an async operation,
# but `__del__` is not.
#
# For this reason we require explicit close management for
# `AsyncClient`, and issue a warning on unclosed clients.
#
# The context managed style is usually preferable, because it neatly
# ensures proper resource cleanup:
#
# async with httpx.AsyncClient() as client:
# ...
#
# However, an explicit call to `aclose()` is also sufficient:
#
# client = httpx.AsyncClient()
# try:
# ...
# finally:
# await client.aclose()
warnings.warn(
f"Unclosed {self!r}. "
"See https://www.python-httpx.org/async/#opening-and-closing-clients "
"for details."
)
8 changes: 0 additions & 8 deletions tests/client/test_async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,14 +286,6 @@ async def test_client_closed_state_using_with_block():
await client.get("http://example.com")


@pytest.mark.usefixtures("async_environment")
async def test_deleting_unclosed_async_client_causes_warning():
client = httpx.AsyncClient(transport=httpx.MockTransport(hello_world))
await client.get("http://example.com")
with pytest.warns(UserWarning):
del client


def unmounted(request: httpx.Request) -> httpx.Response:
data = {"app": "unmounted"}
return httpx.Response(200, json=data)
Expand Down