Depends on what you mean by “in parallel”. You could do a “fat” wheel where you put two .so
/.dll
files next to each other for each build as long as we make sure the file names we search for in Python itself won’t clash. Otherwise it’s like installing any other package unless you want to change the import system.
Pip’s logic uses packging.tags
which calculates the list of acceptable wheel tags. The code specifically related to the stable ABI is covered in:
So old versions of pip today will consider any abi3 usage for the version of Python being installed for and older as being compatible. If some magical point in time where abi3
wheel tag means something different for Python 3.13 than all previous versions then that will only work with new pip versions. If you change the ABI version (i.e., abi4
) then those wheel files will simply be ignored by old pip versions.