- Add force-override monkey-patches for deprecated methods (getObject, getData) in both PyPDF2.generic._base and PyPDF2.generic modules
- Create DecodedStreamObject wrapper for setData/getData compatibility
- Add explicit page copying after cloneReaderDocumentRoot in tests to fix empty PDF issue
- Update documentation with monkey-patching approach, troubleshooting guide, and test results
- Apply patches at module level in both pdf.py and ir_actions_report.py
- All PyPDF2 deprecation errors now resolved for PDF generation and attachment workflows
🤖 assisted by claude
🤖 assisted by claude
Added explicit page copying after cloneReaderDocumentRoot() calls because
PyPDF2 3.x only copies document structure, not content pages.
🤖 assisted by claude
Fix additional PyPDF2 3.0+ deprecation error for cloneReaderDocumentRoot
method which was replaced with clone_reader_document_root.
Changes:
- Add cloneReaderDocumentRoot compatibility method to PdfFileWriter wrapper
- Update documentation to include the new method mapping
- Resolves account_edi PDF generation error
Resolves PyPDF2.errors.DeprecationError: cloneReaderDocumentRoot is deprecated
and was removed in PyPDF2 3.0.0. Use clone_reader_document_root instead.
🤖 assisted by claude
Add compatibility wrapper classes for PdfFileWriter/PdfFileReader
to support both PyPDF2 2.x and 3.x versions.
Changes:
- Add PdfWriter/PdfReader compatibility wrappers in odoo/tools/pdf.py
- Add compatibility classes in odoo/addons/base/models/ir_actions_report.py
- Create comprehensive documentation in doc/PATCH_PDFWRITER.md
Resolves PyPDF2.errors.DeprecationError: PdfFileWriter is deprecated
and was removed in PyPDF2 3.0.0.
🤖 assisted by claude
The diagram had a cycle where node 'CLI' was inside subgraph 'CLI', creating:
'Setting CLI as parent of CLI would create a cycle'
Fixed by renaming the node to 'CLIEP' (CLI Entrypoints) to avoid the naming conflict.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>