content: [project]
  authors = [
      {name = "Admin", email = "admin@example.com"},
  ]
  requires-python = ">=3.10,<4.0"
  dependencies = [
      "fastapi[standard]<1.0.0,>=0.114.2",
      "python-multipart<1.0.0,>=0.0.7",
      "email-validator<3.0.0.0,>=2.1.0.post1",
      "passlib[bcrypt]<2.0.0,>=1.7.4",
      "tenacity<9.0.0,>=8.2.3",
      "pydantic>2.0",
      "emails<1.0,>=0.6",
      "jinja2<4.0.0,>=3.1.4",
      "alembic<2.0.0,>=1.12.1",
      "httpx<1.0.0,>=0.25.1",
      "psycopg[binary]<4.0.0,>=3.1.13",
      # Pin bcrypt until passlib supports the latest
      "bcrypt==4.3.0",
      "pydantic-settings<3.0.0,>=2.2.1",
      "sentry-sdk[fastapi]<2.0.0,>=1.40.6",
      "pyjwt<3.0.0,>=2.8.0",
      "requests<3.0.0,>=2.28.1",
      "raven<7.0.0,>=6.10.0",
      "psycopg2-binary<3.0.0,>=2.9.3",
      "sqlalchemy<2.0.0,>=1.4.40",
      "python-jose[cryptography]<4.0.0,>=3.3.0",
      "asyncpg<1.0.0,>=0.27.0",
      "pytest-asyncio<1.0.0,>=0.20.3",
      "httpx>=0.23.1,<1.0.0",
      "faker<20.0.0,>=19.3.1",
      "fuzzywuzzy>=0.18.0,<1.0.0",
      "openai>=1.64.0",
      "filetype>=1.2.0",
      "phonenumbers>=9.0.0",
      "cryptography>=44.0.1",
      "upstash-redis>=1.4.0",
      "fastapi-pagination>=0.13.3",
      "uvicorn>=0.35.0",
      "pandas>=2.3.0",
  ]
  name = "app"
  version = "0.1.0"
  description = ""
  
  [tool.uv]
  dev-dependencies = [
      "pytest<8.0.0,>=7.4.3",
      "mypy<2.0.0,>=1.8.0",
      "ruff<1.0.0,>=0.2.2",
      "pre-commit<4.0.0,>=3.6.2",
      "types-passlib<2.0.0.0,>=1.7.7.20240106",
      "coverage<8.0.0,>=7.4.3",
  ]
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.mypy]
  strict = true
  exclude = ["venv", ".venv", "alembic"]
  
  [tool.ruff]
  target-version = "py310"
  exclude = ["alembic"]
  
  [tool.ruff.lint]
  select = [
      "E",  # pycodestyle errors
      "W",  # pycodestyle warnings
      "F",  # pyflakes
      "I",  # isort
      "B",  # flake8-bugbear
      "C4", # flake8-comprehensions
      "UP", # pyupgrade
      "ARG001", # unused arguments in functions
  ]
  ignore = [
      "E501", # line too long, handled by black
      "B008", # do not perform function calls in argument defaults
      "W191", # indentation contains tabs
      "B904", # Allow raising exceptions without from e, for HTTPException
  ]
  
  [tool.ruff.lint.pyupgrade]
  # Preserve types, even if a file imports `from __future__ import annotations`.
  keep-runtime-typing = true
  