cvxpy
cvxpy copied to clipboard
`cvxpy` fails to install on Python 3.12
Describe the bug
Running pip install cvxpy
fails when using Python 3.12
To Reproduce
conda create -n py312-cvxpy python=3.12
conda activate py312-cvxpy
pip install cvxpy
Output
Version
- OS: macOS
- CVXPY Version: latest
Additional context
- I checked and it works fine using Python 3.11
- I'm using an M1 mac.
I found a thread for a similar issue here. It seems like this is common for many Python 3.12 installations. Thanks for pointing this out!
SCS compilation on Python 3.12 is work in progress, there's a PR open (https://github.com/bodono/scs-python/pull/70). If you are on mac or linux this should work
pip install git+https://github.com/enzbus/scs-python
pip install cvxpy
any hope ? scs is now on pypi for Python-3.12.
I could install cvxpy1.4.2 in Python 3.12 via pip install cvxpy==1.4.2
now (Windows 11). Though conda install -c conda-forge cvxpy
didn't work.
You may retry now, the scs
conda installer was just updated (https://github.com/conda-forge/scs-feedstock/pull/38). Make sure you install the latest version there.
@enzbus https://github.com/conda-forge/scs-feedstock/pull/38 added scs 3.2.4 to conda-forge. 3.2.4 adds Python 3.12 support but it was not built in that PR. There is a follow up PR, https://github.com/conda-forge/scs-feedstock/pull/40, adding the 3.12 build. Still, the 3.12 build should be available from conda-forge in the next couple hours (once that PR finishes building and gets seeded to the CDN).
Having cvxpy-1.4.2 wheels on pypi for Python-3.12 would have been nice.
It still fails using pip
on Windows.
The scs
issue is closed as resolved.
@RoyiAvital Can you share how it fails? There is now a 3.12 wheel for Windows at https://pypi.org/project/scs/3.2.4.post1/#files
@wshanks , I can share some screen shots of my failing installation (Few minutes ago) on Python 3.12.2:
I can share the whole text:
D:\Applications\WinPython\WPy64-31220\scripts>pip install --upgrade cvxpy
Collecting cvxpy
Downloading cvxpy-1.4.2.tar.gz (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 4.3 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting osqp>=0.6.2 (from cvxpy)
Downloading osqp-0.6.5-cp312-cp312-win_amd64.whl.metadata (1.8 kB)
Requirement already satisfied: ecos>=2 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (2.0.13)
Requirement already satisfied: clarabel>=0.5.0 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (0.6.0)
Requirement already satisfied: scs>=3.0 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (3.2.4.post1)
Requirement already satisfied: numpy>=1.15 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (1.26.4)
Requirement already satisfied: scipy>=1.1.0 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (1.12.0)
Requirement already satisfied: pybind11 in d:\applications\winpython\wpy64-31220\python-3.12.2.amd64\lib\site-packages (from cvxpy) (2.11.1)
Collecting scipy>=1.1.0 (from cvxpy)
Downloading scipy-1.11.4-cp312-cp312-win_amd64.whl.metadata (60 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.4/60.4 kB ? eta 0:00:00
Collecting qdldl (from osqp>=0.6.2->cvxpy)
Downloading qdldl-0.1.7.post0.tar.gz (70 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.0/71.0 kB 3.8 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Downloading osqp-0.6.5-cp312-cp312-win_amd64.whl (293 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 293.4/293.4 kB 4.6 MB/s eta 0:00:00
Downloading scipy-1.11.4-cp312-cp312-win_amd64.whl (43.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.7/43.7 MB 8.7 MB/s eta 0:00:00
Building wheels for collected packages: cvxpy, qdldl
Building wheel for cvxpy (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for cvxpy (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [438 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-312
creating build\lib.win-amd64-cpython-312\cvxpy
copying cvxpy\error.py -> build\lib.win-amd64-cpython-312\cvxpy
copying cvxpy\settings.py -> build\lib.win-amd64-cpython-312\cvxpy
copying cvxpy\version.py -> build\lib.win-amd64-cpython-312\cvxpy
copying cvxpy\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy
creating build\lib.win-amd64-cpython-312\setup
copying setup\extensions.py -> build\lib.win-amd64-cpython-312\setup
copying setup\versioning.py -> build\lib.win-amd64-cpython-312\setup
copying setup\__init__.py -> build\lib.win-amd64-cpython-312\setup
creating build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\atom.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\axis_atom.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\condition_number.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\cummax.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\dist_ratio.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\dotsort.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\errormsg.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\eye_minus_inv.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\gen_lambda_max.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\geo_mean.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\gmatmul.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\harmonic_mean.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\inv_prod.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\lambda_max.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\lambda_min.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\lambda_sum_largest.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\lambda_sum_smallest.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\length.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\log_det.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\log_sum_exp.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\matrix_frac.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\max.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\min.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\mixed_norm.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\norm.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\norm1.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\norm_inf.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\norm_nuc.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\one_minus_pos.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\perspective.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\pf_eigenvalue.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\pnorm.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\prod.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\ptp.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\quad_form.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\quad_over_lin.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\sigma_max.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\sign.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\stats.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\sum_largest.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\sum_smallest.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\sum_squares.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\suppfunc.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\total_variation.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\tr_inv.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\von_neumann_entr.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
copying cvxpy\atoms\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms
creating build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\cones.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\constraint.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\exponential.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\finite_set.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\nonpos.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\power.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\psd.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\second_order.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\utilities.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\zero.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
copying cvxpy\constraints\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\constraints
creating build\lib.win-amd64-cpython-312\cvxpy\cvxcore
copying cvxpy\cvxcore\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\cvxcore
creating build\lib.win-amd64-cpython-312\cvxpy\expressions
copying cvxpy\expressions\cvxtypes.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions
copying cvxpy\expressions\expression.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions
copying cvxpy\expressions\leaf.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions
copying cvxpy\expressions\variable.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions
copying cvxpy\expressions\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions
creating build\lib.win-amd64-cpython-312\cvxpy\interface
copying cvxpy\interface\base_matrix_interface.py -> build\lib.win-amd64-cpython-312\cvxpy\interface
copying cvxpy\interface\matrix_utilities.py -> build\lib.win-amd64-cpython-312\cvxpy\interface
copying cvxpy\interface\scipy_wrapper.py -> build\lib.win-amd64-cpython-312\cvxpy\interface
copying cvxpy\interface\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\interface
creating build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\canon_backend.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\lin_constraints.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\lin_op.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\lin_utils.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\tree_mat.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
copying cvxpy\lin_ops\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\lin_ops
creating build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\iterative.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\objective.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\param_prob.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\problem.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\xpress_problem.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
copying cvxpy\problems\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\problems
creating build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\canonicalization.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\chain.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\cvx_attr2constr.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\eval_params.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\flip_objective.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\inverse_data.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\matrix_stuffing.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\reduction.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\solution.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\utilities.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
copying cvxpy\reductions\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions
creating build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\base_test.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\ram_limited.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\solver_test_helpers.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_atoms.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_benchmarks.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_complex.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_cone2cone.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_conic_solvers.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_constant.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_constant_atoms.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_constraints.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_convolution.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_copy.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_curvature.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_custom_solver.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_derivative.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_dgp.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_dgp2dcp.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_domain.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_dpp.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_dqcp.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_errors.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_examples.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_expressions.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_expression_methods.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_grad.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_gurobi_write.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_interfaces.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_KKT.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_kron_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_linalg_utils.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_linear_cone.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_lin_ops.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_matrices.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_mip_vars.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_monotonicity.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_nonlinear_atoms.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_objectives.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_param_cone_prog.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_param_quad_prog.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_perspective.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_power_tools.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_problem.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_python_backends.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_qp_solvers.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_quadratic.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_quad_form.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_scalarize.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_semidefinite_vars.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_shape.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_sign.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_suppfunc.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_valinvec2mixedint.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_versioning.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\test_von_neumann_entr.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
copying cvxpy\tests\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\tests
creating build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\indicator.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\linearize.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\partial_optimize.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\scalarize.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\suppfunc.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
copying cvxpy\transforms\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\transforms
creating build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\canonical.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\coeff_extractor.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\cvxpy_upgrade.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\debug_tools.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\deterministic.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\grad.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\key_utils.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\linalg.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\performance_utils.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\perspective_utils.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\power_tools.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\replace_quad_forms.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\scopes.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\shape.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\sign.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\versioning.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
copying cvxpy\utilities\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities
creating build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\add_expr.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\affine_atom.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\binary_operators.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\bmat.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\conj.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\conv.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\cumsum.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\diag.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\diff.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\hstack.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\imag.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\index.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\kron.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\partial_trace.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\partial_transpose.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\promote.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\real.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\reshape.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\sum.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\trace.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\transpose.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\unary_operators.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\upper_tri.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\vec.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\vstack.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\wraps.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
copying cvxpy\atoms\affine\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\affine
creating build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\abs.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\ceil.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\elementwise.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\entr.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\exp.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\huber.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\inv_pos.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\kl_div.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\log.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\log1p.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\loggamma.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\logistic.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\log_normcdf.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\maximum.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\minimum.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\neg.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\pos.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\power.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\rel_entr.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\scalene.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\sqrt.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\square.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\xexp.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
copying cvxpy\atoms\elementwise\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\atoms\elementwise
creating build\lib.win-amd64-cpython-312\cvxpy\cvxcore\python
copying cvxpy\cvxcore\python\canonInterface.py -> build\lib.win-amd64-cpython-312\cvxpy\cvxcore\python
copying cvxpy\cvxcore\python\cvxcore.py -> build\lib.win-amd64-cpython-312\cvxpy\cvxcore\python
copying cvxpy\cvxcore\python\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\cvxcore\python
creating build\lib.win-amd64-cpython-312\cvxpy\expressions\constants
copying cvxpy\expressions\constants\callback_param.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions\constants
copying cvxpy\expressions\constants\constant.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions\constants
copying cvxpy\expressions\constants\parameter.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions\constants
copying cvxpy\expressions\constants\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\expressions\constants
creating build\lib.win-amd64-cpython-312\cvxpy\interface\numpy_interface
copying cvxpy\interface\numpy_interface\matrix_interface.py -> build\lib.win-amd64-cpython-312\cvxpy\interface\numpy_interface
copying cvxpy\interface\numpy_interface\ndarray_interface.py -> build\lib.win-amd64-cpython-312\cvxpy\interface\numpy_interface
copying cvxpy\interface\numpy_interface\sparse_matrix_interface.py -> build\lib.win-amd64-cpython-312\cvxpy\interface\numpy_interface
copying cvxpy\interface\numpy_interface\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\interface\numpy_interface
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real
copying cvxpy\reductions\complex2real\complex2real.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real
copying cvxpy\reductions\complex2real\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real creating build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone
copying cvxpy\reductions\cone2cone\affine2direct.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone
copying cvxpy\reductions\cone2cone\approximations.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone copying cvxpy\reductions\cone2cone\exotic2common.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone
copying cvxpy\reductions\cone2cone\soc2psd.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone
copying cvxpy\reductions\cone2cone\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\cone2cone
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone
copying cvxpy\reductions\dcp2cone\cone_matrix_stuffing.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone
copying cvxpy\reductions\dcp2cone\dcp2cone.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone
copying cvxpy\reductions\dcp2cone\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp
copying cvxpy\reductions\dgp2dcp\dgp2dcp.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp
copying cvxpy\reductions\dgp2dcp\util.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp
copying cvxpy\reductions\dgp2dcp\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\discrete2mixedint
copying cvxpy\reductions\discrete2mixedint\valinvec2mixedint.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\discrete2mixedint
copying cvxpy\reductions\discrete2mixedint\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\discrete2mixedint
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
copying cvxpy\reductions\dqcp2dcp\dqcp2dcp.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
copying cvxpy\reductions\dqcp2dcp\inverse.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
copying cvxpy\reductions\dqcp2dcp\sets.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
copying cvxpy\reductions\dqcp2dcp\tighten.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
copying cvxpy\reductions\dqcp2dcp\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dqcp2dcp
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl
copying cvxpy\reductions\eliminate_pwl\eliminate_pwl.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl
copying cvxpy\reductions\eliminate_pwl\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form
copying cvxpy\reductions\qp2quad_form\qp2symbolic_qp.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form
copying cvxpy\reductions\qp2quad_form\qp_matrix_stuffing.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form
copying cvxpy\reductions\qp2quad_form\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form creating build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\bisection.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\compr_matrix.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\constant_solver.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\defines.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\intermediate_chain.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers copying cvxpy\reductions\solvers\kktsolver.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\solver.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\solving_chain.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\utilities.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
copying cvxpy\reductions\solvers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\abs_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\aff_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\constant_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\equality_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\inequality_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\matrix_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\param_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\pnorm_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\psd_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\soc_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\variable_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
copying cvxpy\reductions\complex2real\canonicalizers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\complex2real\canonicalizers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\entr_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\exp_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\geo_mean_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\huber_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\indicator_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\kl_div_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\lambda_max_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\lambda_sum_largest_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\log1p_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\logistic_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\log_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\log_det_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\log_sum_exp_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\matrix_frac_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\mul_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\normNuc_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\perspective_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\pnorm_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\power_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\quad_form_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\quad_over_lin_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\rel_entr_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\sigma_max_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\suppfunc_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\tr_inv_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\von_neumann_entr_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\xexp_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
copying cvxpy\reductions\dcp2cone\canonicalizers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dcp2cone\canonicalizers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\add_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\constant_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\div_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\exp_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\eye_minus_inv_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\finite_set_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\geo_mean_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\gmatmul_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\log_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\mulexpression_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\mul_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\nonpos_constr_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\norm1_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\norm_inf_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\one_minus_pos_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\parameter_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\pf_eigenvalue_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\pnorm_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\power_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\prod_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\quad_form_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\quad_over_lin_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\sum_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\trace_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\xexp_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\zero_constr_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
copying cvxpy\reductions\dgp2dcp\canonicalizers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\dgp2dcp\canonicalizers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\abs_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\cummax_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\cumsum_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\dotsort_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\maximum_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\max_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\minimum_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\min_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\norm1_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\norm_inf_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\sum_largest_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
copying cvxpy\reductions\eliminate_pwl\canonicalizers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\eliminate_pwl\canonicalizers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
copying cvxpy\reductions\qp2quad_form\canonicalizers\huber_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
copying cvxpy\reductions\qp2quad_form\canonicalizers\power_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
copying cvxpy\reductions\qp2quad_form\canonicalizers\quad_form_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
copying cvxpy\reductions\qp2quad_form\canonicalizers\quad_over_lin_canon.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
copying cvxpy\reductions\qp2quad_form\canonicalizers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\qp2quad_form\canonicalizers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\cbc_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\clarabel_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\conic_solver.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\copt_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\cplex_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\cvxopt_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\diffcp_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\ecos_bb_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\ecos_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\glop_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\glpk_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\glpk_mi_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\gurobi_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\mosek_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\nag_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\pdlp_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\scipy_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\scip_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\scs_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\sdpa_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\xpress_conif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
copying cvxpy\reductions\solvers\conic_solvers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\conic_solvers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\lp_solvers
copying cvxpy\reductions\solvers\lp_solvers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\lp_solvers
creating build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\copt_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\cplex_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\gurobi_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\osqp_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\piqp_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\proxqp_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\qp_solver.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\xpress_qpif.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
copying cvxpy\reductions\solvers\qp_solvers\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\reductions\solvers\qp_solvers
creating build\lib.win-amd64-cpython-312\cvxpy\utilities\cpp
copying cvxpy\utilities\cpp\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities\cpp
creating build\lib.win-amd64-cpython-312\cvxpy\utilities\cpp\sparsecholesky
copying cvxpy\utilities\cpp\sparsecholesky\__init__.py -> build\lib.win-amd64-cpython-312\cvxpy\utilities\cpp\sparsecholesky
copying cvxpy\py.typed -> build\lib.win-amd64-cpython-312\cvxpy
running build_ext
building '_cvxcore' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for cvxpy
Building wheel for qdldl (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for qdldl (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [73 lines of output]
running bdist_wheel
running build
running build_ext
Traceback (most recent call last):
File "<string>", line 81, in build_extensions
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\subprocess.py", line 466, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\subprocess.py", line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\subprocess.py", line 1538, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
main()
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\python-3.12.2.amd64\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 251, in build_wheel
return _build_backend().build_wheel(wheel_directory, config_settings,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\build_meta.py", line 404, in build_wheel
return self._build_with_temp_dir(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\build_meta.py", line 389, in _build_with_temp_dir
self.run_setup()
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
exec(code, locals())
File "<string>", line 113, in <module>
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\__init__.py", line 103, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 185, in setup
return run_commands(dist)
^^^^^^^^^^^^^^^^^^
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands
dist.run_commands()
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands
self.run_command(cmd)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command
super().run_command(command)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
cmd_obj.run()
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\normal\Lib\site-packages\wheel\bdist_wheel.py", line 368, in run
self.run_command("build")
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command
self.distribution.run_command(command)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command
super().run_command(command)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
cmd_obj.run()
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run
self.run_command(cmd_name)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command
self.distribution.run_command(command)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command
super().run_command(command)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
cmd_obj.run()
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\command\build_ext.py", line 89, in run
_build_ext.run(self)
File "D:\Applications\WinPython\WPy64-31220\settings\AppData\Local\Temp\pip-build-env-qc755lnl\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 345, in run
self.build_extensions()
File "<string>", line 83, in build_extensions
RuntimeError: CMake must be installed to build qdldl
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for qdldl
Failed to build cvxpy qdldl
ERROR: Could not build wheels for cvxpy, qdldl, which is required to install pyproject.toml-based projects
Thanks @RoyiAvital. So scs is okay now, but qdldl (dependency of osqp which is a dependency of cvxpy) still has no wheel for Python 3.12. So the next step would be to ask if wheels for 3.12 could be added at https://github.com/osqp/qdldl-python. There is a conda-forge package for qdldl for Python 3.12 so it should be compatible.
(Alternatively you could try to set up the build system to build from source by installing cmake).
@phschiele I noticed that you commented here that cvxpy will release this month with wheels for Python 3.12. I was curious if there was any overlap between the cvxpy and osqp teams to help get 3.12 wheels of qdldl released as well to allow installing cvxpy on 3.12 without building anything locally.
@wshanks , Even on conda-forge
the install won't work (Though tried at the beginning of April).
@wshanks , Even on
conda-forge
the install won't work (Though tried at the beginning of April).
if you are in a hurry, you can grab the .whl from here (minus one patch in waiting) https://github.com/cvxpy/cvxpy/actions/runs/8604826651/job/23580091820
With the provided path, there will be 1 file uploaded
Artifact name is valid!
Root directory input is valid!
Beginning upload of artifact content to blob storage
Uploaded bytes 1004790
Finished uploading artifact content to blob storage!
SHA256 hash of uploaded artifact zip is 7363d69e3816d785985b83[23](https://github.com/cvxpy/cvxpy/actions/runs/8604826651/job/23580091820#step:12:24)47ae939e03c091a18a7b618e816dee1180c633b1
Finalizing artifact upload
Artifact wheels-base-windows-2022-3.12.zip successfully finalized. Artifact ID 1395275020
Artifact wheels-base-windows-2022-3.12 has been successfully uploaded! Final size is 1004790 bytes. Artifact ID is 1395275020
Artifact download URL: https://github.com/cvxpy/cvxpy/actions/runs/86048[26](https://github.com/cvxpy/cvxpy/actions/runs/8604826651/job/23580091820#step:12:27)651/artifacts/1395275020
@RoyiAvital Strange, it "works for me." You could perhaps open an issue at https://github.com/conda-forge/cvxpy-feedstock/issues with the error.
@wshanks , Even on
conda-forge
the install won't work (Though tried at the beginning of April).
We've had working cvxpy builds for 3.12 in conda-forge for a while (including successfully running the whole test suite). If you run into problems, please raise an issue on the feedstock - it's almost certainly a misconfiguration issue, or an unsupported use case (like mixing channels, which is fragile).
I will try again today.
@h-vetinari , Are you on Windows?
Conda-forge provides cvxpy builds for windows, and I also have a windows machine to test, so I guess that counts as a yes. ;-)
Hi, I retried now on Windows + Python 3.12 using conda-forge
(I use Micro Mamba instead of Conda) and it works!
Thanks for the effort.
We just released a patch that includes wheels for 3.12: https://pypi.org/project/cvxpy/1.4.3/
Feel free to reopen if there are any remaining issues that we should take a look at with 3.12.
I think that leaves qdldl as the only dependency without wheels for Python 3.12. I think it might have less demanding build time dependencies so maybe it is easy to pip install cvxpy
on 3.12 now. Still I opened a PR to help enable wheel builds for 3.12 for qdldl here: https://github.com/osqp/qdldl-python/pull/37.
qdldl wheels are up.
@SteveDiamond Looks like your comment has (accidentally) reopened the issue. Closing.