PyPDF2 v2.0.0 Release Notes
Release Date: 2022-06-01 // almost 2 years ago-
๐ The 2.0.0 release of PyPDF2 includes three core changes:
๐ 1. Dropping support for Python 3.5 and older.
- Introducing type annotations.
- Interface changes, mostly to have PEP8-compliant names
๐ We introduced a deprecation process that hopefully helps users to avoid unexpected breaking changes.
๐ฅ Breaking Changes (DEP)
- ๐ PyPDF2 2.0 requires Python 3.6+. Python 2.7 and 3.5 support were dropped.
- ๐ PdfFileReader: The "warndest" parameter was removed
- โ PdfFileReader and PdfFileMerger no longer have the
overwriteWarnings
parameter. The new behavior isoverwriteWarnings=False
. - ๐ merger: OutlinesObject was removed without replacement.
- ๐ merger.py โ _merger.py: You must import PdfFileMerger from PyPDF2 directly.
- utils:
ConvertFunctionsToVirtualList
was removedformatWarning
was removedisInt(obj)
: Useinstance(obj, int)
insteadu_(s)
: Uses
directlychr_(c)
: Usechr(c)
insteadbarray(b)
: Usebytearray(b)
insteadisBytes(b)
: Useinstance(b, type(bytes()))
insteadxrange_fn
: Userange
insteadstring_type
: Usestr
insteadisString(s)
: Useinstance(s, str)
instead_basestring
: Usestr
instead- All Exceptions are now in
PyPDF2.errors
: - PageSizeNotDefinedError
- PdfReadError
- PdfReadWarning
- PyPdfError
- ๐
PyPDF2.pdf
(thepdf
module) no longer exists. The contents were moved with the library. You should most likely import directly fromPyPDF2
instead. TheRectangleObject
is inPyPDF2.generic
. - โ
The
Resources
,Scripts
, andTests
will no longer be part of the distribution files on PyPI. This should have little to no impact on most people. TheTests
are renamed totests
, theResources
are renamed toresources
. Both are still in the git repository. TheScripts
are now in cpdf.Sample_Code
was moved to thedocs
.
๐ For a full list of deprecated functions, please see the changelog of version 1.28.0.
๐ New Features (ENH)
- Improve space setting for text extraction (#922)
- Allow setting the decryption password in
PdfReader.__init__
(#920) - Add Page.add_transformation (#883)
๐ Bug Fixes (BUG)
- Fix error adding transformation to page without /Contents (#908)
Robustness (ROB)
- Cope with invalid length in streams (#861)
๐ Documentation (DOC)
- ๐ Fix style of 1.25 and 1.27 patch notes (#927)
- Transformation (#907)
Developer Experience (DEV)
- Create flake8 config file (#916)
- Use relative imports (#875)
๐ง Maintenance (MAINT)
- Use Python 3.6 language features (#849)
- ๐ Add wrapper function for PendingDeprecationWarnings (#928)
- Use new PEP8 compliant names (#884)
- Explicitly represent transformation matrix (#878)
- Inline PAGE_RANGE_HELP string (#874)
- ๐ Remove unnecessary generics imports (#873)
- ๐ Remove star imports (#865)
- ๐ merger.py โ _merger.py (#864)
- Type annotations for all functions/methods (#854)
- ๐ Add initial type support with mypy (#853)
โ Testing (TST)
- ๐ Regression test for xmp_metadata converter (#923)
- Checkout submodule sample-files for benchmark
- ๐ Add text extracting performance benchmark
- Use new PyPDF2 API in benchmark (#902)
- โ Make test suite fail for uncaught warnings (#892)
- ๐ท Remove -OO testrun from CI (#901)
- Improve tests for convert_to_int (#899)