[project] name = "routstr" version = "0.1.0" description = "Payment proxy for your LLM endpoint using cashu and nostr." readme = "README.md" requires-python = ">=3.11" dependencies = [ "fastapi[standard]>=0.115", "aiosqlite>=0.20", "sqlmodel>=0.0.24", "httpx[socks]>=0.25.2", "greenlet>=3.2.1", "python-json-logger>=2.0.0", "cashu", "secp256k1", "marshmallow>=3.13,<4.0", ] [dependency-groups] dev = [ "mypy>=1.15.0", "ruff>=0.11.6", "openai>=1.76.0", "pytest>=8.0.0", "pytest-asyncio>=0.24.0", "pytest-cov>=6.1.1", "httpx>=0.25.2", "psutil>=5.9.0", "aiohttp>=3.9.0", "pytest-benchmark>=4.0.0", "routstr", ] [tool.pytest.ini_options] testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" addopts = [ "-v", "--tb=short", "--strict-markers", "--disable-warnings", "-p", "no:warnings", ] markers = [ "asyncio: marks tests as async (deselect with '-m \"not asyncio\"')", "integration: marks tests as integration tests (deselect with '-m \"not integration\"')", "unit: marks tests as unit tests", "slow: marks tests as slow running (deselect with '-m \"not slow\"')", "requires_real_mint: marks tests that require a running Cashu mint instance", ] [tool.ruff.lint] select = ["E", "F", "I"] ignore = ["E501"] [tool.mypy] python_version = "3.11" ignore_missing_imports = true disallow_untyped_defs = true check_untyped_defs = true disallow_untyped_calls = true disallow_incomplete_defs = true disallow_untyped_decorators = true [tool.uv.sources] secp256k1 = { git = "https://github.com/saschanaz/secp256k1-py", branch = "upgrade060" } routstr = { workspace = true } [tool.uv.workspace] members = [ ".", ]