Version 2.6 has a breaking change in our Pyramid web application.
This issue is related to the change in how workbooks are read. Both 2.5 and 2.6 validate the input and create an archive. If a load_workbook is called as read_only, 2.6 creates a new archive from the validated archive filename (line 194 excel.py). 2.5 creates a second archive too, but from the original input filename (line 205 excel.py).
Both work fine when the file is on disk, but the second archive in 2.6 cannot be created ('int' object has no attribute 'seek') from a streamed file upload.
I'm struggling with finding the exact cause, so thought to try posting here. The first archive is created on Line 122 of 2.6 excel.py, and works properly. Filename is a BufferedReader type at this point. When the second archive is created, the argument (self.archive.filename) is an int.
If read-only is not set, loading the streamed workbook works as expected (the second archive is not created).