From 80b5328877b1570982aa5f29f16a99d894d545b9 Mon Sep 17 00:00:00 2001 From: Nikolaos-Digenis Karagiannis Date: Thu, 23 Jul 2026 15:39:34 +0300 Subject: [PATCH 1/2] chore(django): Drop Python < 3.5 compatibility --- sentry_sdk/integrations/django/asgi.py | 5 ++--- sentry_sdk/integrations/django/views.py | 14 +++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/sentry_sdk/integrations/django/asgi.py b/sentry_sdk/integrations/django/asgi.py index 785fa2af34..eed60e7af5 100644 --- a/sentry_sdk/integrations/django/asgi.py +++ b/sentry_sdk/integrations/django/asgi.py @@ -1,9 +1,8 @@ """ Instrumentation for Django 3.0 -Since this file contains `async def` it is conditionally imported in -`sentry_sdk.integrations.django` (depending on the existence of -`django.core.handlers.asgi`. +Since this file imports `django.core.handlers.asgi` (Django >= 3) +it is conditionally imported in `sentry_sdk.integrations.django`. """ import asyncio diff --git a/sentry_sdk/integrations/django/views.py b/sentry_sdk/integrations/django/views.py index b24e4df45b..001b3a8e5a 100644 --- a/sentry_sdk/integrations/django/views.py +++ b/sentry_sdk/integrations/django/views.py @@ -10,15 +10,12 @@ from typing import Any -try: - from asyncio import iscoroutinefunction -except ImportError: - iscoroutinefunction = None # type: ignore +from asyncio import iscoroutinefunction try: from sentry_sdk.integrations.django.asgi import wrap_async_view -except (ImportError, SyntaxError): +except ImportError: # Django < 3.0 wrap_async_view = None # type: ignore @@ -63,12 +60,7 @@ def sentry_patched_make_view_atomic( integration = sentry_sdk.get_client().get_integration(DjangoIntegration) if integration is not None: - is_async_view = ( - iscoroutinefunction is not None - and wrap_async_view is not None - and iscoroutinefunction(callback) - ) - if is_async_view: + if wrap_async_view is not None and iscoroutinefunction(callback): sentry_wrapped_callback = wrap_async_view(callback) else: sentry_wrapped_callback = _wrap_sync_view(callback) From 31662541d0bf92927fd763867104f45726cda21e Mon Sep 17 00:00:00 2001 From: Nikolaos-Digenis Karagiannis Date: Thu, 23 Jul 2026 16:10:45 +0300 Subject: [PATCH 2/2] fix(django): Use inspect.iscoroutinefunction on Python 3.14+ --- sentry_sdk/integrations/django/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sentry_sdk/integrations/django/views.py b/sentry_sdk/integrations/django/views.py index 001b3a8e5a..4027c5012e 100644 --- a/sentry_sdk/integrations/django/views.py +++ b/sentry_sdk/integrations/django/views.py @@ -1,4 +1,5 @@ import functools +import sys from typing import TYPE_CHECKING import sentry_sdk @@ -10,7 +11,10 @@ from typing import Any -from asyncio import iscoroutinefunction +if sys.version_info >= (3, 14): + from inspect import iscoroutinefunction +else: + from asyncio import iscoroutinefunction try: