From 65864cb2165940f27924695b8a6dfe023718c7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Thu, 17 Jul 2025 14:02:29 +0200 Subject: [PATCH] chore: use modern websockets instead of legacy (#3278) --- lnbits/wallets/blink.py | 3 +-- lnbits/wallets/eclair.py | 6 ++++-- lnbits/wallets/lnbits.py | 2 +- lnbits/wallets/nwc.py | 2 +- lnbits/wallets/phoenixd.py | 6 ++++-- tests/wallets/test_nwc_wallets.py | 11 +++++++---- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/lnbits/wallets/blink.py b/lnbits/wallets/blink.py index 2d0fb476..ee1956cc 100644 --- a/lnbits/wallets/blink.py +++ b/lnbits/wallets/blink.py @@ -7,8 +7,7 @@ from typing import Optional import httpx from loguru import logger from pydantic import BaseModel -from websockets.legacy.client import connect -from websockets.typing import Subprotocol +from websockets import Subprotocol, connect from lnbits import bolt11 from lnbits.helpers import normalize_endpoint diff --git a/lnbits/wallets/eclair.py b/lnbits/wallets/eclair.py index 1f44713b..e4cd4f20 100644 --- a/lnbits/wallets/eclair.py +++ b/lnbits/wallets/eclair.py @@ -9,7 +9,7 @@ from typing import Any, Optional import httpx from loguru import logger -from websockets.legacy.client import connect +from websockets import connect from lnbits.helpers import normalize_endpoint from lnbits.settings import settings @@ -245,7 +245,9 @@ class EclairWallet(Wallet): try: async with connect( self.ws_url, - extra_headers=[("Authorization", self.headers["Authorization"])], + additional_headers=[ + ("Authorization", self.headers["Authorization"]) + ], ) as ws: while settings.lnbits_running: message = await ws.recv() diff --git a/lnbits/wallets/lnbits.py b/lnbits/wallets/lnbits.py index f54dee07..9cb6445a 100644 --- a/lnbits/wallets/lnbits.py +++ b/lnbits/wallets/lnbits.py @@ -5,7 +5,7 @@ from typing import Optional import httpx from loguru import logger -from websockets.legacy.client import connect +from websockets import connect from lnbits.helpers import normalize_endpoint from lnbits.settings import settings diff --git a/lnbits/wallets/nwc.py b/lnbits/wallets/nwc.py index 27a30a25..905dd726 100644 --- a/lnbits/wallets/nwc.py +++ b/lnbits/wallets/nwc.py @@ -10,7 +10,7 @@ from urllib.parse import parse_qs, unquote, urlparse import secp256k1 from bolt11 import decode as bolt11_decode from loguru import logger -from websockets.legacy.client import connect as ws_connect +from websockets import connect as ws_connect from lnbits.settings import settings from lnbits.utils.nostr import ( diff --git a/lnbits/wallets/phoenixd.py b/lnbits/wallets/phoenixd.py index 84e0d00b..9794f1f2 100644 --- a/lnbits/wallets/phoenixd.py +++ b/lnbits/wallets/phoenixd.py @@ -9,7 +9,7 @@ from typing import Any, Optional import httpx from httpx import RequestError, TimeoutException from loguru import logger -from websockets.legacy.client import connect +from websockets import connect from lnbits.helpers import normalize_endpoint from lnbits.settings import settings @@ -300,7 +300,9 @@ class PhoenixdWallet(Wallet): try: async with connect( self.ws_url, - extra_headers=[("Authorization", self.headers["Authorization"])], + additional_headers=[ + ("Authorization", self.headers["Authorization"]) + ], ) as ws: logger.info("connected to phoenixd invoices stream") while settings.lnbits_running: diff --git a/tests/wallets/test_nwc_wallets.py b/tests/wallets/test_nwc_wallets.py index ec59e7e8..cea4ce7f 100644 --- a/tests/wallets/test_nwc_wallets.py +++ b/tests/wallets/test_nwc_wallets.py @@ -9,7 +9,8 @@ import secp256k1 from Cryptodome import Random from Cryptodome.Cipher import AES from Cryptodome.Util.Padding import pad, unpad -from websockets.legacy.server import serve as ws_serve +from websockets import ServerConnection +from websockets import serve as ws_serve from lnbits.wallets.nwc import NWCWallet from tests.wallets.helpers import ( @@ -74,7 +75,9 @@ def sign_event(pub_key, priv_key, event): return event -async def handle(wallet, mock_settings, data, websocket, path): # noqa: C901 +async def handle( # noqa: C901 + wallet, mock_settings, data, websocket: ServerConnection +): async for message in websocket: if not wallet: continue @@ -162,8 +165,8 @@ async def run(data: WalletTest): if mock_settings is None: return - async def handler(websocket, path): - return await handle(wallet, mock_settings, data, websocket, path) + def handler(websocket): + return handle(wallet, mock_settings, data, websocket) if mock_settings is not None: async with ws_serve(handler, "localhost", mock_settings["port"]) as server: