Python/relative_import (#186)

* relative import all the things

* make format

* add __init__.py to cli/

* fix mypy errors

* get rid of more mypy

* mypy fix crud.py

* fix another mypy error
This commit is contained in:
calle
2023-05-01 22:39:23 +02:00
committed by GitHub
parent c9c8c1d12f
commit 89fb2787e6
21 changed files with 104 additions and 139 deletions

View File

@@ -5,8 +5,8 @@ from typing import Any, Dict, List, Optional, TypedDict, Union
from pydantic import BaseModel
from cashu.core.crypto import derive_keys, derive_keyset_id, derive_pubkeys
from cashu.core.secp import PrivateKey, PublicKey
from ..core.crypto import derive_keys, derive_keyset_id, derive_pubkeys
from ..core.secp import PrivateKey, PublicKey
# ------- PROOFS -------

View File

@@ -2,8 +2,8 @@ import base64
import hashlib
from typing import Dict, List
from cashu.core.secp import PrivateKey, PublicKey
from cashu.core.settings import settings
from ..core.secp import PrivateKey, PublicKey
from ..core.settings import settings
# entropy = bytes([random.getrandbits(8) for i in range(16)])
# mnemonic = bip39.mnemonic_from_bytes(entropy)

View File

@@ -2,8 +2,8 @@ import asyncio
from functools import partial, wraps
from typing import List
from cashu.core.base import Proof
from cashu.core.settings import settings
from ..core.base import Proof
from ..core.settings import settings
def sum_proofs(proofs: List[Proof]):

View File

@@ -1,6 +1,6 @@
import re
from cashu.core.db import COCKROACH, POSTGRES, SQLITE, Database
from ..core.db import COCKROACH, POSTGRES, SQLITE, Database
def table_with_schema(db, table: str):
@@ -35,6 +35,7 @@ async def migrate_databases(db: Database, migrations_module):
await set_migration_version(conn, db_name, version)
async with db.connect() as conn:
exists = None
if conn.type == SQLITE:
exists = await conn.fetchone(
f"SELECT * FROM sqlite_master WHERE type='table' AND name='{table_with_schema(db, 'dbversions')}'"

View File

@@ -4,8 +4,7 @@ import random
from datetime import datetime
from typing import AsyncGenerator, Dict, Optional, Set
from cashu.core.bolt11 import Invoice, decode, encode
from ..core.bolt11 import Invoice, decode, encode
from .base import (
InvoiceResponse,
PaymentResponse,

View File

@@ -3,8 +3,7 @@ from typing import Dict, Optional
import requests
from cashu.core.settings import settings
from ..core.settings import settings
from .base import (
InvoiceResponse,
PaymentResponse,
@@ -110,7 +109,6 @@ class LNbitsWallet(Wallet):
async def get_invoice_status(self, checking_id: str) -> PaymentStatus:
try:
r = self.s.get(
url=f"{self.endpoint}/api/v1/payments/{checking_id}",
headers=self.key,

View File

@@ -7,8 +7,7 @@ from starlette.middleware import Middleware
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.middleware.cors import CORSMiddleware
from cashu.core.settings import settings
from ..core.settings import settings
from .router import router
from .startup import start_mint_init

View File

@@ -1,9 +1,9 @@
import time
from typing import Any, List, Optional
from cashu.core.base import Invoice, MintKeyset, Proof
from cashu.core.db import Connection, Database
from cashu.core.migrations import table_with_schema
from ..core.base import Invoice, MintKeyset, Proof
from ..core.db import Connection, Database
from ..core.migrations import table_with_schema
class LedgerCrud:
@@ -14,48 +14,37 @@ class LedgerCrud:
"""
async def get_keyset(*args, **kwags):
return await get_keyset(*args, **kwags)
return await get_keyset(*args, **kwags) # type: ignore
async def get_lightning_invoice(*args, **kwags):
return await get_lightning_invoice(*args, **kwags)
return await get_lightning_invoice(*args, **kwags) # type: ignore
async def get_proofs_used(*args, **kwags):
return await get_proofs_used(*args, **kwags)
return await get_proofs_used(*args, **kwags) # type: ignore
async def invalidate_proof(*args, **kwags):
return await invalidate_proof(*args, **kwags)
return await invalidate_proof(*args, **kwags) # type: ignore
async def get_proofs_pending(*args, **kwags):
return await get_proofs_pending(*args, **kwags)
return await get_proofs_pending(*args, **kwags) # type: ignore
async def set_proof_pending(*args, **kwags):
return await set_proof_pending(*args, **kwags)
return await set_proof_pending(*args, **kwags) # type: ignore
async def unset_proof_pending(*args, **kwags):
return await unset_proof_pending(*args, **kwags)
return await unset_proof_pending(*args, **kwags) # type: ignore
async def store_keyset(*args, **kwags):
return await store_keyset(*args, **kwags)
return await store_keyset(*args, **kwags) # type: ignore
async def store_lightning_invoice(*args, **kwags):
return await store_lightning_invoice(*args, **kwags)
return await store_lightning_invoice(*args, **kwags) # type: ignore
async def store_promise(*args, **kwags):
return await store_promise(*args, **kwags)
return await store_promise(*args, **kwags) # type: ignore
async def update_lightning_invoice(*args, **kwags):
return await update_lightning_invoice(*args, **kwags)
return await update_lightning_invoice(*args, **kwags) # type: ignore
async def store_promise(
@@ -65,7 +54,6 @@ async def store_promise(
C_: str,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
INSERT INTO {table_with_schema(db, 'promises')}
@@ -84,7 +72,6 @@ async def get_proofs_used(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
f"""
SELECT secret from {table_with_schema(db, 'proofs_used')}
@@ -98,7 +85,6 @@ async def invalidate_proof(
proof: Proof,
conn: Optional[Connection] = None,
):
# we add the proof and secret to the used list
await (conn or db).execute(
f"""
@@ -118,7 +104,6 @@ async def get_proofs_pending(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
f"""
SELECT * from {table_with_schema(db, 'proofs_pending')}
@@ -132,7 +117,6 @@ async def set_proof_pending(
proof: Proof,
conn: Optional[Connection] = None,
):
# we add the proof and secret to the used list
await (conn or db).execute(
f"""
@@ -153,7 +137,6 @@ async def unset_proof_pending(
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
DELETE FROM {table_with_schema(db, 'proofs_pending')}
@@ -168,7 +151,6 @@ async def store_lightning_invoice(
invoice: Invoice,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
INSERT INTO {table_with_schema(db, 'invoices')}
@@ -189,7 +171,6 @@ async def get_lightning_invoice(
hash: str,
conn: Optional[Connection] = None,
):
row = await (conn or db).fetchone(
f"""
SELECT * from {table_with_schema(db, 'invoices')}
@@ -220,7 +201,6 @@ async def store_keyset(
keyset: MintKeyset,
conn: Optional[Connection] = None,
):
await (conn or db).execute( # type: ignore
f"""
INSERT INTO {table_with_schema(db, 'keysets')}
@@ -241,7 +221,7 @@ async def store_keyset(
async def get_keyset(
db: Database,
id: str = None,
id: str = "",
derivation_path: str = "",
conn: Optional[Connection] = None,
):

View File

@@ -3,10 +3,10 @@ from typing import Dict, List, Literal, Optional, Set, Union
from loguru import logger
import cashu.core.b_dhke as b_dhke
import cashu.core.bolt11 as bolt11
import cashu.core.legacy as legacy
from cashu.core.base import (
from ..core import b_dhke as b_dhke
from ..core import bolt11 as bolt11
from ..core import legacy as legacy
from ..core.base import (
BlindedMessage,
BlindedSignature,
Invoice,
@@ -14,15 +14,15 @@ from cashu.core.base import (
MintKeysets,
Proof,
)
from cashu.core.crypto import derive_pubkey
from cashu.core.db import Database
from cashu.core.helpers import fee_reserve, sum_proofs
from cashu.core.script import verify_script
from cashu.core.secp import PublicKey
from cashu.core.settings import settings
from cashu.core.split import amount_split
from cashu.lightning.base import Wallet
from cashu.mint.crud import LedgerCrud
from ..core.crypto import derive_pubkey
from ..core.db import Database
from ..core.helpers import fee_reserve, sum_proofs
from ..core.script import verify_script
from ..core.secp import PublicKey
from ..core.settings import settings
from ..core.split import amount_split
from ..lightning.base import Wallet
from ..mint.crud import LedgerCrud
class Ledger:
@@ -449,6 +449,7 @@ class Ledger:
invoice_amount: int,
ln_fee_msat: int,
outputs: List[BlindedMessage],
keyset: Optional[MintKeyset] = None,
):
"""Generates a set of new promises (blinded signatures) from a set of blank outputs
(outputs with no or ignored amount) by looking at the difference between the Lightning
@@ -497,7 +498,7 @@ class Ledger:
outputs[i].amount = return_amounts_sorted[i]
if not self._verify_no_duplicate_outputs(outputs):
raise Exception("duplicate promises.")
return_promises = await self._generate_promises(outputs)
return_promises = await self._generate_promises(outputs, keyset)
return return_promises
else:
return []

View File

@@ -4,7 +4,7 @@ import click
import uvicorn
from click import Context
from cashu.core.settings import settings
from ..core.settings import settings
@click.command(

View File

@@ -1,5 +1,5 @@
from cashu.core.db import Database
from cashu.core.migrations import table_with_schema
from ..core.db import Database
from ..core.migrations import table_with_schema
async def m000_create_migrations_table(db):

View File

@@ -3,7 +3,7 @@ from typing import Dict, List, Union
from fastapi import APIRouter
from secp256k1 import PublicKey
from cashu.core.base import (
from ..core.base import (
BlindedMessage,
BlindedSignature,
CheckFeesRequest,
@@ -21,9 +21,9 @@ from cashu.core.base import (
PostSplitRequest,
PostSplitResponse,
)
from cashu.core.errors import CashuError
from cashu.core.settings import settings
from cashu.mint.startup import ledger
from ..core.errors import CashuError
from ..core.settings import settings
from ..mint.startup import ledger
router: APIRouter = APIRouter()

View File

@@ -6,13 +6,13 @@ import importlib
from loguru import logger
from cashu.core.db import Database
from cashu.core.migrations import migrate_databases
from cashu.core.settings import settings
from cashu.lightning.fake import FakeWallet # type: ignore
from cashu.lightning.lnbits import LNbitsWallet # type: ignore
from cashu.mint import migrations
from cashu.mint.ledger import Ledger
from ..core.db import Database
from ..core.migrations import migrate_databases
from ..core.settings import settings
from ..lightning.fake import FakeWallet # type: ignore
from ..lightning.lnbits import LNbitsWallet # type: ignore
from ..mint import migrations
from ..mint.ledger import Ledger
logger.debug("Enviroment Settings:")
for key, value in settings.dict().items():

View File

@@ -4,7 +4,7 @@ sys.tracebacklimit = None # type: ignore
from loguru import logger
from cashu.core.settings import settings
from ..core.settings import settings
# configure logger
logger.remove()

View File

View File

@@ -18,21 +18,20 @@ import click
from click import Context
from loguru import logger
from cashu.core.base import Proof, TokenV1, TokenV2, TokenV3
from cashu.core.helpers import sum_proofs
from cashu.core.migrations import migrate_databases
from cashu.core.settings import settings
from cashu.nostr.nostr.client.client import NostrClient
from cashu.tor.tor import TorProxy
from cashu.wallet import migrations
from cashu.wallet.crud import (
from ...core.base import Proof, TokenV1, TokenV2, TokenV3
from ...core.helpers import sum_proofs
from ...core.migrations import migrate_databases
from ...core.settings import settings
from ...nostr.nostr.client.client import NostrClient
from ...tor.tor import TorProxy
from ...wallet import migrations
from ...wallet.crud import (
get_keyset,
get_lightning_invoices,
get_reserved_proofs,
get_unused_locks,
)
from cashu.wallet.wallet import Wallet as Wallet
from ...wallet.wallet import Wallet as Wallet
from .cli_helpers import (
get_mint_wallet,
print_mint_balances,

View File

@@ -6,7 +6,7 @@ import click
from click import Context
from loguru import logger
from cashu.core.base import (
from ...core.base import (
Proof,
TokenV1,
TokenV2,
@@ -15,10 +15,10 @@ from cashu.core.base import (
TokenV3Token,
WalletKeyset,
)
from cashu.core.helpers import sum_proofs
from cashu.core.settings import settings
from cashu.wallet.crud import get_keyset
from cashu.wallet.wallet import Wallet as Wallet
from ...core.helpers import sum_proofs
from ...core.settings import settings
from ...wallet.crud import get_keyset
from ...wallet.wallet import Wallet as Wallet
async def verify_mint(mint_wallet: Wallet, url: str):

View File

@@ -6,16 +6,13 @@ import click
from click import Context
from requests.exceptions import ConnectionError
from cashu.core.settings import settings
from cashu.nostr.nostr.client.client import NostrClient
from cashu.nostr.nostr.event import Event
from cashu.nostr.nostr.key import PublicKey
from cashu.wallet.cli.cli_helpers import get_mint_wallet
from cashu.wallet.crud import (
get_nostr_last_check_timestamp,
set_nostr_last_check_timestamp,
)
from cashu.wallet.wallet import Wallet
from ...core.settings import settings
from ...nostr.nostr.client.client import NostrClient
from ...nostr.nostr.event import Event
from ...nostr.nostr.key import PublicKey
from ..crud import get_nostr_last_check_timestamp, set_nostr_last_check_timestamp
from ..wallet import Wallet
from .cli_helpers import get_mint_wallet
async def nip5_to_pubkey(wallet: Wallet, address: str):
@@ -113,7 +110,7 @@ async def receive_nostr(ctx: Context, verbose: bool):
)
try:
# call the receive method
from cashu.wallet.cli.cli import receive
from ...wallet.cli.cli import receive
asyncio.run(receive(ctx, decrypted_content, ""))
except Exception as e:

View File

@@ -1,8 +1,8 @@
import time
from typing import Any, List, Optional
from cashu.core.base import Invoice, KeyBase, P2SHScript, Proof, WalletKeyset
from cashu.core.db import Connection, Database
from ..core.base import Invoice, KeyBase, P2SHScript, Proof, WalletKeyset
from ..core.db import Connection, Database
async def store_proof(
@@ -10,7 +10,6 @@ async def store_proof(
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
"""
INSERT INTO proofs
@@ -25,7 +24,6 @@ async def get_proofs(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
"""
SELECT * from proofs
@@ -38,7 +36,6 @@ async def get_reserved_proofs(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
"""
SELECT * from proofs
@@ -53,7 +50,6 @@ async def invalidate_proof(
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
DELETE FROM proofs
@@ -75,8 +71,8 @@ async def invalidate_proof(
async def update_proof_reserved(
proof: Proof,
reserved: bool,
send_id: str = None,
db: Database = None,
send_id: str = "",
db: Optional[Database] = None,
conn: Optional[Connection] = None,
):
clauses = []
@@ -104,7 +100,6 @@ async def secret_used(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchone(
"""
SELECT * from proofs
@@ -120,7 +115,6 @@ async def store_p2sh(
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
"""
INSERT INTO p2sh
@@ -137,11 +131,10 @@ async def store_p2sh(
async def get_unused_locks(
address: str = None,
db: Database = None,
address: str = "",
db: Optional[Database] = None,
conn: Optional[Connection] = None,
):
clause: List[str] = []
args: List[str] = []
@@ -168,7 +161,7 @@ async def get_unused_locks(
async def update_p2sh_used(
p2sh: P2SHScript,
used: bool,
db: Database = None,
db: Optional[Database] = None,
conn: Optional[Connection] = None,
):
clauses = []
@@ -184,11 +177,10 @@ async def update_p2sh_used(
async def store_keyset(
keyset: WalletKeyset,
mint_url: str = None,
db: Database = None,
mint_url: str = "",
db: Optional[Database] = None,
conn: Optional[Connection] = None,
):
await (conn or db).execute( # type: ignore
"""
INSERT INTO keysets
@@ -209,7 +201,7 @@ async def store_keyset(
async def get_keyset(
id: str = "",
mint_url: str = "",
db: Database = None,
db: Optional[Database] = None,
conn: Optional[Connection] = None,
):
clauses = []
@@ -241,7 +233,6 @@ async def store_lightning_invoice(
invoice: Invoice,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
INSERT INTO invoices
@@ -262,7 +253,7 @@ async def store_lightning_invoice(
async def get_lightning_invoice(
db: Database,
hash: str = None,
hash: str = "",
conn: Optional[Connection] = None,
):
clauses = []
@@ -287,7 +278,7 @@ async def get_lightning_invoice(
async def get_lightning_invoices(
db: Database,
paid: bool = None,
paid: Optional[bool] = None,
conn: Optional[Connection] = None,
):
clauses: List[Any] = []
@@ -315,7 +306,7 @@ async def update_lightning_invoice(
db: Database,
hash: str,
paid: bool,
time_paid: int = None,
time_paid: Optional[int] = None,
conn: Optional[Connection] = None,
):
clauses = []

View File

@@ -1,4 +1,4 @@
from cashu.core.db import Database
from ..core.db import Database
async def m000_create_migrations_table(db):

View File

@@ -10,9 +10,9 @@ from typing import Dict, List, Optional
import requests
from loguru import logger
import cashu.core.b_dhke as b_dhke
import cashu.core.bolt11 as bolt11
from cashu.core.base import (
from ..core import b_dhke as b_dhke
from ..core import bolt11 as bolt11
from ..core.base import (
BlindedMessage,
BlindedSignature,
CheckFeesRequest,
@@ -35,20 +35,20 @@ from cashu.core.base import (
TokenV3Token,
WalletKeyset,
)
from cashu.core.bolt11 import Invoice as InvoiceBolt11
from cashu.core.db import Database
from cashu.core.helpers import sum_proofs
from cashu.core.script import (
from ..core.bolt11 import Invoice as InvoiceBolt11
from ..core.db import Database
from ..core.helpers import sum_proofs
from ..core.script import (
step0_carol_checksig_redeemscrip,
step0_carol_privkey,
step1_carol_create_p2sh_address,
step2_carol_sign_tx,
)
from cashu.core.secp import PrivateKey, PublicKey
from cashu.core.settings import settings
from cashu.core.split import amount_split
from cashu.tor.tor import TorProxy
from cashu.wallet.crud import (
from ..core.secp import PrivateKey, PublicKey
from ..core.settings import settings
from ..core.split import amount_split
from ..tor.tor import TorProxy
from ..wallet.crud import (
get_keyset,
get_proofs,
invalidate_proof,