at master 1.7 kB view raw
1{ 2 lib, 3 fetchFromGitHub, 4 buildPythonPackage, 5 unittestCheckHook, 6 flit-core, 7 numpy, 8 scipy, 9 10 # optional dependencies 11 clarabel, 12 cvxopt, 13 daqp, 14 ecos, 15 gurobipy, 16 jaxopt, 17 osqp, 18 quadprog, 19 scs, 20 highspy, 21 piqp, 22 proxsuite, 23}: 24buildPythonPackage rec { 25 pname = "qpsolvers"; 26 version = "4.8.1"; 27 pyproject = true; 28 29 src = fetchFromGitHub { 30 owner = "qpsolvers"; 31 repo = "qpsolvers"; 32 tag = "v${version}"; 33 hash = "sha256-wiFDsTE+L0J+6GsDz27Xh20eXvtV6KDa2CLGQDYzIGM="; 34 }; 35 36 build-system = [ flit-core ]; 37 38 pythonImportsCheck = [ "qpsolvers" ]; 39 40 dependencies = [ 41 numpy 42 scipy 43 ]; 44 45 optional-dependencies = { 46 # FIXME commented out solvers have not been packaged yet 47 clarabel = [ clarabel ]; 48 cvxopt = [ cvxopt ]; 49 daqp = [ daqp ]; 50 ecos = [ ecos ]; 51 gurobi = [ gurobipy ]; 52 highs = [ highspy ]; 53 jaxopt = [ jaxopt ]; 54 # mosek = [ cvxopt mosek ]; 55 osqp = [ osqp ]; 56 piqp = [ piqp ]; 57 proxqp = [ proxsuite ]; 58 # qpalm = [ qpalm ]; 59 quadprog = [ quadprog ]; 60 scs = [ scs ]; 61 open_source_solvers = 62 with optional-dependencies; 63 lib.flatten [ 64 clarabel 65 cvxopt 66 daqp 67 ecos 68 highs 69 osqp 70 piqp 71 proxqp 72 # qpalm 73 quadprog 74 scs 75 ]; 76 }; 77 78 nativeCheckInputs = [ unittestCheckHook ] ++ optional-dependencies.open_source_solvers; 79 80 meta = with lib; { 81 changelog = "https://github.com/qpsolvers/qpsolvers/blob/${src.tag}/CHANGELOG.md"; 82 description = "Quadratic programming solvers in Python with a unified API"; 83 homepage = "https://github.com/qpsolvers/qpsolvers"; 84 license = licenses.lgpl3Plus; 85 maintainers = with maintainers; [ renesat ]; 86 }; 87}