compas >=2.14.1
compas_cgal >=0.9.1
compas_dem >=0.6.0
compas_libigl >=0.7.6
compas_rui >=0.6
compas_session >=0.7
compas_tna >=0.7
compas_tno >=0.3
compas_lmgc90 >=0.1.11
compas_rbe
compas_3dec >=0.2.0

# compas_cra 0.8.0 replaced the pyomo + external-ipopt path with an in-process
# native IPOPT binding (compas_cra._native). It needs no ipopt on PATH and ships
# wheels for cp39-cp313 on macOS (arm64 + x86_64), manylinux and win_amd64, each
# carrying the compiled solver -- so Rhino 8 installs it unaided on every
# platform. Do NOT lower this pin to "fix" an install: 0.5.0-0.7.0 have been
# removed from PyPI, and 0.4.0 breaks under NumPy 2.
compas_cra >=0.8.0

# compas_dem's analysis/cra.py imports pyomo.environ to monkeypatch SolverFactory
# and inject DEFAULT_IPOPT_OPTIONS. compas_cra 0.8.0 never calls pyomo, so that
# patch is now a no-op -- but the import still runs, so a CRA solve dies with
# ModuleNotFoundError without pyomo present. Measured cost of the lost options on
# the 20-block test arch: 1.8e-07 relative, IPOPT reporting "acceptable" where
# 0.5.0 reported "optimal". Keep this until compas_dem drops the patch upstream.
pyomo >=6.7.3,<6.9
