Conversation
cako
left a comment
There was a problem hiding this comment.
Looks really good! The website looks great. Left a few comments. For some improvements I'd consider:
- Use nox for local testing different Python versions
- Retire Makefile (doesn't work natively on Windows, but nox does)
- Default to uv, then conda, then pip.
Also, for the segmentation.py example to work, I need to crank up the maxiter to 30. Otherwise I get:
r = _zeros._bisect(f, a, b, xtol, rtol, maxiter, args, full_output, disp)
RuntimeError: Failed to converge after 20 iterations.
requirements-dev.txt
Outdated
There was a problem hiding this comment.
I guess same for requirements.txt?
For now I kept it because I was allowing one to use pip to create an environment, but I think we can just change the instructions to pip install .[dev]... will do that and get rid of these files 😄
There was a problem hiding this comment.
Ok, change of plan... completely removed the requirements* files and any use/mention of them - 0235ecb, 308a007
We have now only conda and uv as two alternative setups 😄 For pure pip venv-based environments we used to provide commands with the requirements files, I tried using dependency-groups but that apparently does not work, so I think it is time to retire it - if someone wants to use it at the own risk, I am sure they can figure out how to install the required dependencies by hand 😉
There was a problem hiding this comment.
awesome! i think that's the right move. have you tried the latest version of pip? it should support dependency groups
@cako thanks a lot! I tried to reply to the various comments inline and add links to the commit which hopefully address your suggestions 😄 Regarding the 4 points above, I'll reply here (and ask a few questions 😉):
|
Makes sense! The benefit of nox for precommit is that you dont get fooled by possible local environment. Its a small issue though, I think for testing is a lot more valuable.
Fair enough lol
I don't think I've seen recent benchmarks on this but pip has come a long way now that wheels exist and libraries are moving towards it. MKL is still a sore topic for sure but again I don't know if this would make any difference with PyProximal. Worth a benchmark! Conda/mamba/pixi still have many benefits but to be honest conda's slowness and issues with licensing have made me dump it entirely and stop recommending it. Its biggest benefit which is dependencies in other languages is not required here. I think if we are worried about performance the most obvious step should be a GPU integration (I'd be happy to write some code for this btw!). As it stands, I'd be happy to keep it as a easy-to-install-but-not-so-optimal as the default.
I'm on Ubuntu 22.04.4 Intel i7-8565U. This is my numpy config: Build Dependencies:
blas:
detection method: pkgconfig
found: true
include directory: /opt/_internal/cpython-3.14.0/lib/python3.14/site-packages/scipy_openblas64/include
lib directory: /opt/_internal/cpython-3.14.0/lib/python3.14/site-packages/scipy_openblas64/lib
name: scipy-openblas
openblas configuration: OpenBLAS 0.3.31.dev USE64BITINT DYNAMIC_ARCH NO_AFFINITY
Haswell MAX_THREADS=64
pc file directory: /project/.openblas
version: 0.3.31.dev
lapack:
detection method: pkgconfig
found: true
include directory: /opt/_internal/cpython-3.14.0/lib/python3.14/site-packages/scipy_openblas64/include
lib directory: /opt/_internal/cpython-3.14.0/lib/python3.14/site-packages/scipy_openblas64/lib
name: scipy-openblas
openblas configuration: OpenBLAS 0.3.31.dev USE64BITINT DYNAMIC_ARCH NO_AFFINITY
Haswell MAX_THREADS=64
pc file directory: /project/.openblas
version: 0.3.31.dev
Machine Information:
build:
cpu: x86_64
endian: little
family: x86_64
system: linux
host:
cpu: x86_64
endian: little
family: x86_64
system: linux
Python Information:
path: /tmp/build-env-l8zbez0v/bin/python
version: '3.14'
SIMD Extensions:
baseline:
- X86_V2
found:
- X86_V3
not found:
- X86_V4
- AVX512_ICL
- AVX512_SPR |
|
@cako thanks! Alright:
|
This PR adds support for UV to PyProximal:
pyproject.tomluv.lock*MakefileIt also modernizes the overall tooling:
setup.cfgtopyproject.tomlFinally, it contains various improvements to the documentation:
sphinx-designto have tabs in installation instructions for conda/pip/uv