We use values attribute on a read only worksheet to get rows with values only.
3.0.1 has introduced this change in the code at line 118 of worksheet/_read_only.py:
new_row[idx] = values_only and cell['value'] or ReadOnlyCell(self, **cell)
In case the cell value is None (because it’s empty), this returns incorrectly a ReadOnlyCell object.
This creates chaos when looking for or checking the empty value of a cell in the values_only row. All this fails:
# If the cell is empty, this fails, saying 'NoneType' object has no attribute 'value' row == None # This will work, but it will NOT work if the cell is not empty row.value == None
The exception is raised from cell/read_only.py line 26. It is because the overloaded eq operator should not be called
This makes the library unusable in version 3.0.1. We have forced our tool to stay at 3.0.0.