pyproject.toml 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. [tool.poetry]
  2. name = "app"
  3. version = "0.2.0"
  4. description = "fastapi template for "
  5. authors = ["Admin <admin@example.com>"]
  6. [tool.poetry.dependencies]
  7. python = "^3.10"
  8. uvicorn = {extras = ["standard"], version = "^0.24.0.post1"}
  9. fastapi = "^0.109.1"
  10. python-multipart = "^0.0.7"
  11. email-validator = "^2.1.0.post1"
  12. passlib = {extras = ["bcrypt"], version = "^1.7.4"}
  13. tenacity = "^8.2.3"
  14. pydantic = ">2.0"
  15. emails = "^0.6"
  16. gunicorn = "^21.2.0"
  17. jinja2 = "^3.1.2"
  18. alembic = "^1.12.1"
  19. python-jose = {extras = ["cryptography"], version = "^3.3.0"}
  20. httpx = "^0.25.1"
  21. psycopg = {extras = ["binary"], version = "^3.1.13"}
  22. sqlmodel = "^0.0.16"
  23. # Pin bcrypt until passlib supports the latest
  24. bcrypt = "4.0.1"
  25. pydantic-settings = "^2.2.1"
  26. sentry-sdk = {extras = ["fastapi"], version = "^1.40.6"}
  27. [tool.poetry.group.dev.dependencies]
  28. pytest = "^7.4.3"
  29. mypy = "^1.8.0"
  30. ruff = "^0.2.2"
  31. pre-commit = "^3.6.2"
  32. types-python-jose = "^3.3.4.20240106"
  33. types-passlib = "^1.7.7.20240106"
  34. coverage = "^7.4.3"
  35. [tool.isort]
  36. multi_line_output = 3
  37. include_trailing_comma = true
  38. force_grid_wrap = 0
  39. line_length = 88
  40. [build-system]
  41. requires = ["poetry>=0.12"]
  42. build-backend = "poetry.masonry.api"
  43. [tool.mypy]
  44. strict = true
  45. exclude = ["venv", "alembic"]
  46. [tool.ruff]
  47. target-version = "py310"
  48. [tool.ruff.lint]
  49. select = [
  50. "E", # pycodestyle errors
  51. "W", # pycodestyle warnings
  52. "F", # pyflakes
  53. "I", # isort
  54. "B", # flake8-bugbear
  55. "C4", # flake8-comprehensions
  56. "UP", # pyupgrade
  57. ]
  58. ignore = [
  59. "E501", # line too long, handled by black
  60. "B008", # do not perform function calls in argument defaults
  61. "W191", # indentation contains tabs
  62. "B904", # Allow raising exceptions without from e, for HTTPException
  63. ]
  64. [tool.ruff.lint.pyupgrade]
  65. # Preserve types, even if a file imports `from __future__ import annotations`.
  66. keep-runtime-typing = true