pydantic<3,>=2.0.0
pyomo<7,>=6.0.0
numpy<3,>=1.20.0
pandas<3,>=1.3.0
pyyaml<7,>=6.0.0
highspy<2,>=1.0.0
idaes-pse<3,>=2.5.0

[all]
pyoptima[api,cli,docs,postgres,ui,worker]

[api]
fastapi<1,>=0.104.0
uvicorn[standard]<1,>=0.24.0
pydantic-settings<3,>=2.0.0
python-multipart<1,>=0.0.6
PyJWT<3,>=2.8.0
httpx<1,>=0.24.0

[cli]
rich<15,>=13.0.0

[cplex]
cplex<23,>=22.1

[dev]
pyoptima[all]
pytest>=7.0.0
pytest-asyncio>=0.21.0
pytest-cov>=4.0.0
pytest-timeout>=2.1.0
ruff>=0.9.0
mypy>=1.0.0
pre-commit>=3.0.0
build>=0.10.0
twine>=4.0.0
jupyterlab>=4.0.0
ipykernel>=6.0.0
matplotlib>=3.5.0
osqp<2,>=0.6
scipy<2,>=1.7

[docs]
mkdocs<2,>=1.5.3
mkdocs-material<10,>=9.5.0
mkdocstrings[python]<1,>=0.24.0
pymdown-extensions<11,>=10.0.0

[gurobi]
gurobipy<13,>=10.0

[osqp]
osqp<2,>=0.6
scipy<2,>=1.7

[postgres]
psycopg[binary]<4,>=3.1.0

[ui]
fastapi<1,>=0.104.0
uvicorn[standard]<1,>=0.24.0
httpx<1,>=0.24.0
aiofiles<25,>=23.0.0

[worker]
sqlalchemy<3,>=2.0.0
alembic<2,>=1.13.0
