Initial commit: WealthWise financial analytics platform
This commit is contained in:
100
backend/pyproject.toml
Normal file
100
backend/pyproject.toml
Normal file
@@ -0,0 +1,100 @@
|
||||
[tool.poetry]
|
||||
name = "wealthwise-backend"
|
||||
version = "1.0.0"
|
||||
description = "Production-grade FastAPI backend for WealthWise financial analytics platform"
|
||||
authors = ["WealthWise Team <team@wealthwise.app>"]
|
||||
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",
|
||||
]
|
||||
Reference in New Issue
Block a user