> For projects with native bindings you can still fairly trivially solve this with SBOMs
For bitwise identical results there are many small details that need to be taken care of, even in the pure-Python case: Ensuring that files appear in the wheel (zip) file in the same order (glob() doesn't guarantee this and you can definitely see different orders from run to run), timestamps are set to some fixed standard time. Any kind of build-time code generation or pulling in of external info like git commit hashes needs to be handled. Then once you include compiled build dependencies, there might be nondeterminism in the order that a multithreaded compiler writes object code, hidden timestamps, hidden absolute paths, and things like runtime detection of CPU version leading to different instructions being emitted on different machines.
For bitwise identical results there are many small details that need to be taken care of, even in the pure-Python case: Ensuring that files appear in the wheel (zip) file in the same order (glob() doesn't guarantee this and you can definitely see different orders from run to run), timestamps are set to some fixed standard time. Any kind of build-time code generation or pulling in of external info like git commit hashes needs to be handled. Then once you include compiled build dependencies, there might be nondeterminism in the order that a multithreaded compiler writes object code, hidden timestamps, hidden absolute paths, and things like runtime detection of CPU version leading to different instructions being emitted on different machines.