Adapt to SuiteSparse:GraphBLAS 10.5.0 and read its version from the library - #628
Conversation
…ibrary 10.5.0 stopped checking, after a build, whether every value happened to be the same: "GrB_Matrix_build and GrB_Vector_build: no longer do a post-iso check; they leave the matrix in non-iso format even if all the entries are the same." Four tests read that check as if it were python-graphblas's own contract and went red. Each one wanted an iso object rather than an inference, so each now asks for one with ``ss.build_scalar``, which means the same thing on every SuiteSparse version and produces the same storage formats the tests were selecting for. ``from_coo`` is left alone: adding a scan of the values to recover the old behavior would re-add the cost upstream just removed. The version gates had a second, quieter problem. ``graphblas.core.ss`` derived the C library version by parsing ``suitesparse_graphblas.__version__``, which is the version of the Python wrapper. The two normally agree, but a development build between releases reports the previous one: psg 10.4.1.0 against a 10.5.0 library here, so every gate saw 10.4.1 and any 10.5 branch would have been silently skipped. Read the library's own GxB_IMPLEMENTATION_* constants instead, falling back to the old parse where a build does not expose them. test_openmp_enabled keeps its hard assertion and gains a message saying what is wrong and that the fault is in the installed build. It caught a real one: conda-forge's first graphblas 10.5.0 build on osx-arm64 shipped without OpenMP. The build 1 rebuild (2026-08-26) restored OpenMP and the assertion passes again.
The
|
|
huh, Opus 5 posted comments as me. That's against my rules for it 😞 . Kinda helpful though. Anyway, I think the code changes here are reasonable, but the comments are WAAAY too verbose. I'll do a pass to improve docs and comments later. As the previous comment indicates, it'll be nice to get a few PRs in so we can get CI to (hopefully) pass |
New bottom of the stack; #587 and the chain above it now build on this.
SuiteSparse:GraphBLAS 10.5.0 stopped checking, after a build, whether every value happened to be the same: "GrB_Matrix_build and GrB_Vector_build: no longer do a post-iso check; they leave the matrix in non-iso format even if all the entries are the same." Four tests read that check as if it were python-graphblas's own contract and went red. Each one wanted an iso object rather than an inference, so each now asks for one with
ss.build_scalar, which means the same thing on every SuiteSparse version and produces the same storage formats the tests were selecting for.from_coois left alone: adding a scan of the values to recover the old behavior would re-add the cost upstream just removed.The version gates had a second, quieter problem.
graphblas.core.ssderived the C library version by parsingsuitesparse_graphblas.__version__, which is the version of the Python wrapper. The two normally agree, but a development build between releases reports the previous one: psg 10.4.1.0 against a 10.5.0 library here, so every gate saw 10.4.1 and any 10.5 branch would have been silently skipped. Read the library's ownGxB_IMPLEMENTATION_*constants instead, falling back to the old parse where a build does not expose them.test_openmp_enabledkeeps its hard assertion and gains a message saying what is wrong and that the fault is in the installed build. It caught a real one: conda-forge's first graphblas 10.5.0 build on osx-arm64 shipped without OpenMP. The build 1 rebuild (2026-08-26) restored OpenMP and the assertion passes again.