fix: defer discord adapter annotations

Prevent gateway.platforms.discord from crashing at import time when discord.py is unavailable. Python 3.11 eagerly evaluates annotations, so using discord.Interaction and similar annotations caused an AttributeError after the optional import fallback set discord=None. Add postponed annotation evaluation and a regression test covering import without discord installed.
This commit is contained in:
teknium1
2026-03-14 09:32:05 -07:00
parent d1a1a09a70
commit 8f3d7dfcc0
2 changed files with 25 additions and 0 deletions

View File

@@ -1,3 +1,5 @@
from __future__ import annotations
"""
Discord platform adapter.

View File

@@ -0,0 +1,23 @@
"""Import-safety tests for the Discord gateway adapter."""
import builtins
import importlib
import sys
class TestDiscordImportSafety:
def test_module_imports_even_when_discord_dependency_is_missing(self, monkeypatch):
original_import = builtins.__import__
def fake_import(name, globals=None, locals=None, fromlist=(), level=0):
if name == "discord" or name.startswith("discord."):
raise ImportError("discord unavailable for test")
return original_import(name, globals, locals, fromlist, level)
monkeypatch.delitem(sys.modules, "gateway.platforms.discord", raising=False)
monkeypatch.setattr(builtins, "__import__", fake_import)
module = importlib.import_module("gateway.platforms.discord")
assert module.DISCORD_AVAILABLE is False
assert module.discord is None