[project] name = "routstr" version = "0.4.4" 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", "h11>=0.14", "greenlet>=3.2.1", "alembic>=1.13", "python-json-logger>=2.0.0", "cashu>=0.20", "marshmallow>=3.13,<4.0", "websockets>=12.0", "nostr>=0.0.2", "mdurl==0.1.2", "pillow>=10", "openai>=1.98.0", "litellm>=1.55.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", "requires_docker: marks tests that require Docker services running (deselect with '-m \"not requires_docker\"')", "performance: marks tests that measure performance metrics", ] [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools] packages = ["routstr"] [tool.ruff.lint] select = ["E", "F", "I"] ignore = ["E501"] exclude = ["examples"] [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] routstr = { workspace = true }