At the moment, 7zip files are generating memory issues and even OOM errors on user installations. This is because the current stable release of py7zr does not support decompression streaming, and RomM needs to decompress the each 7zip file in the library into memory to be able to calculate hashes.
This change introduces a py7zr fork I created to have a stable commit SHA to refer to in case upstream gets any forced pushes. It includes the contents of the pull request the py7zr creator is working on to support decompression streaming [1].
The way decompression streaming is implemented in py7zr is different than the other compression utilities. Instead of being able to provide a bytes iterator, we need to provide a Py7zIO implementation that will call a callback on each read and write operation.
At the moment, 7zip files are generating memory issues and even OOM errors on user installations. This is because the current stable release of
py7zr
does not support decompression streaming, and RomM needs to decompress the each 7zip file in the library into memory to be able to calculate hashes.This change introduces a
py7zr
fork I created to have a stable commit SHA to refer to in case upstream gets any forced pushes. It includes the contents of the pull request thepy7zr
creator is working on to support decompression streaming [1].The way decompression streaming is implemented in
py7zr
is different than the other compression utilities. Instead of being able to provide abytes
iterator, we need to provide aPy7zIO
implementation that will call a callback on each read and write operation.[1] https://github.com/miurahr/py7zr/pull/620