scs 3.2.7.post2__tar.gz → 3.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. {scs-3.2.7.post2 → scs-3.2.9}/.bumpversion.cfg +1 -2
  2. {scs-3.2.7.post2 → scs-3.2.9}/.github/workflows/build.yml +30 -39
  3. {scs-3.2.7.post2 → scs-3.2.9}/.gitignore +4 -0
  4. scs-3.2.9/.gitmodules +6 -0
  5. {scs-3.2.7.post2 → scs-3.2.9}/PKG-INFO +16 -4
  6. {scs-3.2.7.post2 → scs-3.2.9}/README.md +1 -2
  7. {scs-3.2.7.post2 → scs-3.2.9}/legacy_setup.py +23 -1
  8. scs-3.2.9/meson.build +253 -0
  9. scs-3.2.9/meson.options +27 -0
  10. scs-3.2.9/pixi.toml +12 -0
  11. {scs-3.2.7.post2 → scs-3.2.9}/pyproject.toml +23 -4
  12. {scs-3.2.7.post2/scs → scs-3.2.9/scs/py}/__init__.py +18 -9
  13. scs-3.2.9/scs/pythoncapi-compat/.github/workflows/build.yml +122 -0
  14. scs-3.2.9/scs/pythoncapi-compat/.gitignore +5 -0
  15. scs-3.2.9/scs/pythoncapi-compat/.readthedocs.yaml +12 -0
  16. scs-3.2.9/scs/pythoncapi-compat/CODE_OF_CONDUCT.md +11 -0
  17. scs-3.2.9/scs/pythoncapi-compat/COPYING +14 -0
  18. scs-3.2.9/scs/pythoncapi-compat/README.rst +55 -0
  19. scs-3.2.9/scs/pythoncapi-compat/docs/Makefile +20 -0
  20. scs-3.2.9/scs/pythoncapi-compat/docs/api.rst +796 -0
  21. scs-3.2.9/scs/pythoncapi-compat/docs/changelog.rst +191 -0
  22. scs-3.2.9/scs/pythoncapi-compat/docs/conf.py +53 -0
  23. scs-3.2.9/scs/pythoncapi-compat/docs/index.rst +29 -0
  24. scs-3.2.9/scs/pythoncapi-compat/docs/links.rst +29 -0
  25. scs-3.2.9/scs/pythoncapi-compat/docs/make.bat +35 -0
  26. scs-3.2.9/scs/pythoncapi-compat/docs/tests.rst +17 -0
  27. scs-3.2.9/scs/pythoncapi-compat/docs/upgrade.rst +168 -0
  28. scs-3.2.9/scs/pythoncapi-compat/docs/users.rst +74 -0
  29. scs-3.2.9/scs/pythoncapi-compat/pythoncapi_compat.h +2270 -0
  30. scs-3.2.9/scs/pythoncapi-compat/runtests.py +122 -0
  31. scs-3.2.9/scs/pythoncapi-compat/tests/__init__.py +0 -0
  32. scs-3.2.9/scs/pythoncapi-compat/tests/setup.py +110 -0
  33. scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat.py +220 -0
  34. scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat_cext.c +2412 -0
  35. scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat_cppext.cpp +4 -0
  36. scs-3.2.9/scs/pythoncapi-compat/tests/test_upgrade_pythoncapi.py +962 -0
  37. scs-3.2.9/scs/pythoncapi-compat/tests/utils.py +41 -0
  38. scs-3.2.9/scs/pythoncapi-compat/upgrade_pythoncapi.py +752 -0
  39. {scs-3.2.7.post2 → scs-3.2.9}/scs/scsmodule.h +6 -0
  40. {scs-3.2.7.post2 → scs-3.2.9}/scs/scsobject.h +9 -7
  41. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.bumpversion.cfg +1 -2
  42. scs-3.2.9/scs_source/.github/workflows/build.yml +82 -0
  43. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/build_mkl.yml +1 -1
  44. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/build_openmp.yml +1 -1
  45. scs-3.2.9/scs_source/.github/workflows/build_spectral.yml +36 -0
  46. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/buildpp.yml +3 -3
  47. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake.yml +2 -2
  48. scs-3.2.9/scs_source/.github/workflows/cmake_cudss.yml +36 -0
  49. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake_mkl.yml +1 -1
  50. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake_openmp.yml +1 -1
  51. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/coverage.yml +1 -1
  52. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/docs.yml +3 -3
  53. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/gpu.yml +11 -2
  54. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/valgrind.yml +1 -1
  55. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.gitignore +1 -0
  56. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/CITATION.cff +2 -2
  57. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/CMakeLists.txt +136 -6
  58. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/Makefile +53 -3
  59. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/README.md +1 -1
  60. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/scs_types.h.in +4 -5
  61. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/Doxyfile +1 -1
  62. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/cones.rst +42 -19
  63. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/index.rst +3 -0
  64. scs-3.2.9/scs_source/docs/src/api/javascript.rst +190 -0
  65. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/citing/index.rst +1 -1
  66. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/conf.py +1 -1
  67. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/contributing/index.rst +0 -1
  68. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/index.rst +3 -0
  69. scs-3.2.9/scs_source/docs/src/examples/javascript.rst +241 -0
  70. scs-3.2.9/scs_source/docs/src/examples/javascript_disc.html +316 -0
  71. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.py +1 -1
  72. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/index.rst +1 -1
  73. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/c.rst +32 -1
  74. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/index.rst +3 -0
  75. scs-3.2.9/scs_source/docs/src/install/javascript.rst +50 -0
  76. scs-3.2.9/scs_source/docs/src/install/python.rst +51 -0
  77. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/linear_solver/index.rst +17 -0
  78. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/cones.h +47 -2
  79. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/glbopts.h +1 -1
  80. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs.h +29 -0
  81. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_blas.h +4 -0
  82. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_types.h +3 -1
  83. scs-3.2.9/scs_source/include/util_spectral_cones.h +45 -0
  84. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/direct/private.c +3 -3
  85. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/direct/private.h +2 -1
  86. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/csparse.c +1 -1
  87. scs-3.2.9/scs_source/linsys/cudss/direct/private.c +279 -0
  88. scs-3.2.9/scs_source/linsys/cudss/direct/private.h +63 -0
  89. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_1.c +1 -1
  90. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_2.c +44 -44
  91. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_aat.c +5 -5
  92. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_dump.c +12 -12
  93. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_post_tree.c +3 -3
  94. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_postorder.c +8 -8
  95. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_valid.c +5 -5
  96. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl_types.h +1 -1
  97. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/indirect/private.c +14 -21
  98. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/scs.mk +17 -2
  99. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/aa.c +8 -12
  100. scs-3.2.9/scs_source/src/cones.c +1623 -0
  101. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/rw.c +15 -1
  102. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/scs.c +4 -0
  103. scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_IPM.c +660 -0
  104. scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_Newton.c +279 -0
  105. scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_wrapper.c +205 -0
  106. scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/logdet_cone.c +143 -0
  107. scs-3.2.9/scs_source/src/spectral_cones/nuclear/ell1_cone.c +221 -0
  108. scs-3.2.9/scs_source/src/spectral_cones/nuclear/nuclear_cone.c +99 -0
  109. scs-3.2.9/scs_source/src/spectral_cones/sum-largest/sum_largest_cone.c +196 -0
  110. scs-3.2.9/scs_source/src/spectral_cones/sum-largest/sum_largest_eval_cone.c +140 -0
  111. scs-3.2.9/scs_source/src/spectral_cones/util_spectral_cones.c +52 -0
  112. scs-3.2.9/scs_source/test/problems/complex_PSD.h +83 -0
  113. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/rng.h +4 -4
  114. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/run_tests.c +25 -0
  115. scs-3.2.9/scs_source/test/spectral_cones_problems/exp_design.h +141 -0
  116. scs-3.2.9/scs_source/test/spectral_cones_problems/graph_partitioning.h +275 -0
  117. scs-3.2.9/scs_source/test/spectral_cones_problems/robust_pca.h +253 -0
  118. scs-3.2.9/scs_source/test/spectral_cones_problems/several_logdet_cones.h +222 -0
  119. scs-3.2.9/scs_source/test/spectral_cones_problems/several_nuc_cone.h +285 -0
  120. scs-3.2.9/scs_source/test/spectral_cones_problems/several_sum_largest.h +420 -0
  121. scs-3.2.9/test/test_solve_random_cone_prob_cudss.py +82 -0
  122. {scs-3.2.7.post2 → scs-3.2.9}/test/test_solve_random_cone_prob_mkl.py +1 -1
  123. scs-3.2.7.post2/.gitmodules +0 -3
  124. scs-3.2.7.post2/meson.build +0 -195
  125. scs-3.2.7.post2/meson.options +0 -9
  126. scs-3.2.7.post2/scs_source/.github/workflows/build.yml +0 -45
  127. scs-3.2.7.post2/scs_source/docs/src/install/python.rst +0 -54
  128. scs-3.2.7.post2/scs_source/src/cones.c +0 -834
  129. {scs-3.2.7.post2 → scs-3.2.9}/.github/ISSUE_TEMPLATE.md +0 -0
  130. {scs-3.2.7.post2 → scs-3.2.9}/.github/dependabot.yml +0 -0
  131. {scs-3.2.7.post2 → scs-3.2.9}/LICENSE +0 -0
  132. {scs-3.2.7.post2 → scs-3.2.9}/distribute.sh +0 -0
  133. {scs-3.2.7.post2 → scs-3.2.9}/notebooks/analyze_csv_logs.ipynb +0 -0
  134. {scs-3.2.7.post2 → scs-3.2.9}/notebooks/scs_benchmarks.ipynb +0 -0
  135. {scs-3.2.7.post2 → scs-3.2.9}/notebooks/scs_qp.ipynb +0 -0
  136. {scs-3.2.7.post2 → scs-3.2.9}/scs/scspy.c +0 -0
  137. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/ISSUE_TEMPLATE.md +0 -0
  138. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/dependabot.yml +0 -0
  139. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/LICENSE.txt +0 -0
  140. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/AddInstallRPATHSupport.cmake +0 -0
  141. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/AddUninstallTarget.cmake +0 -0
  142. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/InstallBasicPackageFiles.cmake +0 -0
  143. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/Makefile +0 -0
  144. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/css/scs_theme.css +0 -0
  145. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/favicon.ico +0 -0
  146. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/scs_logo.png +0 -0
  147. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/scs_logo_transparent.png +0 -0
  148. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/acceleration.rst +0 -0
  149. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/equilibration.rst +0 -0
  150. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/index.rst +0 -0
  151. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/relaxation.rst +0 -0
  152. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/scale.rst +0 -0
  153. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/warm_start.rst +0 -0
  154. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/c.rst +0 -0
  155. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/compile_flags.rst +0 -0
  156. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/exit_flags.rst +0 -0
  157. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/info.rst +0 -0
  158. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/julia.rst +0 -0
  159. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/matlab.rst +0 -0
  160. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/matrices.rst +0 -0
  161. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/python.rst +0 -0
  162. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/r.rst +0 -0
  163. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/ruby.rst +0 -0
  164. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/settings.rst +0 -0
  165. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/blas_lapack/index.rst +0 -0
  166. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/.gitignore +0 -0
  167. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/c.rst +0 -0
  168. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/julia.rst +0 -0
  169. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/matlab.rst +0 -0
  170. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/basic_qp.rst +0 -0
  171. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.py +0 -0
  172. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.py.out +0 -0
  173. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.rst +0 -0
  174. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.py +0 -0
  175. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.py.out +0 -0
  176. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.rst +0 -0
  177. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.py +0 -0
  178. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.py.out +0 -0
  179. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.rst +0 -0
  180. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.py.out +0 -0
  181. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.rst +0 -0
  182. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/qp.py +0 -0
  183. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/qp.py.out +0 -0
  184. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python.rst +0 -0
  185. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.c +0 -0
  186. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.c.out +0 -0
  187. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.m +0 -0
  188. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.m.out +0 -0
  189. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.prob +0 -0
  190. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/r.rst +0 -0
  191. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/ruby.rst +0 -0
  192. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/qp_solvers_benchmark.png +0 -0
  193. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows1.png +0 -0
  194. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows2.png +0 -0
  195. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows3.png +0 -0
  196. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/help/index.rst +0 -0
  197. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/julia.rst +0 -0
  198. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/matlab.rst +0 -0
  199. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/r.rst +0 -0
  200. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/ruby.rst +0 -0
  201. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/make.bat +0 -0
  202. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/requirements.txt +0 -0
  203. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/aa.h +0 -0
  204. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/ctrlc.h +0 -0
  205. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/linalg.h +0 -0
  206. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/linsys.h +0 -0
  207. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/normalize.h +0 -0
  208. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/rw.h +0 -0
  209. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_work.h +0 -0
  210. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/util.h +0 -0
  211. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/indirect/private.c +0 -0
  212. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/indirect/private.h +0 -0
  213. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/csparse.h +0 -0
  214. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/LICENSE.txt +0 -0
  215. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/SuiteSparse_config.c +0 -0
  216. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/SuiteSparse_config.h +0 -0
  217. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd.h +0 -0
  218. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_control.c +0 -0
  219. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_defaults.c +0 -0
  220. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_global.c +0 -0
  221. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_info.c +0 -0
  222. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_internal.h +0 -0
  223. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_order.c +0 -0
  224. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_preprocess.c +0 -0
  225. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/changes +0 -0
  226. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/LICENSE +0 -0
  227. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/README.md +0 -0
  228. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/changes +0 -0
  229. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl.c +0 -0
  230. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl.h +0 -0
  231. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/gpu.c +0 -0
  232. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/gpu.h +0 -0
  233. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/indirect/private.h +0 -0
  234. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/mkl/direct/private.c +0 -0
  235. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/mkl/direct/private.h +0 -0
  236. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/scs_matrix.c +0 -0
  237. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/scs_matrix.h +0 -0
  238. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/ctrlc.c +0 -0
  239. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/exp_cone.c +0 -0
  240. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/linalg.c +0 -0
  241. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/normalize.c +0 -0
  242. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/scs_version.c +0 -0
  243. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/util.c +0 -0
  244. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/minunit.h +0 -0
  245. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problem_utils.h +0 -0
  246. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/degenerate.h +0 -0
  247. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/hs21_tiny_qp.h +0 -0
  248. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/hs21_tiny_qp_rw.h +0 -0
  249. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/infeasible_tiny_qp.h +0 -0
  250. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/max_ent +0 -0
  251. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/max_ent.h +0 -0
  252. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug.h +0 -0
  253. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug1 +0 -0
  254. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug2 +0 -0
  255. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug3 +0 -0
  256. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/qafiro_tiny_qp.h +0 -0
  257. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/random_prob +0 -0
  258. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/random_prob.h +0 -0
  259. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/rob_gauss_cov_est.h +0 -0
  260. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/small_lp.h +0 -0
  261. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/small_qp.h +0 -0
  262. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_exp_cone.h +0 -0
  263. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_prob_from_data_file.h +0 -0
  264. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_validation.h +0 -0
  265. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/unbounded_tiny_qp.h +0 -0
  266. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/random_socp_prob.c +0 -0
  267. {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/run_from_file.c +0 -0
  268. {scs-3.2.7.post2 → scs-3.2.9}/test/gen_random_cone_prob.py +0 -0
  269. {scs-3.2.7.post2 → scs-3.2.9}/test/solve_random_cone_prob.py +0 -0
  270. {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_basic.py +0 -0
  271. {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_object.py +0 -0
  272. {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_quad.py +0 -0
  273. {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_rand.py +0 -0
  274. {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_sdp.py +0 -0
  275. {scs-3.2.7.post2 → scs-3.2.9}/test/test_solve_random_cone_prob.py +0 -0
@@ -1,7 +1,6 @@
1
1
  [bumpversion]
2
- current_version = 3.2.7
2
+ current_version = 3.2.9
3
3
 
4
4
  [bumpversion:file:legacy_setup.py]
5
5
 
6
6
  [bumpversion:file:pyproject.toml]
7
-
@@ -25,22 +25,22 @@ jobs:
25
25
  PYTHON_VERSION: ${{ matrix.python-version }}
26
26
 
27
27
  steps:
28
- - uses: actions/checkout@v4
28
+ - uses: actions/checkout@v5
29
29
  with:
30
30
  submodules: recursive
31
- - uses: conda-incubator/setup-miniconda@v3
31
+ - uses: prefix-dev/setup-pixi@v0.9.1
32
32
  with:
33
- auto-update-conda: true
34
- python-version: ${{ matrix.python-version }}
35
- miniforge-version: latest
36
- channels: conda-forge,anaconda
33
+ cache: false
34
+ pixi-version: v0.46.0
35
+ - name: Add .pixi/envs/default to the $PATH
36
+ run: echo "$(pwd)/.pixi/envs/default/bin" >> $GITHUB_PATH
37
+ shell: bash
37
38
  - name: Install dependencies
38
- run: |
39
- conda install scipy numpy pytest 'setuptools<=60'
39
+ run: pixi add scipy numpy pip pytest meson meson-python openblas python==${{ matrix.python-version }}
40
40
  - name: Test
41
41
  run: |
42
- python legacy_setup.py install --scs --openmp
43
- pytest
42
+ pixi r python -m pip install -v . --no-build-isolation -Csetup-args=-Duse_openmp=true
43
+ pixi r pytest
44
44
  rm -rf build/
45
45
 
46
46
  build_mkl:
@@ -51,9 +51,7 @@ jobs:
51
51
  strategy:
52
52
  fail-fast: false
53
53
  matrix:
54
- # macos-13 runners have intel chips. macos-14 and above
55
- # runners have Apple silicon chips.
56
- os: [ ubuntu-latest, macos-13, windows-latest ]
54
+ os: [ ubuntu-latest ]
57
55
  python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13"]
58
56
  link_mkl: [true]
59
57
 
@@ -62,7 +60,7 @@ jobs:
62
60
  LINK_MKL: ${{ matrix.link_mkl }}
63
61
 
64
62
  steps:
65
- - uses: actions/checkout@v4
63
+ - uses: actions/checkout@v5
66
64
  with:
67
65
  submodules: recursive
68
66
 
@@ -70,12 +68,13 @@ jobs:
70
68
  shell: bash
71
69
  run: |
72
70
  echo "PYTHON_SUBVERSION=$(echo $PYTHON_VERSION | cut -c 3-)" >> $GITHUB_ENV
73
- - uses: conda-incubator/setup-miniconda@v3
71
+ - uses: prefix-dev/setup-pixi@v0.9.1
74
72
  with:
75
- auto-update-conda: true
76
- python-version: ${{ matrix.python-version }}
77
- miniforge-version: latest
78
- channels: conda-forge,anaconda
73
+ cache: false
74
+ pixi-version: v0.46.0
75
+ - name: Add .pixi/envs/default to the $PATH
76
+ run: echo "$(pwd)/.pixi/envs/default/bin" >> $GITHUB_PATH
77
+ shell: bash
79
78
  - name: Install dependencies
80
79
  run: |
81
80
  if [[ "$LINK_MKL" == "true" ]]; then
@@ -83,26 +82,19 @@ jobs:
83
82
  else
84
83
  BLAS_PKGS="blas-devel=*=*openblas"
85
84
  fi
86
- if [[ "$PYTHON_VERSION" == "3.9" ]]; then
87
- conda install scipy=1.5 numpy=1.19 pytest $BLAS_PKGS pkg-config
88
- elif [[ "$PYTHON_VERSION" == "3.10" ]]; then
89
- conda install scipy=1.7 numpy=1.21 pytest $BLAS_PKGS pkg-config
90
- elif [[ "$PYTHON_VERSION" == "3.11" ]]; then
91
- conda install scipy=1.9.3 numpy=1.23.4 pytest $BLAS_PKGS pkg-config
92
- elif [[ "$PYTHON_VERSION" == "3.12" || "$PYTHON_VERSION" == "3.13" ]]; then
93
- conda install scipy numpy pytest $BLAS_PKGS pkg-config
94
- fi
85
+ pixi add $BLAS_PKGS pip scipy numpy pytest mkl mkl-devel pkg-config meson meson-python
95
86
  - name: Build
96
87
  run: |
97
- python -c "import numpy as np; print('NUMPY BLAS INFOS'); print(np.show_config())"
88
+ pixi r python -c "import numpy as np;print(np.show_config())"
98
89
  if [[ "$LINK_MKL" == "true" ]]; then
99
- python -m pip install --verbose -Csetup-args=-Dlink_mkl=true .
90
+
91
+ pixi r python -m pip install --verbose --no-build-isolation -Csetup-args=-Dlink_mkl=true .
100
92
  else
101
- python -m pip install --verbose .
93
+ pixi r python -m pip install --verbose --no-build-isolation .
102
94
  fi
103
95
  - name: Test
104
96
  run: |
105
- pytest
97
+ pixi r pytest
106
98
  rm -rf build/
107
99
 
108
100
  # from here to end it's a copy-paste, with few changes, of
@@ -113,11 +105,10 @@ jobs:
113
105
  runs-on: ${{ matrix.os }}
114
106
  strategy:
115
107
  matrix:
116
- # macos-13 is an intel runner, macos-14 is apple silicon
117
- os: [ubuntu-latest, macos-14, windows-latest, macos-13]
108
+ os: [ubuntu-latest, macos-latest, windows-latest]
118
109
 
119
110
  steps:
120
- - uses: actions/checkout@v4
111
+ - uses: actions/checkout@v5
121
112
  with:
122
113
  submodules: true
123
114
 
@@ -139,7 +130,7 @@ jobs:
139
130
  run: conda install -y openblas pkgconfig
140
131
 
141
132
  - name: Build wheels
142
- uses: pypa/cibuildwheel@v2.22.0
133
+ uses: pypa/cibuildwheel@v3.2.0
143
134
 
144
135
  - uses: actions/upload-artifact@v4
145
136
  with:
@@ -150,7 +141,7 @@ jobs:
150
141
  name: Build source distribution
151
142
  runs-on: ubuntu-latest
152
143
  steps:
153
- - uses: actions/checkout@v4
144
+ - uses: actions/checkout@v5
154
145
  with:
155
146
  submodules: true
156
147
 
@@ -174,7 +165,7 @@ jobs:
174
165
  # Only run this step on GH release
175
166
  # if: github.event_name == 'release' && github.event.action == 'published'
176
167
  steps:
177
- - uses: actions/download-artifact@v4
168
+ - uses: actions/download-artifact@v5
178
169
  with:
179
170
  # unpacks all CIBW artifacts into dist/
180
171
  pattern: cibw-*
@@ -183,7 +174,7 @@ jobs:
183
174
 
184
175
  - uses: pypa/gh-action-pypi-publish@release/v1
185
176
  with:
186
- skip-existing: true
177
+ skip-existing: false # Fail loudly for duplicates.
187
178
  # To test:
188
179
  # with:
189
180
  # repository-url: https://test.pypi.org/legacy/
@@ -48,3 +48,7 @@ out
48
48
  *.jar
49
49
  *.egg-info
50
50
  *.ipynb_checkpoints/
51
+
52
+ # pixi environments
53
+ .pixi
54
+ *.egg-info
scs-3.2.9/.gitmodules ADDED
@@ -0,0 +1,6 @@
1
+ [submodule "scs_source"]
2
+ path = scs_source
3
+ url = https://github.com/cvxgrp/scs.git
4
+ [submodule "scs/pythoncapi-compat"]
5
+ path = scs/pythoncapi-compat
6
+ url = https://github.com/python/pythoncapi-compat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scs
3
- Version: 3.2.7.post2
3
+ Version: 3.2.9
4
4
  Summary: Splitting conic solver
5
5
  Author-Email: Brendan O'Donoghue <bodonoghue85@gmail.com>
6
6
  License: MIT License
@@ -25,7 +25,20 @@ License: MIT License
25
25
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
26
  SOFTWARE.
27
27
 
28
- Requires-Python: >=3.7
28
+ Classifier: License :: OSI Approved :: MIT License
29
+ Classifier: Programming Language :: C
30
+ Classifier: Programming Language :: Python
31
+ Classifier: Programming Language :: Python :: 3
32
+ Classifier: Programming Language :: Python :: 3.11
33
+ Classifier: Programming Language :: Python :: 3.12
34
+ Classifier: Programming Language :: Python :: 3.13
35
+ Classifier: Programming Language :: Python :: 3 :: Only
36
+ Classifier: Programming Language :: Python :: Implementation :: CPython
37
+ Classifier: Operating System :: Microsoft :: Windows
38
+ Classifier: Operating System :: POSIX
39
+ Classifier: Operating System :: Unix
40
+ Classifier: Operating System :: MacOS
41
+ Requires-Python: >=3.9
29
42
  Requires-Dist: numpy
30
43
  Requires-Dist: scipy
31
44
  Description-Content-Type: text/markdown
@@ -35,8 +48,7 @@ scs-python
35
48
 
36
49
  [![Build Status](https://github.com/bodono/scs-python/actions/workflows/build.yml/badge.svg)](https://github.com/bodono/scs-python/actions/workflows/build.yml)
37
50
  [![Documentation](https://img.shields.io/badge/docs-online-brightgreen?logo=read-the-docs&style=flat)](https://www.cvxgrp.org/scs/)
38
- [![PyPI package](https://img.shields.io/pypi/dm/scs?label=PyPI%20downloads)](https://pypi.org/project/scs/)
39
-
51
+ [![PyPI Downloads/Month](https://static.pepy.tech/personalized-badge/scs?period=month&units=abbreviation&left_color=grey&right_color=brightgreen&left_text=downloads/month)](https://pepy.tech/project/scs)
40
52
 
41
53
  Python interface for [SCS](https://github.com/cvxgrp/scs) 3.0.0 and higher.
42
54
  The full documentation is available [here](https://www.cvxgrp.org/scs/).
@@ -3,8 +3,7 @@ scs-python
3
3
 
4
4
  [![Build Status](https://github.com/bodono/scs-python/actions/workflows/build.yml/badge.svg)](https://github.com/bodono/scs-python/actions/workflows/build.yml)
5
5
  [![Documentation](https://img.shields.io/badge/docs-online-brightgreen?logo=read-the-docs&style=flat)](https://www.cvxgrp.org/scs/)
6
- [![PyPI package](https://img.shields.io/pypi/dm/scs?label=PyPI%20downloads)](https://pypi.org/project/scs/)
7
-
6
+ [![PyPI Downloads/Month](https://static.pepy.tech/personalized-badge/scs?period=month&units=abbreviation&left_color=grey&right_color=brightgreen&left_text=downloads/month)](https://pepy.tech/project/scs)
8
7
 
9
8
  Python interface for [SCS](https://github.com/cvxgrp/scs) 3.0.0 and higher.
10
9
  The full documentation is available [here](https://www.cvxgrp.org/scs/).
@@ -33,6 +33,13 @@ parser.add_argument(
33
33
  "to succeed. This option will be removed soon after which we shall "
34
34
  "install the MKL version by default if MKL is available.",
35
35
  )
36
+ parser.add_argument(
37
+ "--cudss",
38
+ dest="cudss",
39
+ action="store_true",
40
+ default=False,
41
+ help="Also compile the cuDSS version of SCS",
42
+ )
36
43
  parser.add_argument(
37
44
  "--openmp",
38
45
  dest="openmp",
@@ -286,9 +293,24 @@ def install_scs(**kwargs):
286
293
  )
287
294
  ext_modules += [_scs_mkl]
288
295
 
296
+ if args.cudss:
297
+ # MKL should be included in the libraries already:
298
+ _scs_cudss = Extension(
299
+ name="_scs_cudss",
300
+ sources=sources + glob("scs_source/linsys/cudss/direct/*.c"),
301
+ depends=glob("scs/*.h"),
302
+ define_macros=list(define_macros) + [("PY_CUDSS", None)],
303
+ include_dirs=include_dirs + ["scs_source/linsys/cudss/direct/"],
304
+ libraries=list(libraries),
305
+ extra_compile_args=list(extra_compile_args),
306
+ extra_link_args=list(extra_link_args),
307
+ )
308
+ ext_modules += [_scs_cudss]
309
+
310
+
289
311
  setup(
290
312
  name="scs",
291
- version="3.2.7.post2",
313
+ version="3.2.9",
292
314
  author="Brendan O'Donoghue",
293
315
  author_email="bodonoghue85@gmail.com",
294
316
  url="http://github.com/cvxgrp/scs",
scs-3.2.9/meson.build ADDED
@@ -0,0 +1,253 @@
1
+ project('scs', 'c')
2
+
3
+ py = import('python').find_installation(pure: false)
4
+
5
+ cc = meson.get_compiler('c')
6
+ fs = import('fs')
7
+ # Check for submodule before doing anything else
8
+ if not fs.exists('scs_source/README.md')
9
+ error('Missing the `scs_source` submodule! Run `git submodule update --init` to fix this.')
10
+ endif
11
+
12
+ # Simpler check for numpy
13
+ incdir_numpy = run_command(py,['-c',
14
+ '''import os
15
+ import numpy as np
16
+ try:
17
+ incdir = os.path.relpath(np.get_include())
18
+ except Exception:
19
+ incdir = np.get_include()
20
+ print(incdir)
21
+ '''], check: true).stdout().strip()
22
+
23
+ # Get BLAS
24
+ blas_deps = []
25
+ if get_option('link_mkl')
26
+ blas_deps = [cc.find_library('mkl_rt', required : false)]
27
+ if not blas_deps[0].found()
28
+ blas_deps = [dependency('mkl-sdl', required : false)]
29
+ endif
30
+ if not blas_deps[0].found()
31
+ blas_deps = [ dependency('mkl-dynamic-ilp64-iomp', required: false) ]
32
+ endif
33
+ else
34
+ if host_machine.system() == 'darwin'
35
+ blas_deps = [dependency('Accelerate')]
36
+ else
37
+ blas_deps = [cc.find_library('openblas', static: get_option('link_blas_statically'), required : false)]
38
+ if not blas_deps[0].found()
39
+ blas_deps = [dependency(['openblas', 'OpenBLAS'], static: get_option('link_blas_statically'), required : false)]
40
+ endif
41
+ endif
42
+
43
+ # try to find blas/cblas (e.g., Linux)
44
+ if not blas_deps[0].found()
45
+ blas_deps = [cc.find_library('blas', static: get_option('link_blas_statically'), required : false)]
46
+ if not blas_deps[0].found()
47
+ blas_deps = [dependency('blas', static: get_option('link_blas_statically'), required : false)]
48
+ endif
49
+ lapack_dep = cc.find_library('lapack', static: get_option('link_blas_statically'), required : false)
50
+ if not lapack_dep.found()
51
+ lapack_dep = dependency('lapack', static: get_option('link_blas_statically'), required : false)
52
+ endif
53
+ if lapack_dep.found()
54
+ blas_deps += lapack_dep
55
+ endif
56
+ cblas_dep = cc.find_library('cblas', static: get_option('link_blas_statically'), required : false)
57
+ if not cblas_dep.found()
58
+ cblas_dep = dependency('cblas', static: get_option('link_blas_statically'), required : false)
59
+ endif
60
+ if cblas_dep.found()
61
+ blas_deps += cblas_dep
62
+ endif
63
+ endif
64
+ endif
65
+
66
+ # Since nothing above was required, we stop here if failed.
67
+ # When creating an sdist we are not compiling / linking, so don't need to fail.
68
+ if not blas_deps[0].found() and not get_option('sdist_mode')
69
+ error('OpenBLAS or Netlib BLAS/CBLAS is required on all platforms, and was not found.')
70
+ endif
71
+
72
+ # Common
73
+ common_c_args = cc.get_supported_arguments('-Wno-unused-result') + [
74
+ '-DPYTHON', '-DCTRLC=1'
75
+ ]
76
+ common_includes = [
77
+ 'scs',
78
+ 'scs_source/include',
79
+ 'scs_source/linsys',
80
+ incdir_numpy
81
+ ]
82
+ _deps = [blas_deps]
83
+ if get_option('use_openmp')
84
+ _deps += dependency('openmp')
85
+ endif
86
+
87
+ is_linux = host_machine.system() == 'linux'
88
+ if is_linux
89
+ _deps += cc.find_library('rt', required : true)
90
+ endif
91
+
92
+ if get_option('use_lapack')
93
+ common_c_args += '-DUSE_LAPACK=1'
94
+ endif
95
+
96
+ if get_option('use_singleprec')
97
+ common_c_args += '-DSFLOAT=1'
98
+ endif
99
+
100
+ if get_option('use_blas64')
101
+ common_c_args += '-DBLAS64=1'
102
+ endif
103
+
104
+ if get_option('use_extraverbose')
105
+ common_c_args += '-DVERBOSITY=999'
106
+ endif
107
+
108
+ is_gpu_build = get_option('use_gpu') or get_option('link_cudss')
109
+ use_32bit_ints = get_option('int32')
110
+
111
+ if is_gpu_build and not use_32bit_ints
112
+ error('GPU builds require 32-bit integers. Please re-run Meson with -Dint32=true')
113
+ endif
114
+
115
+ if not use_32bit_ints
116
+ common_c_args += '-DDLONG=1'
117
+ endif
118
+
119
+ cuda_dep = dependency('cuda', required: is_gpu_build)
120
+ if is_gpu_build and not cuda_dep.found()
121
+ error('GPU build requested but CUDA toolkit was not found.')
122
+ endif
123
+
124
+ if get_option('use_gpu')
125
+ gpu_c_args = common_c_args + ['-DPY_GPU=1', '-DINDIRECT=1']
126
+ _deps += cuda_dep
127
+ if get_option('gpu_atrans')
128
+ gpu_c_args += '-DGPU_TRANSPOSE_MAT=1'
129
+ endif
130
+ ext_modules += py.extension_module(
131
+ '_scs_gpu',
132
+ common_sources,
133
+ # In Meson, sources with a `.cu` extension are compiled with nvcc by default.
134
+ # To compile `.c` files with nvcc, they must be explicitly targeted.
135
+ # It is strongly recommended to rename CUDA-C files to `.cu`.
136
+ fs.glob('scs_source/linsys/gpu/*.c'),
137
+ fs.glob('scs_source/linsys/gpu/indirect/*.c'),
138
+ c_args: gpu_c_args,
139
+ dependencies: _deps,
140
+ include_directories: [
141
+ common_includes, 'scs_source/linsys/gpu/', 'scs_source/linsys/gpu/indirect'
142
+ ],
143
+ install: true,
144
+ install_dir: scs_dir,
145
+ )
146
+ endif
147
+
148
+ # Sources
149
+ scs_core_sources = files(
150
+ 'scs_source/src/aa.c',
151
+ 'scs_source/src/cones.c',
152
+ 'scs_source/src/ctrlc.c',
153
+ 'scs_source/src/exp_cone.c',
154
+ 'scs_source/src/linalg.c',
155
+ 'scs_source/src/normalize.c',
156
+ 'scs_source/src/rw.c',
157
+ 'scs_source/src/scs_version.c',
158
+ 'scs_source/src/scs.c',
159
+ 'scs_source/src/util.c'
160
+ )
161
+
162
+ common_linsys_sources = files(
163
+ 'scs_source/linsys/scs_matrix.c',
164
+ 'scs_source/linsys/csparse.c'
165
+ )
166
+
167
+ amd_sources = files(
168
+ 'scs_source/linsys/external/amd/amd_1.c',
169
+ 'scs_source/linsys/external/amd/amd_2.c',
170
+ 'scs_source/linsys/external/amd/amd_aat.c',
171
+ 'scs_source/linsys/external/amd/amd_control.c',
172
+ 'scs_source/linsys/external/amd/amd_defaults.c',
173
+ 'scs_source/linsys/external/amd/amd_dump.c',
174
+ 'scs_source/linsys/external/amd/amd_global.c',
175
+ 'scs_source/linsys/external/amd/amd_info.c',
176
+ 'scs_source/linsys/external/amd/amd_order.c',
177
+ 'scs_source/linsys/external/amd/amd_post_tree.c',
178
+ 'scs_source/linsys/external/amd/amd_postorder.c',
179
+ 'scs_source/linsys/external/amd/amd_preprocess.c',
180
+ 'scs_source/linsys/external/amd/amd_valid.c',
181
+ 'scs_source/linsys/external/amd/SuiteSparse_config.c'
182
+ )
183
+
184
+ # Build modules
185
+ scs_dir = py.get_install_dir() / 'scs'
186
+ py.extension_module(
187
+ '_scs_direct',
188
+ 'scs/scspy.c',
189
+ 'scs_source/linsys/cpu/direct/private.c',
190
+ 'scs_source/linsys/external/qdldl/qdldl.c',
191
+ common_linsys_sources,
192
+ scs_core_sources,
193
+ amd_sources,
194
+ c_args: common_c_args,
195
+ include_directories: common_includes + [
196
+ 'scs_source/linsys/cpu/direct',
197
+ 'scs_source/linsys/external/qdldl',
198
+ 'scs_source/linsys/external/amd'
199
+ ],
200
+ dependencies: _deps,
201
+ install_dir: scs_dir,
202
+ install: true,
203
+ )
204
+
205
+ py.extension_module(
206
+ '_scs_indirect',
207
+ 'scs/scspy.c',
208
+ 'scs_source/linsys/cpu/indirect/private.c',
209
+ common_linsys_sources,
210
+ scs_core_sources,
211
+ c_args: common_c_args + ['-DPY_INDIRECT', '-DINDIRECT=1'],
212
+ include_directories: common_includes + ['scs_source/linsys/cpu/indirect'],
213
+ dependencies: _deps,
214
+ install_dir: scs_dir,
215
+ install: true,
216
+ )
217
+
218
+ if get_option('link_mkl')
219
+ py.extension_module(
220
+ '_scs_mkl',
221
+ 'scs/scspy.c',
222
+ 'scs_source/linsys/mkl/direct/private.c',
223
+ common_linsys_sources,
224
+ scs_core_sources,
225
+ c_args: common_c_args + ['-DPY_MKL'],
226
+ include_directories: common_includes + ['scs_source/linsys/mkl/direct'],
227
+ dependencies: _deps,
228
+ install_dir: scs_dir,
229
+ install: true,
230
+ )
231
+ endif
232
+
233
+ if get_option('link_cudss')
234
+ _deps += cuda_dep
235
+ cudss_dep = dependency('cudss', required: true)
236
+ _deps += cudss_dep
237
+ py.extension_module(
238
+ '_scs_cudss',
239
+ 'scs/scspy.c',
240
+ 'scs_source/linsys/cudss/direct/private.c',
241
+ common_linsys_sources,
242
+ scs_core_sources,
243
+ c_args: common_c_args + ['-DPY_CUDSS'],
244
+ include_directories: common_includes + ['scs_source/linsys/cudss/direct'],
245
+ dependencies: _deps,
246
+ install_dir: scs_dir,
247
+ install: true,
248
+ )
249
+ endif
250
+
251
+
252
+
253
+ py.install_sources('scs/py/__init__.py', subdir: 'scs')
@@ -0,0 +1,27 @@
1
+ # we use this to build pre-compiled wheels on github CI
2
+ # copying anaconda openblas into SCS wheels for ease of
3
+ # installation
4
+ option('link_blas_statically', type: 'boolean',
5
+ value: false, description: 'copy BLAS compiled object into SCS module(s)')
6
+ option('link_mkl', type: 'boolean',
7
+ value: false, description: 'link to mkl-rt library')
8
+ option('link_cudss', type: 'boolean',
9
+ value: false, description: 'link to cuDSS library')
10
+ option('use_openmp', type: 'boolean',
11
+ value: false, description: 'Compile SCS with OpenMP parallelization enabled. This can make SCS faster, but requires a compiler with openMP support, the user must control how many threads OpenMP uses')
12
+ option('sdist_mode', type: 'boolean', value: false,
13
+ description: 'Set to true if building an sdist')
14
+ option('use_lapack', type: 'boolean',
15
+ value: true, description: 'use LAPACK')
16
+ option('use_singleprec', type: 'boolean',
17
+ value: false, description: 'use single precision floating point')
18
+ option('use_extraverbose', type: 'boolean',
19
+ value: false, description: 'Enable extra verbose SCS (for debugging).')
20
+ option('use_gpu', type: 'boolean',
21
+ value: false, description: 'setup the GPU variant')
22
+ option('int32', type: 'boolean',
23
+ value: false, description: 'Use 32-bit integers (required for GPU).')
24
+ option('gpu_atrans', type: 'boolean',
25
+ value: false, description: 'transpose matrices for the GPU')
26
+ option('use_blas64', type: 'boolean',
27
+ value: false, description: 'Use 64-bit convention for BLAS')
scs-3.2.9/pixi.toml ADDED
@@ -0,0 +1,12 @@
1
+ [workspace]
2
+ channels = ["conda-forge"]
3
+ name = "scs-python"
4
+ platforms = ["linux-64"]
5
+ version = "0.1.0"
6
+
7
+ [tasks]
8
+
9
+ [dependencies]
10
+ pkg-config = ">=0.29.2,<0.30"
11
+ meson = ">=1.8.1,<2"
12
+ meson-python = ">=0.18.0,<0.19"
@@ -1,17 +1,31 @@
1
1
  [build-system]
2
2
  build-backend = 'mesonpy'
3
3
  requires = [
4
- "numpy >= 2.0.0; python_version > '3.8'",
5
- "oldest-supported-numpy; python_version <= '3.8'",
4
+ "numpy >= 2.0.0",
6
5
  "meson-python"
7
6
  ]
8
7
 
9
8
  [project]
10
9
  name = 'scs'
11
- version = "3.2.7.post2"
10
+ version = "3.2.9"
12
11
  description = 'Splitting conic solver'
13
12
  readme = 'README.md'
14
- requires-python = '>=3.7'
13
+ requires-python = '>=3.9'
14
+ classifiers = [
15
+ 'License :: OSI Approved :: MIT License',
16
+ 'Programming Language :: C',
17
+ 'Programming Language :: Python',
18
+ 'Programming Language :: Python :: 3',
19
+ 'Programming Language :: Python :: 3.11',
20
+ 'Programming Language :: Python :: 3.12',
21
+ 'Programming Language :: Python :: 3.13',
22
+ 'Programming Language :: Python :: 3 :: Only',
23
+ 'Programming Language :: Python :: Implementation :: CPython',
24
+ 'Operating System :: Microsoft :: Windows',
25
+ 'Operating System :: POSIX',
26
+ 'Operating System :: Unix',
27
+ 'Operating System :: MacOS',
28
+ ]
15
29
  license = {file = 'LICENSE'}
16
30
  authors = [
17
31
  {name = "Brendan O'Donoghue", email = "bodonoghue85@gmail.com"}]
@@ -80,3 +94,8 @@ inherit.before-all = "append"
80
94
  before-all = [
81
95
  # "apk update", "apk search -v '*blas*'",
82
96
  "apk add openblas-dev"]
97
+
98
+ [tool.pytest.ini_options]
99
+ testpaths = [
100
+ "test",
101
+ ]
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  from warnings import warn
3
3
  from scipy import sparse
4
- import _scs_direct
4
+ from scs import _scs_direct
5
5
 
6
6
  __version__ = _scs_direct.version()
7
7
  __sizeof_int__ = _scs_direct.sizeof_int()
@@ -26,13 +26,13 @@ SOLVED_INACCURATE = 2 # SCS best guess solved
26
26
 
27
27
  # Choose which SCS to import based on settings.
28
28
  def _select_scs_module(stgs):
29
+
29
30
  if stgs.pop("gpu", False): # False by default
30
31
  if not stgs.pop("use_indirect", _USE_INDIRECT_DEFAULT):
31
32
  raise NotImplementedError(
32
- "GPU direct solver not yet available, pass `use_indirect=True`."
33
- )
34
- import _scs_gpu
35
-
33
+ "For the GPU direct solver, pass `use_indirect=False cudss=True`.")
34
+ from scs import _scs_gpu
35
+
36
36
  return _scs_gpu
37
37
 
38
38
  if stgs.pop("mkl", False): # False by default
@@ -40,12 +40,21 @@ def _select_scs_module(stgs):
40
40
  raise NotImplementedError(
41
41
  "MKL indirect solver not yet available, pass `use_indirect=False`."
42
42
  )
43
- import _scs_mkl
43
+ from scs import _scs_mkl
44
44
 
45
45
  return _scs_mkl
46
46
 
47
+ if stgs.pop("cudss", False): # False by default
48
+ if stgs.pop("use_indirect", False):
49
+ raise NotImplementedError(
50
+ "cuDSS is a direct solver, pass `use_indirect=False`."
51
+ )
52
+ from scs import _scs_cudss
53
+
54
+ return _scs_cudss
55
+
47
56
  if stgs.pop("use_indirect", _USE_INDIRECT_DEFAULT):
48
- import _scs_indirect
57
+ from scs import _scs_indirect
49
58
 
50
59
  return _scs_indirect
51
60
 
@@ -79,7 +88,7 @@ class SCS(object):
79
88
 
80
89
  if not sparse.issparse(A):
81
90
  raise TypeError("A is required to be a sparse matrix")
82
- if not sparse.isspmatrix_csc(A):
91
+ if not A.format == "csc":
83
92
  warn(
84
93
  "Converting A to a CSC (compressed sparse column) matrix;"
85
94
  " may take a while."
@@ -109,7 +118,7 @@ class SCS(object):
109
118
  raise TypeError("P is required to be a sparse matrix")
110
119
  if P.shape != (n, n):
111
120
  raise ValueError("P shape not compatible with A,b,c")
112
- if not sparse.isspmatrix_csc(P):
121
+ if not P.format == "csc":
113
122
  warn(
114
123
  "Converting P to a CSC (compressed sparse column) "
115
124
  "matrix; may take a while."