-
Couldn't load subscription status.
- Fork 297
Description
It was informally reported to me that in some contexts1, there was an ABI incompatibility between yt and ewah-bool-utils, which manifested as an exception, preventing importing yt altogether. I don't have the exact tracebacks but here's the sort of thing we've seen:
ValueError: ewah_bool_utils.ewah_bool_wrap.SparseUnorderedBitmaskSet size changed, may indicate binary incompatibility. Expected 72 from C header, got 48 from PyObjectI suspect this class of problems are caused by ewah-bool-utils being both a compile-time and a runtime dependency and partially written in Cython, meaning that the exact layout of the class SparseUnorderedBitmaskSet that yt is compiled against is generated and may differ from the one that was used to compile ewah-bool-utils itself. In short, compilation and runtime do not necessarily use a single copy of ewah-bool-utils (which is especially true when building in isolation, or when retrieving pre-compiled wheels from PyPI), which may have different ABIs that we do not control...
I don't know yet whether the problem should be addressed in yt or ewah-bool-utils, but I suspect it might be possible to eliminate the build-time dependency relation, and in any case this issue will get much better visibility on this side.
Tentatively marking this as a blocker as the bug is critical to users who encounter it, and the workaround (building both packages from source, without isolation) is far from trivial if one doesn't already know a lot about Python packaging.
Footnotes
-
at least once an old mac-intel (@jordidj) as well as a mac-arm M1 (@brittonsmith) ↩