[FIX] core: PyPDF2 suppresses warnings
By default, PdfFileReader will monkeypatch the `warnings` module even if it has no reason whatsoever to do so and suppress the `captureWarnings` behavior. This means as soon as we've loaded a PDF file, `warnings.warn` don't trigger `logging` warnings anymore, and become invisible. This can lead to non-deterministic behaviors depending as warnings may or may not be suppressed depending when they occur relative to loading a PDF e.g. load a module which runs a test which loads a PDF before a module triggering a warning and the warning won't be visible, other way around it will. Except ofc while we have an override to PdfFileReader it's not used *everywhere*, so need to monkeypatch the init. closes odoo/odoo#60132 X-original-commit: 6b04dbcd4204a75d6bd68fc0b3010a2297779b32 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
This commit is contained in:
@@ -67,6 +67,12 @@ def rotate_pdf(pdf):
|
||||
writer.write(_buffer)
|
||||
return _buffer.getvalue()
|
||||
|
||||
# by default PdfFileReader will overwrite warnings.showwarning which is what
|
||||
# logging.captureWarnings does, meaning it essentially reverts captureWarnings
|
||||
# every time it's called which is undesirable
|
||||
old_init = PdfFileReader.__init__
|
||||
PdfFileReader.__init__ = lambda self, stream, strict=True, warndest=None, overwriteWarnings=True: \
|
||||
old_init(self, stream=stream, strict=strict, warndest=None, overwriteWarnings=False)
|
||||
|
||||
class OdooPdfFileReader(PdfFileReader):
|
||||
# OVERRIDE of PdfFileReader to add the management of multiple embedded files.
|
||||
|
||||
Reference in New Issue
Block a user