[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 = "^1.3.24"
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"
sqlalchemy-aio = "^0.17.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"
psycopg2-binary = { version = "^2.9.7", optional = true }
httpx = {extras = ["socks"], version = "^0.25.1"}
bip32 = "^3.4"
mnemonic = "^0.20"
bolt11 = "^2.0.5"
pre-commit = "^3.5.0"
slowapi = "^0.1.9"

[tool.poetry.extras]
pgsql = ["psycopg2-binary"]

[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
