From e97fb086cce7ffae27aa322bff08436cd15efef8 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 11:53:30 +0200 Subject: [PATCH 01/10] feat: explicitly specify for which modules to `ignore_missing_imports` --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c3026c6f..1eca3408 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,7 +86,6 @@ lnbits = "lnbits.server:main" profile = "black" [tool.mypy] -ignore_missing_imports = "True" files = "lnbits" exclude = """(?x)( ^lnbits/extensions/bleskomat. @@ -95,6 +94,10 @@ exclude = """(?x)( | ^lnbits/wallets/lnd_grpc_files. )""" +[[tool.mypy.overrides]] +module = "embit.*,secp256k1.*,uvicorn.*,sqlalchemy.*,sqlalchemy_aio.*,websocket.*,pyqrcode.*,cashu.*,shortuuid.*,grpc.*,lnurl.*" +ignore_missing_imports = "True" + [tool.pytest.ini_options] addopts = "--durations=1 -s --cov=lnbits --cov-report=xml" testpaths = [ From 8cd6c7c9bc2113bd8cbbfe1350b0f3f2eb1708b6 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 11:54:17 +0200 Subject: [PATCH 02/10] refactor: use relative imports for own module --- lnbits/extensions/events/tasks.py | 2 +- lnbits/extensions/events/views_api.py | 2 +- lnbits/extensions/lnaddress/cloudflare.py | 2 +- lnbits/extensions/lnaddress/views_api.py | 2 +- lnbits/extensions/lnticket/views_api.py | 2 +- lnbits/extensions/market/notifier.py | 4 ++-- lnbits/extensions/market/views.py | 6 +++--- lnbits/extensions/satspay/tasks.py | 3 +-- lnbits/extensions/satspay/views.py | 2 +- lnbits/extensions/streamalerts/views_api.py | 6 +----- lnbits/extensions/subdomains/cloudflare.py | 2 +- lnbits/extensions/subdomains/views_api.py | 2 +- 12 files changed, 15 insertions(+), 20 deletions(-) diff --git a/lnbits/extensions/events/tasks.py b/lnbits/extensions/events/tasks.py index 5eae7373..945e2d28 100644 --- a/lnbits/extensions/events/tasks.py +++ b/lnbits/extensions/events/tasks.py @@ -1,10 +1,10 @@ import asyncio from lnbits.core.models import Payment -from lnbits.extensions.events.models import CreateTicket from lnbits.helpers import get_current_extension_name from lnbits.tasks import register_invoice_listener +from .models import CreateTicket from .views_api import api_ticket_send_ticket diff --git a/lnbits/extensions/events/views_api.py b/lnbits/extensions/events/views_api.py index 4ed3932f..5ec9b916 100644 --- a/lnbits/extensions/events/views_api.py +++ b/lnbits/extensions/events/views_api.py @@ -7,7 +7,6 @@ from lnbits.core.crud import get_user from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.events.models import CreateEvent, CreateTicket from . import events_ext from .crud import ( @@ -24,6 +23,7 @@ from .crud import ( reg_ticket, update_event, ) +from .models import CreateEvent, CreateTicket # Events diff --git a/lnbits/extensions/lnaddress/cloudflare.py b/lnbits/extensions/lnaddress/cloudflare.py index 679cb515..cf8feaf0 100644 --- a/lnbits/extensions/lnaddress/cloudflare.py +++ b/lnbits/extensions/lnaddress/cloudflare.py @@ -2,7 +2,7 @@ import json import httpx -from lnbits.extensions.lnaddress.models import Domains +from .models import Domains async def cloudflare_create_record(domain: Domains, ip: str): diff --git a/lnbits/extensions/lnaddress/views_api.py b/lnbits/extensions/lnaddress/views_api.py index d9e50e9d..7d15a55f 100644 --- a/lnbits/extensions/lnaddress/views_api.py +++ b/lnbits/extensions/lnaddress/views_api.py @@ -6,7 +6,6 @@ from fastapi import Depends, HTTPException, Query, Request from lnbits.core.crud import get_user from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.lnaddress.models import CreateAddress, CreateDomain from . import lnaddress_ext from .cloudflare import cloudflare_create_record @@ -23,6 +22,7 @@ from .crud import ( get_domains, update_domain, ) +from .models import CreateAddress, CreateDomain # DOMAINS diff --git a/lnbits/extensions/lnticket/views_api.py b/lnbits/extensions/lnticket/views_api.py index 35d6eaff..4462688b 100644 --- a/lnbits/extensions/lnticket/views_api.py +++ b/lnbits/extensions/lnticket/views_api.py @@ -8,7 +8,6 @@ from lnbits.core.crud import get_user from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.lnticket.models import CreateFormData, CreateTicketData from . import lnticket_ext from .crud import ( @@ -23,6 +22,7 @@ from .crud import ( set_ticket_paid, update_form, ) +from .models import CreateFormData, CreateTicketData # FORMS diff --git a/lnbits/extensions/market/notifier.py b/lnbits/extensions/market/notifier.py index e2bf7c91..88a1a4a3 100644 --- a/lnbits/extensions/market/notifier.py +++ b/lnbits/extensions/market/notifier.py @@ -10,8 +10,8 @@ from collections import defaultdict from fastapi import WebSocket from loguru import logger -from lnbits.extensions.market.crud import create_chat_message -from lnbits.extensions.market.models import CreateChatMessage +from .crud import create_chat_message +from .models import CreateChatMessage class Notifier: diff --git a/lnbits/extensions/market/views.py b/lnbits/extensions/market/views.py index 23bc5706..27ec7a97 100644 --- a/lnbits/extensions/market/views.py +++ b/lnbits/extensions/market/views.py @@ -17,10 +17,8 @@ from starlette.responses import HTMLResponse from lnbits.core.models import User from lnbits.decorators import check_user_exists # type: ignore -from lnbits.extensions.market import market_ext, market_renderer -from lnbits.extensions.market.models import CreateChatMessage, SetSettings -from lnbits.extensions.market.notifier import Notifier +from . import market_ext, market_renderer from .crud import ( create_chat_message, create_market_settings, @@ -35,6 +33,8 @@ from .crud import ( get_market_zones, update_market_product_stock, ) +from .models import CreateChatMessage, SetSettings +from .notifier import Notifier templates = Jinja2Templates(directory="templates") diff --git a/lnbits/extensions/satspay/tasks.py b/lnbits/extensions/satspay/tasks.py index 992e5eb6..2c636351 100644 --- a/lnbits/extensions/satspay/tasks.py +++ b/lnbits/extensions/satspay/tasks.py @@ -4,11 +4,10 @@ import json from loguru import logger from lnbits.core.models import Payment -from lnbits.extensions.satspay.crud import check_address_balance, get_charge from lnbits.helpers import get_current_extension_name from lnbits.tasks import register_invoice_listener -from .crud import update_charge +from .crud import check_address_balance, get_charge, update_charge from .helpers import call_webhook diff --git a/lnbits/extensions/satspay/views.py b/lnbits/extensions/satspay/views.py index 15a4403d..175b00bd 100644 --- a/lnbits/extensions/satspay/views.py +++ b/lnbits/extensions/satspay/views.py @@ -6,10 +6,10 @@ from starlette.responses import HTMLResponse from lnbits.core.models import User from lnbits.decorators import check_user_exists -from lnbits.extensions.satspay.helpers import public_charge from . import satspay_ext, satspay_renderer from .crud import get_charge, get_theme +from .helpers import public_charge templates = Jinja2Templates(directory="templates") diff --git a/lnbits/extensions/streamalerts/views_api.py b/lnbits/extensions/streamalerts/views_api.py index 0134fe82..25033e27 100644 --- a/lnbits/extensions/streamalerts/views_api.py +++ b/lnbits/extensions/streamalerts/views_api.py @@ -8,11 +8,6 @@ from starlette.responses import RedirectResponse from lnbits.core.crud import get_user from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.extensions.satspay.models import CreateCharge -from lnbits.extensions.streamalerts.models import ( - CreateDonation, - CreateService, - ValidateDonation, -) from lnbits.utils.exchange_rates import btc_price from ..satspay.crud import create_charge, get_charge @@ -33,6 +28,7 @@ from .crud import ( update_donation, update_service, ) +from .models import CreateDonation, CreateService, ValidateDonation @streamalerts_ext.post("/api/v1/services") diff --git a/lnbits/extensions/subdomains/cloudflare.py b/lnbits/extensions/subdomains/cloudflare.py index 679ca843..5b951b21 100644 --- a/lnbits/extensions/subdomains/cloudflare.py +++ b/lnbits/extensions/subdomains/cloudflare.py @@ -2,7 +2,7 @@ import json import httpx -from lnbits.extensions.subdomains.models import Domains +from .models import Domains async def cloudflare_create_subdomain( diff --git a/lnbits/extensions/subdomains/views_api.py b/lnbits/extensions/subdomains/views_api.py index 2b20bd1f..9fbae4f3 100644 --- a/lnbits/extensions/subdomains/views_api.py +++ b/lnbits/extensions/subdomains/views_api.py @@ -6,7 +6,6 @@ from starlette.exceptions import HTTPException from lnbits.core.crud import get_user from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.subdomains.models import CreateDomain, CreateSubdomain from . import subdomains_ext from .cloudflare import cloudflare_create_subdomain, cloudflare_deletesubdomain @@ -22,6 +21,7 @@ from .crud import ( get_subdomains, update_domain, ) +from .models import CreateDomain, CreateSubdomain # domainS From c370bd18c676a9e2413cb7d935a365055926d5e6 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 12:14:44 +0200 Subject: [PATCH 03/10] refactor: remove redundant ` # type: ignore` --- lnbits/bolt11.py | 6 +++--- lnbits/core/migrations.py | 2 +- lnbits/core/models.py | 4 ++-- lnbits/core/services.py | 4 ++-- lnbits/core/views/public_api.py | 2 +- lnbits/db.py | 4 ++-- lnbits/extensions/boltz/models.py | 16 ++++++++-------- lnbits/extensions/boltz/views_api.py | 8 ++++---- lnbits/extensions/cashu/__init__.py | 2 +- lnbits/extensions/copilot/lnurl.py | 2 +- lnbits/extensions/copilot/models.py | 4 ++-- lnbits/extensions/copilot/views.py | 2 +- lnbits/extensions/lndhub/decorators.py | 2 +- lnbits/extensions/lnurlp/lnurl.py | 6 +----- lnbits/extensions/lnurlp/models.py | 4 ++-- lnbits/extensions/lnurlp/views_api.py | 2 +- lnbits/extensions/market/views.py | 2 +- lnbits/extensions/ngrok/views.py | 3 +-- lnbits/extensions/satsdice/lnurl.py | 2 +- lnbits/extensions/satsdice/models.py | 4 ++-- lnbits/extensions/satsdice/views_api.py | 2 +- lnbits/extensions/satspay/crud.py | 2 +- lnbits/extensions/scrub/models.py | 2 +- lnbits/extensions/streamalerts/crud.py | 1 + lnbits/extensions/streamalerts/views_api.py | 7 +++++-- lnbits/extensions/subdomains/tasks.py | 2 +- lnbits/extensions/tipjar/crud.py | 1 + lnbits/extensions/tipjar/views_api.py | 5 +++-- lnbits/helpers.py | 2 +- pyproject.toml | 2 +- 30 files changed, 54 insertions(+), 53 deletions(-) diff --git a/lnbits/bolt11.py b/lnbits/bolt11.py index 0bc40158..4e20208c 100644 --- a/lnbits/bolt11.py +++ b/lnbits/bolt11.py @@ -4,12 +4,12 @@ import time from decimal import Decimal from typing import List, NamedTuple, Optional -import bitstring # type: ignore +import bitstring import embit import secp256k1 from bech32 import CHARSET, bech32_decode, bech32_encode -from ecdsa import SECP256k1, VerifyingKey # type: ignore -from ecdsa.util import sigdecode_string # type: ignore +from ecdsa import SECP256k1, VerifyingKey +from ecdsa.util import sigdecode_string class Route(NamedTuple): diff --git a/lnbits/core/migrations.py b/lnbits/core/migrations.py index 41ba5644..66254d11 100644 --- a/lnbits/core/migrations.py +++ b/lnbits/core/migrations.py @@ -1,7 +1,7 @@ import datetime from loguru import logger -from sqlalchemy.exc import OperationalError # type: ignore +from sqlalchemy.exc import OperationalError from lnbits import bolt11 diff --git a/lnbits/core/models.py b/lnbits/core/models.py index 31383667..eca1bf50 100644 --- a/lnbits/core/models.py +++ b/lnbits/core/models.py @@ -6,9 +6,9 @@ import time from sqlite3 import Row from typing import Dict, List, Optional -from ecdsa import SECP256k1, SigningKey # type: ignore +from ecdsa import SECP256k1, SigningKey from fastapi import Query -from lnurl import encode as lnurl_encode # type: ignore +from lnurl import encode as lnurl_encode from loguru import logger from pydantic import BaseModel diff --git a/lnbits/core/services.py b/lnbits/core/services.py index 8dc973e7..eefb2f99 100644 --- a/lnbits/core/services.py +++ b/lnbits/core/services.py @@ -7,7 +7,7 @@ from urllib.parse import parse_qs, urlparse import httpx from fastapi import Depends, WebSocket from lnurl import LnurlErrorResponse -from lnurl import decode as decode_lnurl # type: ignore +from lnurl import decode as decode_lnurl from loguru import logger from lnbits import bolt11 @@ -44,7 +44,7 @@ from .crud import ( from .models import Payment try: - from typing import TypedDict # type: ignore + from typing import TypedDict except ImportError: # pragma: nocover from typing_extensions import TypedDict diff --git a/lnbits/core/views/public_api.py b/lnbits/core/views/public_api.py index 56afc176..b5773bbe 100644 --- a/lnbits/core/views/public_api.py +++ b/lnbits/core/views/public_api.py @@ -16,7 +16,7 @@ from ..tasks import api_invoice_listeners @core_app.get("/.well-known/lnurlp/{username}") async def lnaddress(username: str, request: Request): - from lnbits.extensions.lnaddress.lnurl import lnurl_response + from lnbits.extensions.lnaddress.lnurl import lnurl_response # type: ignore domain = urlparse(str(request.url)).netloc return await lnurl_response(username, domain, request) diff --git a/lnbits/db.py b/lnbits/db.py index 1bef7bf2..77f3cf33 100644 --- a/lnbits/db.py +++ b/lnbits/db.py @@ -9,7 +9,7 @@ from typing import Optional from loguru import logger from sqlalchemy import create_engine from sqlalchemy_aio.base import AsyncConnection -from sqlalchemy_aio.strategy import ASYNCIO_STRATEGY # type: ignore +from sqlalchemy_aio.strategy import ASYNCIO_STRATEGY from lnbits.settings import settings @@ -129,7 +129,7 @@ class Database(Compat): else: self.type = POSTGRES - import psycopg2 # type: ignore + import psycopg2 def _parse_timestamp(value, _): if value is None: diff --git a/lnbits/extensions/boltz/models.py b/lnbits/extensions/boltz/models.py index c8ec5646..4f4ec9e2 100644 --- a/lnbits/extensions/boltz/models.py +++ b/lnbits/extensions/boltz/models.py @@ -3,7 +3,7 @@ from typing import Dict, List, Optional from fastapi.params import Query from pydantic.main import BaseModel -from sqlalchemy.engine import base # type: ignore +from sqlalchemy.engine import base class SubmarineSwap(BaseModel): @@ -24,9 +24,9 @@ class SubmarineSwap(BaseModel): class CreateSubmarineSwap(BaseModel): - wallet: str = Query(...) # type: ignore - refund_address: str = Query(...) # type: ignore - amount: int = Query(...) # type: ignore + wallet: str = Query(...) + refund_address: str = Query(...) + amount: int = Query(...) class ReverseSubmarineSwap(BaseModel): @@ -48,13 +48,13 @@ class ReverseSubmarineSwap(BaseModel): class CreateReverseSubmarineSwap(BaseModel): - wallet: str = Query(...) # type: ignore - amount: int = Query(...) # type: ignore - instant_settlement: bool = Query(...) # type: ignore + wallet: str = Query(...) + amount: int = Query(...) + instant_settlement: bool = Query(...) # validate on-address, bcrt1 for regtest addresses onchain_address: str = Query( ..., regex="^(bcrt1|bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$" - ) # type: ignore + ) class SwapStatus(BaseModel): diff --git a/lnbits/extensions/boltz/views_api.py b/lnbits/extensions/boltz/views_api.py index 18ca14cb..34f4033e 100644 --- a/lnbits/extensions/boltz/views_api.py +++ b/lnbits/extensions/boltz/views_api.py @@ -111,7 +111,7 @@ async def api_submarineswap( ) async def api_submarineswap_refund( swap_id: str, - g: WalletTypeInfo = Depends(require_admin_key), # type: ignore + g: WalletTypeInfo = Depends(require_admin_key), ): if swap_id == None: raise HTTPException( @@ -160,7 +160,7 @@ async def api_submarineswap_refund( ) async def api_submarineswap_create( data: CreateSubmarineSwap, - wallet: WalletTypeInfo = Depends(require_admin_key), # type: ignore + wallet: WalletTypeInfo = Depends(require_admin_key), ): try: swap_data = await create_swap(data) @@ -257,7 +257,7 @@ async def api_reverse_submarineswap_create( }, ) async def api_swap_status( - swap_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) # type: ignore + swap_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) ): swap = await get_submarine_swap(swap_id) or await get_reverse_submarine_swap( swap_id @@ -290,7 +290,7 @@ async def api_swap_status( response_description="list of pending swaps", ) async def api_check_swaps( - g: WalletTypeInfo = Depends(require_admin_key), # type: ignore + g: WalletTypeInfo = Depends(require_admin_key), all_wallets: bool = Query(False), ): wallet_ids = [g.wallet.id] diff --git a/lnbits/extensions/cashu/__init__.py b/lnbits/extensions/cashu/__init__.py index e6507bba..83d8ce27 100644 --- a/lnbits/extensions/cashu/__init__.py +++ b/lnbits/extensions/cashu/__init__.py @@ -1,6 +1,6 @@ import asyncio -from environs import Env # type: ignore +from environs import Env from fastapi import APIRouter from fastapi.staticfiles import StaticFiles diff --git a/lnbits/extensions/copilot/lnurl.py b/lnbits/extensions/copilot/lnurl.py index d8ededf3..b0bc83bc 100644 --- a/lnbits/extensions/copilot/lnurl.py +++ b/lnbits/extensions/copilot/lnurl.py @@ -6,7 +6,7 @@ from fastapi import Request from fastapi.param_functions import Query from lnurl.types import LnurlPayMetadata from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse # type: ignore +from starlette.responses import HTMLResponse from lnbits.core.services import create_invoice diff --git a/lnbits/extensions/copilot/models.py b/lnbits/extensions/copilot/models.py index b9b43ccf..7ca2fc96 100644 --- a/lnbits/extensions/copilot/models.py +++ b/lnbits/extensions/copilot/models.py @@ -4,11 +4,11 @@ from typing import Dict, Optional from urllib.parse import ParseResult, parse_qs, urlencode, urlparse, urlunparse from fastapi.param_functions import Query -from lnurl.types import LnurlPayMetadata # type: ignore +from lnurl.types import LnurlPayMetadata from pydantic import BaseModel from starlette.requests import Request -from lnbits.lnurl import encode as lnurl_encode # type: ignore +from lnbits.lnurl import encode as lnurl_encode class CreateCopilotData(BaseModel): diff --git a/lnbits/extensions/copilot/views.py b/lnbits/extensions/copilot/views.py index 7b66366d..ff69dfba 100644 --- a/lnbits/extensions/copilot/views.py +++ b/lnbits/extensions/copilot/views.py @@ -2,7 +2,7 @@ from typing import List from fastapi import Depends, Request from fastapi.templating import Jinja2Templates -from starlette.responses import HTMLResponse # type: ignore +from starlette.responses import HTMLResponse from lnbits.core.models import User from lnbits.decorators import check_user_exists diff --git a/lnbits/extensions/lndhub/decorators.py b/lnbits/extensions/lndhub/decorators.py index fcadce27..48118087 100644 --- a/lnbits/extensions/lndhub/decorators.py +++ b/lnbits/extensions/lndhub/decorators.py @@ -5,7 +5,7 @@ from fastapi.param_functions import Security from fastapi.security.api_key import APIKeyHeader from starlette.exceptions import HTTPException -from lnbits.decorators import WalletTypeInfo, get_key_type # type: ignore +from lnbits.decorators import WalletTypeInfo, get_key_type api_key_header_auth = APIKeyHeader( name="AUTHORIZATION", diff --git a/lnbits/extensions/lnurlp/lnurl.py b/lnbits/extensions/lnurlp/lnurl.py index 8f6aa623..99de459c 100644 --- a/lnbits/extensions/lnurlp/lnurl.py +++ b/lnbits/extensions/lnurlp/lnurl.py @@ -3,11 +3,7 @@ import math from http import HTTPStatus from fastapi import Request -from lnurl import ( # type: ignore - LnurlErrorResponse, - LnurlPayActionResponse, - LnurlPayResponse, -) +from lnurl import LnurlErrorResponse, LnurlPayActionResponse, LnurlPayResponse from starlette.exceptions import HTTPException from lnbits.core.services import create_invoice diff --git a/lnbits/extensions/lnurlp/models.py b/lnbits/extensions/lnurlp/models.py index 42ea2926..1c6b6f71 100644 --- a/lnbits/extensions/lnurlp/models.py +++ b/lnbits/extensions/lnurlp/models.py @@ -4,11 +4,11 @@ from typing import Dict, Optional from urllib.parse import ParseResult, parse_qs, urlencode, urlparse, urlunparse from fastapi.param_functions import Query -from lnurl.types import LnurlPayMetadata # type: ignore +from lnurl.types import LnurlPayMetadata from pydantic import BaseModel from starlette.requests import Request -from lnbits.lnurl import encode as lnurl_encode # type: ignore +from lnbits.lnurl import encode as lnurl_encode class CreatePayLinkData(BaseModel): diff --git a/lnbits/extensions/lnurlp/views_api.py b/lnbits/extensions/lnurlp/views_api.py index 0fa739b0..a7bf0761 100644 --- a/lnbits/extensions/lnurlp/views_api.py +++ b/lnbits/extensions/lnurlp/views_api.py @@ -2,7 +2,7 @@ import json from http import HTTPStatus from fastapi import Depends, Query, Request -from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl # type: ignore +from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl from starlette.exceptions import HTTPException from lnbits.core.crud import get_user diff --git a/lnbits/extensions/market/views.py b/lnbits/extensions/market/views.py index 27ec7a97..e6c8eeff 100644 --- a/lnbits/extensions/market/views.py +++ b/lnbits/extensions/market/views.py @@ -16,7 +16,7 @@ from starlette.exceptions import HTTPException from starlette.responses import HTMLResponse from lnbits.core.models import User -from lnbits.decorators import check_user_exists # type: ignore +from lnbits.decorators import check_user_exists from . import market_ext, market_renderer from .crud import ( diff --git a/lnbits/extensions/ngrok/views.py b/lnbits/extensions/ngrok/views.py index 81c8b24e..d84ecd2d 100644 --- a/lnbits/extensions/ngrok/views.py +++ b/lnbits/extensions/ngrok/views.py @@ -1,4 +1,3 @@ -# type: ignore from os import getenv from fastapi import Depends, Request @@ -36,5 +35,5 @@ ngrok_tunnel = ngrok.connect(port) @ngrok_ext.get("/") async def index(request: Request, user: User = Depends(check_user_exists)): return ngrok_renderer().TemplateResponse( - "ngrok/index.html", {"request": request, "ngrok": string5, "user": user.dict()} + "ngrok/index.html", {"request": request, "ngrok": string5, "user": user.dict()} # type: ignore ) diff --git a/lnbits/extensions/satsdice/lnurl.py b/lnbits/extensions/satsdice/lnurl.py index 1e9c6c09..f766d8cb 100644 --- a/lnbits/extensions/satsdice/lnurl.py +++ b/lnbits/extensions/satsdice/lnurl.py @@ -5,7 +5,7 @@ from http import HTTPStatus from fastapi import Request from fastapi.param_functions import Query from starlette.exceptions import HTTPException -from starlette.responses import HTMLResponse # type: ignore +from starlette.responses import HTMLResponse from lnbits.core.services import create_invoice, pay_invoice diff --git a/lnbits/extensions/satsdice/models.py b/lnbits/extensions/satsdice/models.py index 2537f8d7..b0a9a4cd 100644 --- a/lnbits/extensions/satsdice/models.py +++ b/lnbits/extensions/satsdice/models.py @@ -5,8 +5,8 @@ from typing import Dict, Optional from fastapi import Request from fastapi.param_functions import Query from lnurl import Lnurl -from lnurl import encode as lnurl_encode # type: ignore -from lnurl.types import LnurlPayMetadata # type: ignore +from lnurl import encode as lnurl_encode +from lnurl.types import LnurlPayMetadata from pydantic import BaseModel from pydantic.main import BaseModel diff --git a/lnbits/extensions/satsdice/views_api.py b/lnbits/extensions/satsdice/views_api.py index 77c2f1d4..57ab26b8 100644 --- a/lnbits/extensions/satsdice/views_api.py +++ b/lnbits/extensions/satsdice/views_api.py @@ -1,7 +1,7 @@ from http import HTTPStatus from fastapi import Depends, Query, Request -from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl # type: ignore +from lnurl.exceptions import InvalidUrl as LnurlInvalidUrl from starlette.exceptions import HTTPException from lnbits.core.crud import get_user diff --git a/lnbits/extensions/satspay/crud.py b/lnbits/extensions/satspay/crud.py index 4fb14695..01abe24e 100644 --- a/lnbits/extensions/satspay/crud.py +++ b/lnbits/extensions/satspay/crud.py @@ -7,7 +7,7 @@ from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.helpers import urlsafe_short_hash -from ..watchonly.crud import get_config, get_fresh_address +from ..watchonly.crud import get_config, get_fresh_address # type: ignore from . import db from .helpers import fetch_onchain_balance from .models import Charges, CreateCharge, SatsPayThemes diff --git a/lnbits/extensions/scrub/models.py b/lnbits/extensions/scrub/models.py index db05e4f1..8079f358 100644 --- a/lnbits/extensions/scrub/models.py +++ b/lnbits/extensions/scrub/models.py @@ -3,7 +3,7 @@ from sqlite3 import Row from pydantic import BaseModel from starlette.requests import Request -from lnbits.lnurl import encode as lnurl_encode # type: ignore +from lnbits.lnurl import encode as lnurl_encode class CreateScrubLink(BaseModel): diff --git a/lnbits/extensions/streamalerts/crud.py b/lnbits/extensions/streamalerts/crud.py index 37583117..94113447 100644 --- a/lnbits/extensions/streamalerts/crud.py +++ b/lnbits/extensions/streamalerts/crud.py @@ -7,6 +7,7 @@ from lnbits.core.crud import get_wallet from lnbits.db import SQLITE from lnbits.helpers import urlsafe_short_hash +# todo: use the API, not direct import from ..satspay.crud import delete_charge # type: ignore from . import db from .models import CreateService, Donation, Service diff --git a/lnbits/extensions/streamalerts/views_api.py b/lnbits/extensions/streamalerts/views_api.py index 25033e27..7bf952c7 100644 --- a/lnbits/extensions/streamalerts/views_api.py +++ b/lnbits/extensions/streamalerts/views_api.py @@ -7,10 +7,13 @@ from starlette.responses import RedirectResponse from lnbits.core.crud import get_user from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.satspay.models import CreateCharge + +# todo: use the API, not direct import +from lnbits.extensions.satspay.models import CreateCharge # type: ignore from lnbits.utils.exchange_rates import btc_price -from ..satspay.crud import create_charge, get_charge +# todo: use the API, not direct import +from ..satspay.crud import create_charge, get_charge # type: ignore from . import streamalerts_ext from .crud import ( authenticate_service, diff --git a/lnbits/extensions/subdomains/tasks.py b/lnbits/extensions/subdomains/tasks.py index f9e0c8ee..ca57950b 100644 --- a/lnbits/extensions/subdomains/tasks.py +++ b/lnbits/extensions/subdomains/tasks.py @@ -30,7 +30,7 @@ async def on_invoice_paid(payment: Payment) -> None: ### Create subdomain cf_response = await cloudflare_create_subdomain( - domain=domain, + domain=domain, # type: ignore subdomain=subdomain.subdomain, record_type=subdomain.record_type, ip=subdomain.ip, diff --git a/lnbits/extensions/tipjar/crud.py b/lnbits/extensions/tipjar/crud.py index 080eaf1c..3ea45d0d 100644 --- a/lnbits/extensions/tipjar/crud.py +++ b/lnbits/extensions/tipjar/crud.py @@ -2,6 +2,7 @@ from typing import Optional from lnbits.db import SQLITE +# todo: use the API, not direct import from ..satspay.crud import delete_charge # type: ignore from . import db from .models import Tip, TipJar, createTipJar diff --git a/lnbits/extensions/tipjar/views_api.py b/lnbits/extensions/tipjar/views_api.py index d0c7ac7d..7d3df920 100644 --- a/lnbits/extensions/tipjar/views_api.py +++ b/lnbits/extensions/tipjar/views_api.py @@ -6,8 +6,9 @@ from starlette.exceptions import HTTPException from lnbits.core.crud import get_user from lnbits.decorators import WalletTypeInfo, get_key_type -from ..satspay.crud import create_charge -from ..satspay.models import CreateCharge +# todo: use the API, not direct import +from ..satspay.crud import create_charge # type: ignore +from ..satspay.models import CreateCharge # type: ignore from . import tipjar_ext from .crud import ( create_tip, diff --git a/lnbits/helpers.py b/lnbits/helpers.py index d3a4e6ea..4804bdea 100644 --- a/lnbits/helpers.py +++ b/lnbits/helpers.py @@ -4,7 +4,7 @@ import os from typing import Any, List, NamedTuple, Optional import jinja2 -import shortuuid # type: ignore +import shortuuid from lnbits.jinja2_templating import Jinja2Templates from lnbits.requestvars import g diff --git a/pyproject.toml b/pyproject.toml index 1eca3408..dd470e44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,7 +95,7 @@ exclude = """(?x)( )""" [[tool.mypy.overrides]] -module = "embit.*,secp256k1.*,uvicorn.*,sqlalchemy.*,sqlalchemy_aio.*,websocket.*,pyqrcode.*,cashu.*,shortuuid.*,grpc.*,lnurl.*" +module = "embit.*,secp256k1.*,uvicorn.*,sqlalchemy.*,sqlalchemy_aio.*,websocket.*,websockets.*,pyqrcode.*,cashu.*,shortuuid.*,grpc.*,lnurl.*,bitstring.*,ecdsa.*,psycopg2.*,pyngrok.*" ignore_missing_imports = "True" [tool.pytest.ini_options] From 5547bb69e6afe85eefa2b01d8c7ffb5d9939dc12 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 12:14:59 +0200 Subject: [PATCH 04/10] fix: use relative import --- lnbits/extensions/satspay/views_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/satspay/views_api.py b/lnbits/extensions/satspay/views_api.py index 98c338ed..200773fb 100644 --- a/lnbits/extensions/satspay/views_api.py +++ b/lnbits/extensions/satspay/views_api.py @@ -11,8 +11,8 @@ from lnbits.decorators import ( require_admin_key, require_invoice_key, ) -from lnbits.extensions.satspay import satspay_ext +from . import satspay_ext from .crud import ( check_address_balance, create_charge, From 54139371f6b2e8f9a3915451704072f29f2e0289 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 15:12:32 +0200 Subject: [PATCH 05/10] fix: mypy --- lnbits/extensions/smtp/views_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/smtp/views_api.py b/lnbits/extensions/smtp/views_api.py index 08a05ef3..4ae1f966 100644 --- a/lnbits/extensions/smtp/views_api.py +++ b/lnbits/extensions/smtp/views_api.py @@ -5,7 +5,6 @@ from fastapi import Depends, HTTPException, Query from lnbits.core.crud import get_user from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type -from lnbits.extensions.smtp.models import CreateEmail, CreateEmailaddress from . import smtp_ext from .crud import ( @@ -19,6 +18,7 @@ from .crud import ( get_emails, update_emailaddress, ) +from .models import CreateEmail, CreateEmailaddress from .smtp import valid_email From 6235215c89d0ae223180fe53b885da7cbaee3a55 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 16:57:05 +0200 Subject: [PATCH 06/10] fix: use relative import --- lnbits/extensions/watchonly/views_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/watchonly/views_api.py b/lnbits/extensions/watchonly/views_api.py index a7086423..2e3fc45d 100644 --- a/lnbits/extensions/watchonly/views_api.py +++ b/lnbits/extensions/watchonly/views_api.py @@ -11,8 +11,8 @@ from embit.transaction import Transaction, TransactionInput, TransactionOutput from fastapi import Depends, HTTPException, Query, Request from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key -from lnbits.extensions.watchonly import watchonly_ext +from . import watchonly_ext from .crud import ( create_config, create_fresh_addresses, From 5ce79d9440b836d9029023d43481bc7041691ca7 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 17:35:19 +0200 Subject: [PATCH 07/10] chore: use `list[]` instead of `csv` for `ignore_missing_imports` --- pyproject.toml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dd470e44..7c83e6ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,7 +95,24 @@ exclude = """(?x)( )""" [[tool.mypy.overrides]] -module = "embit.*,secp256k1.*,uvicorn.*,sqlalchemy.*,sqlalchemy_aio.*,websocket.*,websockets.*,pyqrcode.*,cashu.*,shortuuid.*,grpc.*,lnurl.*,bitstring.*,ecdsa.*,psycopg2.*,pyngrok.*" +module = [ + "embit.*", + "secp256k1.*", + "uvicorn.*", + "sqlalchemy.*", + "sqlalchemy_aio.*", + "websocket.*", + "websockets.*", + "pyqrcode.*", + "cashu.*", + "shortuuid.*", + "grpc.*", + "lnurl.*", + "bitstring.*", + "ecdsa.*", + "psycopg2.*", + "pyngrok.*" +] ignore_missing_imports = "True" [tool.pytest.ini_options] From c54a0b4f2a6fcc31dcb7cd3e1bdcaab563e10cd9 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 17:38:59 +0200 Subject: [PATCH 08/10] fix: narrow down the list of `ignore_missing_imports` modules --- pyproject.toml | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7c83e6ed..560c3434 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,21 +97,7 @@ exclude = """(?x)( [[tool.mypy.overrides]] module = [ "embit.*", - "secp256k1.*", - "uvicorn.*", - "sqlalchemy.*", - "sqlalchemy_aio.*", - "websocket.*", - "websockets.*", - "pyqrcode.*", - "cashu.*", - "shortuuid.*", - "grpc.*", - "lnurl.*", - "bitstring.*", - "ecdsa.*", - "psycopg2.*", - "pyngrok.*" + "cashu.*" ] ignore_missing_imports = "True" From 9ed5a19bd0e61dd87544206746c499580bf7c953 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 9 Jan 2023 17:56:49 +0200 Subject: [PATCH 09/10] Revert "fix: narrow down the list of `ignore_missing_imports` modules" This reverts commit 7b6dfe1f498646cefe1bd8a5f25f3abe2d341b36. --- pyproject.toml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 560c3434..7c83e6ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,7 +97,21 @@ exclude = """(?x)( [[tool.mypy.overrides]] module = [ "embit.*", - "cashu.*" + "secp256k1.*", + "uvicorn.*", + "sqlalchemy.*", + "sqlalchemy_aio.*", + "websocket.*", + "websockets.*", + "pyqrcode.*", + "cashu.*", + "shortuuid.*", + "grpc.*", + "lnurl.*", + "bitstring.*", + "ecdsa.*", + "psycopg2.*", + "pyngrok.*" ] ignore_missing_imports = "True" From 4d1480eff3fc54c591c7a043c5f9f46a10a8ad15 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 10 Jan 2023 09:50:35 +0200 Subject: [PATCH 10/10] fix: `mypy` - double import of `lnurldevice_ext` --- lnbits/extensions/lnurldevice/views_api.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lnbits/extensions/lnurldevice/views_api.py b/lnbits/extensions/lnurldevice/views_api.py index d657c879..2fd1bd12 100644 --- a/lnbits/extensions/lnurldevice/views_api.py +++ b/lnbits/extensions/lnurldevice/views_api.py @@ -4,7 +4,6 @@ from fastapi import Depends, HTTPException, Query, Request from lnbits.core.crud import get_user from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key -from lnbits.extensions.lnurldevice import lnurldevice_ext from lnbits.utils.exchange_rates import currencies from . import lnurldevice_ext