From c042fe3a74fb213c93b1052f7de4d99a6e6948e0 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 9 Aug 2024 12:48:32 -0400 Subject: [PATCH] Refs #33735 -- Adjusted warning stacklevel in StreamingHttpResponse.__iter__()/__aiter__(). --- django/http/response.py | 2 ++ tests/handlers/tests.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/django/http/response.py b/django/http/response.py index 0d756403db..abe71718f2 100644 --- a/django/http/response.py +++ b/django/http/response.py @@ -498,6 +498,7 @@ class StreamingHttpResponse(HttpResponseBase): "StreamingHttpResponse must consume asynchronous iterators in order to " "serve them synchronously. Use a synchronous iterator instead.", Warning, + stacklevel=2, ) # async iterator. Consume in async_to_sync and map back. @@ -518,6 +519,7 @@ class StreamingHttpResponse(HttpResponseBase): "StreamingHttpResponse must consume synchronous iterators in order to " "serve them asynchronously. Use an asynchronous iterator instead.", Warning, + stacklevel=2, ) # sync iterator. Consume via sync_to_async and yield via async # generator. diff --git a/tests/handlers/tests.py b/tests/handlers/tests.py index ffa362abdd..e73fc15195 100644 --- a/tests/handlers/tests.py +++ b/tests/handlers/tests.py @@ -258,8 +258,9 @@ class HandlerRequestTests(SimpleTestCase): "StreamingHttpResponse must consume asynchronous iterators in order to " "serve them synchronously. Use a synchronous iterator instead." ) - with self.assertWarnsMessage(Warning, msg): + with self.assertWarnsMessage(Warning, msg) as ctx: self.assertEqual(b"".join(list(response)), b"streaming content") + self.assertEqual(ctx.filename, __file__) class ScriptNameTests(SimpleTestCase): @@ -350,10 +351,11 @@ class AsyncHandlerRequestTests(SimpleTestCase): "StreamingHttpResponse must consume synchronous iterators in order to " "serve them asynchronously. Use an asynchronous iterator instead." ) - with self.assertWarnsMessage(Warning, msg): + with self.assertWarnsMessage(Warning, msg) as ctx: self.assertEqual( b"".join([chunk async for chunk in response]), b"streaming content" ) + self.assertEqual(ctx.filename, __file__) async def test_async_streaming(self): response = await self.async_client.get("/async_streaming/")