Draft: fix #2503 , turn `cvxpy` into meta-package that depends on `cvxpy-base`
Description
See discussion in #2503, improve compatibility between cvxpy and cvxpy-base dependents.
Type of change
- [ X] New feature (backwards compatible)
- [ ] New feature (breaking API changes)
- [ ] Bug fix
- [ ] Other (Documentation, CI, ...)
Contribution checklist
- [ ] Add our license to new files.
- [ ] Check that your code adheres to our coding style.
- [ ] Write unittests.
- [ ] Run the unittests and check that they’re passing.
- [ ] Run the benchmarks to make sure your change doesn’t introduce a regression.
@PTNobel all the CI seems to pass except for the benchmarks (I presume its because no solvers is being installed).
Also, could you explain the changes you made to the PR? I don't quite follow the CI meta-package logic.
Also, could you explain the changes you made to the PR? I don't quite follow the CI meta-package logic.
Basically, for each step of the build process, we also do it in the meta-package directory. However, we only make a sdist for the meta package, since there's no code to be compiled
I think this will change what gets installed when installing from git, it will only install cvxpy-base now. Not sure if that's an issue though.
Thanks for the code review @jonathanberthias ! I'm starting to worry that this PR needs more testing on master before it gets released.
Thanks for the code review @jonathanberthias ! I'm starting to worry that this PR needs more testing on master before it gets released.
Glad to help! Let me know if/how I can contribute to this feature, I think it's a great improvement for downstream libraries.
Glad to help! Let me know if/how I can contribute to this feature, I think it's a great improvement for downstream libraries.
If you want to take it over, I know nothing about Python packaging and seem to be lost enough
But otherwise, any doc pointers on how to do dynamic versioning would be appreciated
@PTNobel @jonathanberthias as per discussion in the issue #2503 one thing that would help a lot here is to switch CVXPY versioning from custom code to standard setuptools_scm, which I have strong suspicion does pretty much the same thing. There is also need to write a custom setuptools hook to write the dependencies in the meta-package, because we want a dependency cvxpy-base==X.Y.Z where X.Y.Z are resolved dynamically. Just pushed a commit for just the meta-package pyproject.