# HR-ATS-Portal backend dependencies.
#   pip install -r backend/requirements.txt
# Versions are the ones this backend is currently developed and verified against.

# --- web framework ---------------------------------------------------------
fastapi==0.136.1
uvicorn==0.47.0

# --- database --------------------------------------------------------------
sqlalchemy==2.0.51
sqlmodel==0.0.38
alembic==1.18.4
asyncpg==0.31.0            # async driver used by the app (postgresql+asyncpg)
psycopg2-binary==2.9.12    # sync driver for db_setup.url(async_driver=False)

# --- settings and validation ----------------------------------------------
pydantic==2.12.4
pydantic-settings==2.12.0  # db_setup.Settings
python-dotenv==1.2.1
email-validator==2.3.0     # required by pydantic EmailStr in users/app.py

# --- auth ------------------------------------------------------------------
PyJWT==2.10.1              # access/refresh token encode+decode in users/plugins.py
python-multipart==0.0.20   # required by OAuth2PasswordRequestForm in users/app.py

# --- other -----------------------------------------------------------------
httpx==0.28.1              # Graph email (inbox) + Teams mail send (forget_password/plugins.py)
bcrypt==5.0.0              # password hashing in users/plugins.py

# --- PDF extraction --------------------------------------------------------
pypdf==5.1.0

# --- task queue ------------------------------------------------------------
taskiq>=0.11,<0.12         # broker + worker/scheduler CLI (taskiq_management/)
taskiq-redis>=1.0,<2.0     # RedisStreamBroker / result backend / schedule source
redis>=5.0,<6.0            # DLQ middleware (taskiq_management/middleware.py) async client

# --- LLM -------------------------------------------------------------------
openai==2.53.0             # AsyncOpenAI client in llm_setup.py
langgraph==1.2.10          # StateGraph agent framework in agent/agent_setup.py

# --- ATS scoring -----------------------------------------------------------
# The bulk-ats scoring engine (app.services.pdf / llm / scoring) is installed
# editable from the repo root — run once per environment:
#   pip install -e ..
# Its dependencies are already satisfied by the pins above.
openpyxl==3.1.5
