diff --git a/lnbits/commands.py b/lnbits/commands.py
index 58899bb91..dd01160a0 100644
--- a/lnbits/commands.py
+++ b/lnbits/commands.py
@@ -4,7 +4,7 @@ import click
import importlib
import re
import os
-from sqlalchemy.exc import OperationalError # type: ignore
+from sqlalchemy.exc import OperationalError # type: ignore
from .core import db as core_db, migrations as core_migrations
from .helpers import get_valid_extensions, get_css_vendored, get_js_vendored, url_for_vendored
diff --git a/lnbits/core/migrations.py b/lnbits/core/migrations.py
index 8a37b652d..5ec0c0a57 100644
--- a/lnbits/core/migrations.py
+++ b/lnbits/core/migrations.py
@@ -1,4 +1,4 @@
-from sqlalchemy.exc import OperationalError # type: ignore
+from sqlalchemy.exc import OperationalError # type: ignore
async def m000_create_migrations_table(db):
diff --git a/lnbits/core/models.py b/lnbits/core/models.py
index 89ffc1c14..d26c0aba5 100644
--- a/lnbits/core/models.py
+++ b/lnbits/core/models.py
@@ -40,7 +40,11 @@ class Wallet(NamedTuple):
hashing_key = hashlib.sha256(self.id.encode("utf-8")).digest()
linking_key = hmac.digest(hashing_key, domain.encode("utf-8"), "sha256")
- return SigningKey.from_string(linking_key, curve=SECP256k1, hashfunc=hashlib.sha256,)
+ return SigningKey.from_string(
+ linking_key,
+ curve=SECP256k1,
+ hashfunc=hashlib.sha256,
+ )
async def get_payment(self, payment_hash: str) -> Optional["Payment"]:
from .crud import get_wallet_payment
diff --git a/lnbits/core/services.py b/lnbits/core/services.py
index 718fa9767..df93d6a5a 100644
--- a/lnbits/core/services.py
+++ b/lnbits/core/services.py
@@ -131,7 +131,10 @@ async def pay_invoice(
payment: PaymentResponse = WALLET.pay_invoice(payment_request)
if payment.ok and payment.checking_id:
await create_payment(
- checking_id=payment.checking_id, fee=payment.fee_msat, preimage=payment.preimage, **payment_kwargs,
+ checking_id=payment.checking_id,
+ fee=payment.fee_msat,
+ preimage=payment.preimage,
+ **payment_kwargs,
)
await delete_payment(temp_id)
else:
@@ -151,7 +154,8 @@ async def redeem_lnurl_withdraw(wallet_id: str, res: LnurlWithdrawResponse, memo
async with httpx.AsyncClient() as client:
await client.get(
- res.callback.base, params={**res.callback.query_params, **{"k1": res.k1, "pr": payment_request}},
+ res.callback.base,
+ params={**res.callback.query_params, **{"k1": res.k1, "pr": payment_request}},
)
@@ -208,7 +212,11 @@ async def perform_lnurlauth(callback: str) -> Optional[LnurlErrorResponse]:
async with httpx.AsyncClient() as client:
r = await client.get(
callback,
- params={"k1": k1.hex(), "key": key.verifying_key.to_string("compressed").hex(), "sig": sig.hex(),},
+ params={
+ "k1": k1.hex(),
+ "key": key.verifying_key.to_string("compressed").hex(),
+ "sig": sig.hex(),
+ },
)
try:
resp = json.loads(r.text)
@@ -217,7 +225,9 @@ async def perform_lnurlauth(callback: str) -> Optional[LnurlErrorResponse]:
return LnurlErrorResponse(reason=resp["reason"])
except (KeyError, json.decoder.JSONDecodeError):
- return LnurlErrorResponse(reason=r.text[:200] + "..." if len(r.text) > 200 else r.text,)
+ return LnurlErrorResponse(
+ reason=r.text[:200] + "..." if len(r.text) > 200 else r.text,
+ )
async def check_invoice_status(wallet_id: str, payment_hash: str) -> PaymentStatus:
diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py
index ca56c881d..4e69275d2 100644
--- a/lnbits/core/views/api.py
+++ b/lnbits/core/views/api.py
@@ -21,7 +21,13 @@ from ..tasks import sse_listeners
@api_check_wallet_key("invoice")
async def api_wallet():
return (
- jsonify({"id": g.wallet.id, "name": g.wallet.name, "balance": g.wallet.balance_msat,}),
+ jsonify(
+ {
+ "id": g.wallet.id,
+ "name": g.wallet.name,
+ "balance": g.wallet.balance_msat,
+ }
+ ),
HTTPStatus.OK,
)
@@ -71,7 +77,11 @@ async def api_payments_create_invoice():
if g.data.get("lnurl_callback"):
async with httpx.AsyncClient() as client:
try:
- r = await client.get(g.data["lnurl_callback"], params={"pr": payment_request}, timeout=10,)
+ r = await client.get(
+ g.data["lnurl_callback"],
+ params={"pr": payment_request},
+ timeout=10,
+ )
if r.is_error:
lnurl_response = r.text
else:
@@ -147,7 +157,9 @@ async def api_payments_pay_lnurl():
async with httpx.AsyncClient() as client:
try:
r = await client.get(
- g.data["callback"], params={"amount": g.data["amount"], "comment": g.data["comment"]}, timeout=40,
+ g.data["callback"],
+ params={"amount": g.data["amount"], "comment": g.data["comment"]},
+ timeout=40,
)
if r.is_error:
return jsonify({"message": "failed to connect"}), HTTPStatus.BAD_REQUEST
@@ -187,7 +199,10 @@ async def api_payments_pay_lnurl():
extra["comment"] = g.data["comment"]
payment_hash = await pay_invoice(
- wallet_id=g.wallet.id, payment_request=params["pr"], description=g.data.get("description", ""), extra=extra,
+ wallet_id=g.wallet.id,
+ payment_request=params["pr"],
+ description=g.data.get("description", ""),
+ extra=extra,
)
except Exception as exc:
await db.rollback()
@@ -347,7 +362,9 @@ async def api_lnurlscan(code: str):
@core_app.route("/api/v1/lnurlauth", methods=["POST"])
@api_check_wallet_key("admin")
@api_validate_post_request(
- schema={"callback": {"type": "string", "required": True},}
+ schema={
+ "callback": {"type": "string", "required": True},
+ }
)
async def api_perform_lnurlauth():
err = await perform_lnurlauth(g.data["callback"])
diff --git a/lnbits/db.py b/lnbits/db.py
index 61891cad2..e55cad07c 100644
--- a/lnbits/db.py
+++ b/lnbits/db.py
@@ -1,7 +1,7 @@
import os
from typing import Tuple, Optional, Any
-from sqlalchemy_aio import TRIO_STRATEGY # type: ignore
-from sqlalchemy import create_engine # type: ignore
+from sqlalchemy_aio import TRIO_STRATEGY # type: ignore
+from sqlalchemy import create_engine # type: ignore
from quart import g
from .settings import LNBITS_DATA_FOLDER
diff --git a/lnbits/extensions/events/migrations.py b/lnbits/extensions/events/migrations.py
index 52a7658c4..5d0e58403 100644
--- a/lnbits/extensions/events/migrations.py
+++ b/lnbits/extensions/events/migrations.py
@@ -72,6 +72,14 @@ async def m002_changed(db):
)
VALUES (?, ?, ?, ?, ?, ?, ?)
""",
- (row[0], row[1], row[2], row[3], row[4], row[5], True,),
+ (
+ row[0],
+ row[1],
+ row[2],
+ row[3],
+ row[4],
+ row[5],
+ True,
+ ),
)
await db.execute("DROP TABLE tickets")
diff --git a/lnbits/extensions/example/views_api.py b/lnbits/extensions/example/views_api.py
index 29814a788..c04f8c77e 100644
--- a/lnbits/extensions/example/views_api.py
+++ b/lnbits/extensions/example/views_api.py
@@ -20,9 +20,21 @@ from . import example_ext
async def api_example():
"""Try to add descriptions for others."""
tools = [
- {"name": "Flask", "url": "https://flask.palletsprojects.com/", "language": "Python",},
- {"name": "Vue.js", "url": "https://vuejs.org/", "language": "JavaScript",},
- {"name": "Quasar Framework", "url": "https://quasar.dev/", "language": "JavaScript",},
+ {
+ "name": "Flask",
+ "url": "https://flask.palletsprojects.com/",
+ "language": "Python",
+ },
+ {
+ "name": "Vue.js",
+ "url": "https://vuejs.org/",
+ "language": "JavaScript",
+ },
+ {
+ "name": "Quasar Framework",
+ "url": "https://quasar.dev/",
+ "language": "JavaScript",
+ },
]
return jsonify(tools), HTTPStatus.OK
diff --git a/lnbits/extensions/lndhub/views_api.py b/lnbits/extensions/lndhub/views_api.py
index 7c19c76e4..d7fb409c7 100644
--- a/lnbits/extensions/lndhub/views_api.py
+++ b/lnbits/extensions/lndhub/views_api.py
@@ -47,10 +47,19 @@ async def lndhub_auth():
async def lndhub_addinvoice():
try:
_, pr = await create_invoice(
- wallet_id=g.wallet.id, amount=int(g.data["amt"]), memo=g.data["memo"], extra={"tag": "lndhub"},
+ wallet_id=g.wallet.id,
+ amount=int(g.data["amt"]),
+ memo=g.data["memo"],
+ extra={"tag": "lndhub"},
)
except Exception as e:
- return jsonify({"error": True, "code": 7, "message": "Failed to create invoice: " + str(e),})
+ return jsonify(
+ {
+ "error": True,
+ "code": 7,
+ "message": "Failed to create invoice: " + str(e),
+ }
+ )
invoice = bolt11.decode(pr)
return jsonify(
@@ -70,10 +79,18 @@ async def lndhub_addinvoice():
async def lndhub_payinvoice():
try:
await pay_invoice(
- wallet_id=g.wallet.id, payment_request=g.data["invoice"], extra={"tag": "lndhub"},
+ wallet_id=g.wallet.id,
+ payment_request=g.data["invoice"],
+ extra={"tag": "lndhub"},
)
except Exception as e:
- return jsonify({"error": True, "code": 10, "message": "Payment failed: " + str(e),})
+ return jsonify(
+ {
+ "error": True,
+ "code": 10,
+ "message": "Payment failed: " + str(e),
+ }
+ )
invoice: bolt11.Invoice = bolt11.decode(g.data["invoice"])
return jsonify(
diff --git a/lnbits/extensions/lnticket/crud.py b/lnbits/extensions/lnticket/crud.py
index 06b10f41e..3cc1a8106 100644
--- a/lnbits/extensions/lnticket/crud.py
+++ b/lnbits/extensions/lnticket/crud.py
@@ -7,7 +7,13 @@ from .models import Tickets, Forms
async def create_ticket(
- payment_hash: str, wallet: str, form: str, name: str, email: str, ltext: str, sats: int,
+ payment_hash: str,
+ wallet: str,
+ form: str,
+ name: str,
+ email: str,
+ ltext: str,
+ sats: int,
) -> Tickets:
await db.execute(
"""
diff --git a/lnbits/extensions/lnticket/migrations.py b/lnbits/extensions/lnticket/migrations.py
index 09e26a788..8ff93b09d 100644
--- a/lnbits/extensions/lnticket/migrations.py
+++ b/lnbits/extensions/lnticket/migrations.py
@@ -71,6 +71,15 @@ async def m002_changed(db):
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
""",
- (row[0], row[1], row[2], row[3], row[4], row[5], row[6], True,),
+ (
+ row[0],
+ row[1],
+ row[2],
+ row[3],
+ row[4],
+ row[5],
+ row[6],
+ True,
+ ),
)
await db.execute("DROP TABLE tickets")
diff --git a/lnbits/extensions/lnticket/views_api.py b/lnbits/extensions/lnticket/views_api.py
index 832a4f9e3..4f5a267ba 100644
--- a/lnbits/extensions/lnticket/views_api.py
+++ b/lnbits/extensions/lnticket/views_api.py
@@ -109,7 +109,10 @@ async def api_ticket_make_ticket(form_id):
nwords = len(re.split(r"\s+", g.data["ltext"]))
sats = nwords * form.costpword
payment_hash, payment_request = await create_invoice(
- wallet_id=form.wallet, amount=sats, memo=f"ticket with {nwords} words on {form_id}", extra={"tag": "lnticket"},
+ wallet_id=form.wallet,
+ amount=sats,
+ memo=f"ticket with {nwords} words on {form_id}",
+ extra={"tag": "lnticket"},
)
ticket = await create_ticket(payment_hash=payment_hash, wallet=form.wallet, sats=sats, **g.data)
diff --git a/lnbits/extensions/lnurlp/crud.py b/lnbits/extensions/lnurlp/crud.py
index 7ceccc54e..fe96825bc 100644
--- a/lnbits/extensions/lnurlp/crud.py
+++ b/lnbits/extensions/lnurlp/crud.py
@@ -33,7 +33,17 @@ async def create_pay_link(
)
VALUES (?, ?, ?, ?, 0, 0, ?, ?, ?, ?, ?)
""",
- (wallet_id, description, min, max, webhook_url, success_text, success_url, comment_chars, currency,),
+ (
+ wallet_id,
+ description,
+ min,
+ max,
+ webhook_url,
+ success_text,
+ success_url,
+ comment_chars,
+ currency,
+ ),
)
link_id = result._result_proxy.lastrowid
link = await get_pay_link(link_id)
diff --git a/lnbits/extensions/lnurlp/lnurl.py b/lnbits/extensions/lnurlp/lnurl.py
index b505e4944..74dd6e352 100644
--- a/lnbits/extensions/lnurlp/lnurl.py
+++ b/lnbits/extensions/lnurlp/lnurl.py
@@ -79,6 +79,10 @@ async def api_lnurl_callback(link_id):
extra={"tag": "lnurlp", "link": link.id, "comment": comment},
)
- resp = LnurlPayActionResponse(pr=payment_request, success_action=link.success_action(payment_hash), routes=[],)
+ resp = LnurlPayActionResponse(
+ pr=payment_request,
+ success_action=link.success_action(payment_hash),
+ routes=[],
+ )
return jsonify(resp.dict()), HTTPStatus.OK
diff --git a/lnbits/extensions/lnurlp/templates/lnurlp/_api_docs.html b/lnbits/extensions/lnurlp/templates/lnurlp/_api_docs.html
index ec8985e38..d23242cd3 100644
--- a/lnbits/extensions/lnurlp/templates/lnurlp/_api_docs.html
+++ b/lnbits/extensions/lnurlp/templates/lnurlp/_api_docs.html
@@ -17,8 +17,8 @@
[<pay_link_object>, ...]
curl -X GET {{ request.url_root }}lnurlp/api/v1/links -H "X-Api-Key: {{
- g.user.wallets[0].inkey }}"
+ >curl -X GET {{ request.url_root }}lnurlp/api/v1/links -H "X-Api-Key:
+ {{ g.user.wallets[0].inkey }}"
@@ -38,8 +38,8 @@
{"lnurl": <string>}
curl -X GET {{ request.url_root }}lnurlp/api/v1/links/<pay_id> -H
- "X-Api-Key: {{ g.user.wallets[0].inkey }}"
+ >curl -X GET {{ request.url_root }}lnurlp/api/v1/links/<pay_id>
+ -H "X-Api-Key: {{ g.user.wallets[0].inkey }}"
@@ -93,8 +93,8 @@
{"lnurl": <string>}
curl -X PUT {{ request.url_root }}lnurlp/api/v1/links/<pay_id> -d
- '{"description": <string>, "amount": <integer>}' -H
+ >curl -X PUT {{ request.url_root }}lnurlp/api/v1/links/<pay_id>
+ -d '{"description": <string>, "amount": <integer>}' -H
"Content-type: application/json" -H "X-Api-Key: {{
g.user.wallets[0].adminkey }}"
@@ -120,8 +120,9 @@
curl -X DELETE {{ request.url_root }}lnurlp/api/v1/links/<pay_id>
- -H "X-Api-Key: {{ g.user.wallets[0].adminkey }}"
+ >curl -X DELETE {{ request.url_root
+ }}lnurlp/api/v1/links/<pay_id> -H "X-Api-Key: {{
+ g.user.wallets[0].adminkey }}"
diff --git a/lnbits/extensions/withdraw/views_api.py b/lnbits/extensions/withdraw/views_api.py
index 0ec807204..cb8b7f0a7 100644
--- a/lnbits/extensions/withdraw/views_api.py
+++ b/lnbits/extensions/withdraw/views_api.py
@@ -24,7 +24,15 @@ async def api_links():
wallet_ids = (await get_user(g.wallet.user)).wallet_ids
try:
return (
- jsonify([{**link._asdict(), **{"lnurl": link.lnurl},} for link in await get_withdraw_links(wallet_ids)]),
+ jsonify(
+ [
+ {
+ **link._asdict(),
+ **{"lnurl": link.lnurl},
+ }
+ for link in await get_withdraw_links(wallet_ids)
+ ]
+ ),
HTTPStatus.OK,
)
except LnurlInvalidUrl: