Files
nutshell/pyproject.toml
callebtc 6a0a370ba5 Mint: table locks (#566)
* clean up db

* db: table lock

* db.table_with_schema

* fix encrypt.py

* postgres nowait

* add timeout to lock

* melt quote state in db

* kinda working

* kinda working with postgres

* remove dispose

* getting there

* porperly clean up db for tests

* faster tests

* configure connection pooling

* try github with connection pool

* invoice dispatcher does not lock db

* fakewallet: pay_if_regtest waits

* pay fakewallet invoices

* add more

* faster

* slower

* pay_if_regtest async

* do not lock the invoice dispatcher

* test: do I get disk I/O errors if we disable the invoice_callback_dispatcher?

* fix fake so it workss without a callback dispatchert

* test on github

* readd tasks

* refactor

* increase time for lock invoice disatcher

* try avoiding a race

* remove task

* github actions: test regtest with postgres

* mint per module

* no connection pool for testing

* enable pool

* do not resend paid event

* reuse connection

* close db connections

* sessions

* enable debug

* dispose engine

* disable connection pool for tests

* enable connection pool for postgres only

* clean up shutdown routine

* remove wait for lightning fakewallet lightning invoice

* cancel invoice listener tasks on shutdown

* fakewallet conftest: decrease outgoing delay

* delay payment and set postgres only if needed

* disable fail fast for regtest

* clean up regtest.yml

* change order of tests_db.py

* row-specific mint_quote locking

* refactor

* fix lock statement

* refactor swap

* refactor

* remove psycopg2

* add connection string example to .env.example

* remove unnecessary pay

* shorter sleep in test_wallet_subscription_swap
2024-07-08 18:05:57 +02:00

104 lines
2.1 KiB
TOML

[tool.poetry]
name = "cashu"
version = "0.15.3"
description = "Ecash wallet and mint"
authors = ["calle <callebtc@protonmail.com>"]
license = "MIT"
[tool.poetry.dependencies]
python = "^3.8.1"
SQLAlchemy = {version = "1.4.52", extras = ["asyncio"]}
click = "^8.1.7"
pydantic = "^1.10.2"
bech32 = "^1.2.0"
fastapi = "^0.104.1"
environs = "^9.5.0"
uvicorn = "0.23.2"
loguru = "^0.7.0"
ecdsa = "^0.18.0"
bitstring = "^3.1.9"
secp256k1 = "^0.14.0"
h11 = "^0.14.0"
cryptography = "^41.0.3"
websocket-client = "^1.3.3"
pycryptodomex = "^3.16.0"
setuptools = "^68.1.2"
wheel = "^0.41.1"
importlib-metadata = "^6.8.0"
httpx = {extras = ["socks"], version = "^0.25.1"}
bip32 = "^3.4"
mnemonic = "^0.20"
bolt11 = "^2.0.5"
pre-commit = "^3.5.0"
websockets = "^12.0"
slowapi = "^0.1.9"
cbor2 = "^5.6.2"
asyncpg = "^0.29.0"
aiosqlite = "^0.20.0"
[tool.poetry.group.dev.dependencies]
pytest-asyncio = "^0.21.1"
pytest-cov = "^4.0.0"
pytest = "^7.4.0"
pre-commit = "^3.3.3"
fastapi-profiler = "^1.2.0"
respx = "^0.20.2"
ruff = "^0.2.1"
mypy = "^1.8.0"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.scripts]
mint = "cashu.mint.main:main"
cashu = "cashu.wallet.cli.cli:cli"
wallet-test = "tests.test_wallet:test"
[tool.ruff]
line-length = 88
show-fixes = true
[tool.ruff.lint]
# (`I`) means isorting
extend-select = ["I"]
ignore = []
# Allow autofix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []
# Exclude a variety of commonly ignored directories.
exclude = [
"cashu/nostr/*",
"cashu/core/bolt11.py",
".bzr",
".direnv",
".eggs",
".git",
".git-rewrite",
".hg",
".mypy_cache",
".nox",
".pants.d",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
]
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.lint.mccabe]
# Unlike Flake8, default to a complexity level of 10.
max-complexity = 10