[tool.poetry] name = "wealthwise-backend" version = "1.0.0" description = "Production-grade FastAPI backend for WealthWise financial analytics platform" authors = ["WealthWise Team "] readme = "README.md" packages = [{include = "app"}] [tool.poetry.dependencies] python = "^3.11" fastapi = "^0.109.0" uvicorn = {extras = ["standard"], version = "^0.27.0"} python-multipart = "^0.0.6" # Database sqlmodel = "^0.0.14" asyncpg = "^0.29.0" alembic = "^1.13.0" # Configuration & Validation pydantic = "^2.6.0" pydantic-settings = "^2.1.0" # Auth python-jose = {extras = ["cryptography"], version = "^3.3.0"} bcrypt = "^4.2.0" # Utilities python-dotenv = "^1.0.0" httpx = "^0.26.0" tenacity = "^8.2.3" # Monitoring & Logging structlog = "^24.1.0" sentry-sdk = {extras = ["fastapi"], version = "^1.40.0"} greenlet = "^3.3.1" email-validator = "^2.3.0" [tool.poetry.group.dev.dependencies] pytest = "^8.0.0" pytest-asyncio = "^0.23.4" pytest-cov = "^4.1.0" httpx = "^0.26.0" black = "^24.1.0" isort = "^5.13.0" flake8 = "^7.0.0" mypy = "^1.8.0" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 88 target-version = ["py311"] [tool.isort] profile = "black" line_length = 88 [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = false no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_equality = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = "-v --cov=app --cov-report=term-missing" [tool.coverage.run] source = ["app"] branch = true [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ]