chore: update python packages + formatting + cleanup (#3221)

This commit is contained in:
dni ⚡
2025-07-08 10:17:27 +02:00
parent c4c03d96a3
commit a16078a6ba
53 changed files with 1159 additions and 576 deletions
+5 -5
View File
@@ -58,17 +58,17 @@ __all__ = [
"BlinkWallet",
"BoltzWallet",
"BreezSdkWallet",
"ClicheWallet",
"CoreLightningWallet",
"CLightningWallet",
"ClicheWallet",
"CoreLightningRestWallet",
"CoreLightningWallet",
"EclairWallet",
"FakeWallet",
"LNbitsWallet",
"LndWallet",
"LndRestWallet",
"LNPayWallet",
"LNbitsWallet",
"LnTipsWallet",
"LndRestWallet",
"LndWallet",
"NWCWallet",
"OpenNodeWallet",
"PhoenixdWallet",
+2 -1
View File
@@ -1,7 +1,8 @@
import asyncio
import hashlib
import json
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
+2 -1
View File
@@ -2,7 +2,8 @@ from __future__ import annotations
import asyncio
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, AsyncGenerator, Coroutine, NamedTuple
from collections.abc import AsyncGenerator, Coroutine
from typing import TYPE_CHECKING, NamedTuple
from loguru import logger
+3 -2
View File
@@ -1,12 +1,13 @@
import asyncio
import hashlib
import json
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
from pydantic import BaseModel
from websockets.client import WebSocketClientProtocol, connect
from websockets.legacy.client import WebSocketClientProtocol, connect
from websockets.typing import Subprotocol
from lnbits import bolt11
+2 -1
View File
@@ -1,5 +1,6 @@
import asyncio
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
from bolt11.decode import decode
from grpc.aio import AioRpcError
+2 -1
View File
@@ -20,8 +20,9 @@ if not BREEZ_SDK_INSTALLED:
else:
import asyncio
from collections.abc import AsyncGenerator
from pathlib import Path
from typing import AsyncGenerator, Optional
from typing import Optional
from loguru import logger
+2 -1
View File
@@ -1,7 +1,8 @@
import asyncio
import hashlib
import json
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
from loguru import logger
from websocket import create_connection
+1 -1
View File
@@ -9,7 +9,7 @@ from typing import Any, Optional
import httpx
from loguru import logger
from websockets.client import connect
from websockets.legacy.client import connect
from lnbits.helpers import normalize_endpoint
from lnbits.settings import settings
+2 -1
View File
@@ -1,8 +1,9 @@
import asyncio
from collections.abc import AsyncGenerator
from datetime import datetime
from hashlib import sha256
from os import urandom
from typing import AsyncGenerator, Optional
from typing import Optional
from bolt11 import (
Bolt11,
+4 -3
View File
@@ -1,10 +1,11 @@
import asyncio
import json
from typing import AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
from websockets.client import connect
from websockets.legacy.client import connect
from lnbits.helpers import normalize_endpoint
from lnbits.settings import settings
@@ -75,7 +76,7 @@ class LNbitsWallet(Wallet):
unhashed_description: Optional[bytes] = None,
**kwargs,
) -> InvoiceResponse:
data: Dict = {"out": False, "amount": amount, "memo": memo or ""}
data: dict = {"out": False, "amount": amount, "memo": memo or ""}
if kwargs.get("expiry"):
data["expiry"] = kwargs["expiry"]
if description_hash:
+3 -2
View File
@@ -1,8 +1,9 @@
import asyncio
import base64
from collections.abc import AsyncGenerator
from hashlib import sha256
from os import environ
from typing import AsyncGenerator, Dict, Optional
from typing import Optional
import grpc
from loguru import logger
@@ -121,7 +122,7 @@ class LndWallet(Wallet):
unhashed_description: Optional[bytes] = None,
**kwargs,
) -> InvoiceResponse:
data: Dict = {
data: dict = {
"description_hash": b"",
"value": amount,
"private": True,
+3 -2
View File
@@ -2,7 +2,8 @@ import asyncio
import base64
import hashlib
import json
from typing import Any, AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Any, Optional
import httpx
from loguru import logger
@@ -105,7 +106,7 @@ class LndRestWallet(Wallet):
unhashed_description: Optional[bytes] = None,
**kwargs,
) -> InvoiceResponse:
_data: Dict = {
_data: dict = {
"value": amount,
"private": settings.lnd_rest_route_hints,
"memo": memo or "",
+3 -2
View File
@@ -1,6 +1,7 @@
import asyncio
import hashlib
from typing import AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
@@ -79,7 +80,7 @@ class LNPayWallet(Wallet):
unhashed_description: Optional[bytes] = None,
**_,
) -> InvoiceResponse:
data: Dict = {"num_satoshis": f"{amount}"}
data: dict = {"num_satoshis": f"{amount}"}
if description_hash:
data["description_hash"] = description_hash.hex()
elif unhashed_description:
+3 -2
View File
@@ -2,7 +2,8 @@ import asyncio
import hashlib
import json
import time
from typing import AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
@@ -73,7 +74,7 @@ class LnTipsWallet(Wallet):
unhashed_description: Optional[bytes] = None,
**_,
) -> InvoiceResponse:
data: Dict = {"amount": amount, "description_hash": "", "memo": memo or ""}
data: dict = {"amount": amount, "description_hash": "", "memo": memo or ""}
if description_hash:
data["description_hash"] = description_hash.hex()
elif unhashed_description:
+13 -12
View File
@@ -3,13 +3,14 @@ import hashlib
import json
import random
import time
from typing import AsyncGenerator, Dict, List, Optional, Union, cast
from collections.abc import AsyncGenerator
from typing import Optional, Union, cast
from urllib.parse import parse_qs, unquote, urlparse
import secp256k1
from bolt11 import decode as bolt11_decode
from loguru import logger
from websockets.client import connect as ws_connect
from websockets.legacy.client import connect as ws_connect
from lnbits.settings import settings
from lnbits.utils.nostr import (
@@ -358,7 +359,7 @@ class NWCConnection:
"""
return self.shutdown or not settings.lnbits_running
async def _send(self, data: List[Union[str, Dict]]):
async def _send(self, data: list[Union[str, dict]]):
"""
Sends data to the NWC relay.
@@ -394,7 +395,7 @@ class NWCConnection:
async def _close_subscription_by_subid(
self, sub_id: str, send_event: bool = True
) -> Optional[Dict]:
) -> Optional[dict]:
"""
Closes a subscription by its sub_id.
@@ -425,7 +426,7 @@ class NWCConnection:
async def _close_subscription_by_eventid(
self, event_id, send_event=True
) -> Optional[Dict]:
) -> Optional[dict]:
"""
Closes a subscription associated to an event_id.
@@ -498,7 +499,7 @@ class NWCConnection:
except Exception as e:
logger.error("Error handling subscription timeout: " + str(e))
async def _on_ok_message(self, msg: List[str]):
async def _on_ok_message(self, msg: list[str]):
"""
Handles OK messages from the relay.
"""
@@ -512,12 +513,12 @@ class NWCConnection:
if subscription: # Check if the subscription exists first
subscription["future"].set_exception(Exception(info))
async def _on_event_message(self, msg: List[Union[str, Dict]]):
async def _on_event_message(self, msg: list[Union[str, dict]]):
"""
Handles EVENT messages from the relay.
"""
sub_id = cast(str, msg[1])
event = cast(Dict, msg[2])
event = cast(dict, msg[2])
if not verify_event(event): # Ensure the event is valid (do not trust relays)
raise Exception("Invalid event signature")
tags = event["tags"]
@@ -571,7 +572,7 @@ class NWCConnection:
else:
subscription["future"].set_result(result)
async def _on_closed_message(self, msg: List[str]):
async def _on_closed_message(self, msg: list[str]):
"""
Handles CLOSED messages from the relay.
"""
@@ -646,7 +647,7 @@ class NWCConnection:
logger.debug("Reconnecting to NWC relay in 5 seconds...")
await asyncio.sleep(5)
async def call(self, method: str, params: Dict) -> Dict:
async def call(self, method: str, params: dict) -> dict:
"""
Call a NWC method.
@@ -708,7 +709,7 @@ class NWCConnection:
# Wait for the response
return await future
async def get_info(self) -> Dict:
async def get_info(self) -> dict:
"""
Get the info about the service provider and cache it.
@@ -793,7 +794,7 @@ class NWCConnection:
logger.warning("Error closing connection: " + str(e))
def parse_nwc(nwc) -> Dict:
def parse_nwc(nwc) -> dict:
"""
Parses a NWC URL (nostr+walletconnect://...) and extracts relevant information.
+2 -1
View File
@@ -1,5 +1,6 @@
import asyncio
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
+4 -3
View File
@@ -3,11 +3,12 @@ import base64
import hashlib
import json
import urllib.parse
from typing import Any, AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Any, Optional
import httpx
from loguru import logger
from websockets.client import connect
from websockets.legacy.client import connect
from lnbits.helpers import normalize_endpoint
from lnbits.settings import settings
@@ -101,7 +102,7 @@ class PhoenixdWallet(Wallet):
try:
msats_amount = amount
data: Dict[str, Any] = {
data: dict[str, Any] = {
"amountSat": f"{msats_amount}",
"externalId": "",
}
+2 -1
View File
@@ -2,7 +2,8 @@ import asyncio
import hashlib
import json
import random
from typing import AsyncGenerator, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from loguru import logger
+11 -10
View File
@@ -1,7 +1,8 @@
import asyncio
import time
from collections.abc import AsyncGenerator
from decimal import Decimal
from typing import Any, AsyncGenerator, Dict, Optional
from typing import Any, Optional
import httpx
from loguru import logger
@@ -111,8 +112,8 @@ class StrikeWallet(Wallet):
# runtime state
self.pending_invoices: list[str] = [] # Keep it as a list
self.pending_payments: Dict[str, str] = {}
self.failed_payments: Dict[str, str] = {}
self.pending_payments: dict[str, str] = {}
self.failed_payments: dict[str, str] = {}
# balance cache
self._cached_balance: Optional[int] = None
@@ -183,7 +184,7 @@ class StrikeWallet(Wallet):
if btc and "available" in btc:
available_btc = Decimal(btc["available"]) # Get available BTC amount.
msats = int(
available_btc * Decimal(1e11)
available_btc * Decimal("1e11")
) # Convert BTC to millisatoshis.
self._cached_balance = msats
self._cached_balance_ts = now
@@ -204,10 +205,10 @@ class StrikeWallet(Wallet):
**kwargs,
) -> InvoiceResponse:
try:
btc_amt = (Decimal(amount) / Decimal(1e8)).quantize(
btc_amt = (Decimal(amount) / Decimal("1e8")).quantize(
Decimal("0.00000001")
) # Convert amount from millisatoshis to BTC.
payload: Dict[str, Any] = {
payload: dict[str, Any] = {
"bolt11": {
"amount": {
"currency": "BTC",
@@ -270,7 +271,7 @@ class StrikeWallet(Wallet):
# Network fee → msat.
fee_obj = data.get("lightningNetworkFee") or data.get("totalFee") or {}
fee_btc = Decimal(fee_obj.get("amount", "0"))
fee_msat = int(fee_btc * Decimal(1e11)) # millisatoshis.
fee_msat = int(fee_btc * Decimal("1e11")) # millisatoshis.
if state in {"SUCCEEDED", "COMPLETED"}:
preimage = data.get("preimage") or data.get("preImage")
@@ -427,9 +428,9 @@ class StrikeWallet(Wallet):
orderby: Optional[str] = None,
skip: Optional[int] = None,
top: Optional[int] = None,
) -> Dict[str, Any]:
) -> dict[str, Any]:
try:
params: Dict[str, Any] = {}
params: dict[str, Any] = {}
if filters:
params["$filter"] = filters
if orderby:
@@ -465,7 +466,7 @@ class StrikeWallet(Wallet):
try:
if currency_str == "BTC":
fee_btc_decimal = Decimal(amount_str)
fee_msat = int(fee_btc_decimal * Decimal(1e11))
fee_msat = int(fee_btc_decimal * Decimal("1e11"))
elif currency_str == "SAT":
fee_sat_decimal = Decimal(amount_str)
fee_msat = int(fee_sat_decimal * 1000)
+1 -1
View File
@@ -1,4 +1,4 @@
from typing import AsyncGenerator
from collections.abc import AsyncGenerator
from loguru import logger
+3 -2
View File
@@ -1,6 +1,7 @@
import asyncio
import hashlib
from typing import AsyncGenerator, Dict, Optional
from collections.abc import AsyncGenerator
from typing import Optional
import httpx
from bolt11 import decode as bolt11_decode
@@ -67,7 +68,7 @@ class ZBDWallet(Wallet):
# https://api.zebedee.io/v0/charges
msats_amount = amount * 1000
data: Dict = {
data: dict = {
"amount": f"{msats_amount}",
"expiresIn": 3600,
"callbackUrl": "",