From d559d5d27834561b02cb99c1c0c0b1f2d8fccd7e Mon Sep 17 00:00:00 2001 From: dni Date: Tue, 23 Jun 2026 06:15:32 +0200 Subject: [PATCH] fix pyright --- lnbits/core/views/blockexplorer_api.py | 2 +- lnbits/utils/electrum.py | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/lnbits/core/views/blockexplorer_api.py b/lnbits/core/views/blockexplorer_api.py index 09c02dc6a..6f1040d40 100644 --- a/lnbits/core/views/blockexplorer_api.py +++ b/lnbits/core/views/blockexplorer_api.py @@ -70,7 +70,7 @@ async def api_tx(txid: str) -> Transaction: _check_enabled() try: async with _client() as c: - raw_hex = await c.get_transaction(txid, verbose=False) + raw_hex = await c.get_transaction(txid) return parse_raw_tx(raw_hex) except ElectrumError as e: raise HTTPException(HTTPStatus.SERVICE_UNAVAILABLE, detail=str(e)) from e diff --git a/lnbits/utils/electrum.py b/lnbits/utils/electrum.py index 06d41a8e9..eb9686046 100644 --- a/lnbits/utils/electrum.py +++ b/lnbits/utils/electrum.py @@ -19,7 +19,7 @@ from urllib.parse import urlparse from bech32 import bech32_decode, convertbits from bech32 import encode as bech32_segwit_encode from loguru import logger -from pydantic import BaseModel, Field +from pydantic import BaseModel class ElectrumError(Exception): @@ -59,7 +59,10 @@ def address_to_scriptpubkey(address: str) -> bytes: if data is None: raise ValueError(f"Invalid bech32 address: {address!r}") witness_version = data[0] - witness_prog = bytes(convertbits(data[1:], 5, 8, False)) + bits = convertbits(data[1:], 5, 8, False) + if bits is None: + raise ValueError(f"Invalid bech32 witness program in address: {address!r}") + witness_prog = bytes(bits) ver_op = 0x00 if witness_version == 0 else (0x50 + witness_version) return bytes([ver_op, len(witness_prog)]) + witness_prog else: @@ -215,21 +218,15 @@ class ScriptPubKey(BaseModel): class TxInput(BaseModel): txid: str | None = None vout: int | None = None - script_sig: ScriptSig | None = Field(None, alias="scriptSig") + scriptSig: ScriptSig | None = None # noqa: N815 sequence: int coinbase: str | None = None - class Config: - allow_population_by_field_name = True - class TxOutput(BaseModel): value: float n: int - script_pub_key: ScriptPubKey = Field(alias="scriptPubKey") - - class Config: - allow_population_by_field_name = True + scriptPubKey: ScriptPubKey # noqa: N815 class Transaction(BaseModel): @@ -626,10 +623,9 @@ class ElectrumClient: """Broadcast a raw transaction hex; returns txid on success.""" return await self._call("blockchain.transaction.broadcast", [raw_tx]) - async def get_transaction( - self, txid: str, verbose: bool = False - ) -> str | dict[str, Any]: - return await self._call("blockchain.transaction.get", [txid, verbose]) + async def get_transaction(self, txid: str) -> str: + """Fetch raw transaction hex by txid.""" + return await self._call("blockchain.transaction.get", [txid]) async def get_merkle(self, txid: str, height: int) -> MerkleProof: data = await self._call("blockchain.transaction.get_merkle", [txid, height])