From 5ecdd635b9988ae0c1d1d2967978648bf41bbf8d Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Mon, 20 Apr 2026 14:34:00 +0200 Subject: [PATCH] [channels] Compatibility fixes for django-stubs 6.0.3 (#15653) --- stubs/channels/METADATA.toml | 2 +- stubs/channels/channels/auth.pyi | 4 +++- stubs/channels/channels/consumer.pyi | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/stubs/channels/METADATA.toml b/stubs/channels/METADATA.toml index cc2d2a599..1eed45be8 100644 --- a/stubs/channels/METADATA.toml +++ b/stubs/channels/METADATA.toml @@ -1,6 +1,6 @@ version = "4.3.*" upstream-repository = "https://github.com/django/channels" -dependencies = ["django-stubs>=4.2", "asgiref"] +dependencies = ["django-stubs>=6.0.3", "asgiref"] [tool.stubtest] mypy-plugins = ['mypy_django_plugin.main'] diff --git a/stubs/channels/channels/auth.pyi b/stubs/channels/channels/auth.pyi index b8594667e..8c2361d3b 100644 --- a/stubs/channels/channels/auth.pyi +++ b/stubs/channels/channels/auth.pyi @@ -1,3 +1,5 @@ +from _typeshed import Incomplete + from asgiref.typing import ASGIReceiveCallable, ASGISendCallable from channels.middleware import BaseMiddleware from django.contrib.auth.backends import BaseBackend @@ -14,7 +16,7 @@ async def logout(scope: _ChannelScope) -> None: ... # Inherits AbstractBaseUser to improve autocomplete and show this is a lazy proxy for a user. # At runtime, it's just a LazyObject that wraps the actual user instance. -class UserLazyObject(AbstractBaseUser, LazyObject): ... +class UserLazyObject(AbstractBaseUser, LazyObject[Incomplete]): ... class AuthMiddleware(BaseMiddleware): def populate_scope(self, scope: _ChannelScope) -> None: ... diff --git a/stubs/channels/channels/consumer.pyi b/stubs/channels/channels/consumer.pyi index d48e679c9..0a00a97fe 100644 --- a/stubs/channels/channels/consumer.pyi +++ b/stubs/channels/channels/consumer.pyi @@ -1,3 +1,4 @@ +from _typeshed import Incomplete from collections.abc import Awaitable from typing import Any, ClassVar, Protocol, TypedDict, type_check_only @@ -11,7 +12,7 @@ from django.utils.functional import LazyObject # We subclass both for type checking purposes to expose SessionBase attributes, # and suppress mypy's "misc" error with `# type: ignore[misc]`. @type_check_only -class _LazySession(SessionBase, LazyObject): # type: ignore[misc] +class _LazySession(SessionBase, LazyObject[Incomplete]): # type: ignore[misc] _wrapped: SessionBase @type_check_only