Merged
Conversation
Collaborator
|
@MartinThoma |
Member
Author
|
@pubpub-zz Sure! I've edited the first comment :-) |
Member
Author
|
There is actually another solution: Guarded imports / being really careful with the import order. But I haven't figured it out how to do it without cyclic imports. |
Codecov Report
@@ Coverage Diff @@
## main #1303 +/- ##
=======================================
Coverage 95.02% 95.02%
=======================================
Files 30 30
Lines 4986 4986
Branches 1025 1025
=======================================
Hits 4738 4738
Misses 141 141
Partials 107 107
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
MartinThoma
added a commit
that referenced
this pull request
Sep 4, 2022
Version 2.10.5, 2022-09-04 -------------------------- New Features (ENH): - Process XRefStm (#1297) - Auto-detect RTL for text extraction (#1309) Bug Fixes (BUG): - Avoid scaling cropbox twice (#1314) Robustness (ROB): - Fix offset correction in revised PDF (#1318) - Crop data of /U and /O in encryption dictionary to 48 bytes (#1317) - MultiLine bfrange in cmap (#1299) - Cope with 2 digit codes in bfchar (#1310) - Accept '/annn' charset as ASCII code (#1316) - Log errors during Float / NumberObject initialization (#1315) - Cope with corrupted entries in xref table (#1300) Documentation (DOC): - Migration guide (PyPDF2 1.x \xe2\x9e\x94 2.x) (#1324) - Creating a coverage report (#1319) - Fix AnnotationBuilder.free_text example (#1311) - Fix usage of page.scale by replacing it with page.scale_by (#1313) Developer Experience (DEV): - Only run coverage for PyPDF2 Maintenance (MAINT): - PdfReaderProtocol (#1303) - Throw PdfReadError if Trailer can't be read (#1298) - Remove catching OverflowException (#1302) Full Changelog: 2.10.4...2.10.5
Merged
pubpub-zz
added a commit
to pubpub-zz/pypdf
that referenced
this pull request
Nov 12, 2022
includes also reintroduction of py-pdf#1303 wrongly cancelled in py-pdf#1309
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PyPDF2 has some dependencies that make proper typing hard:
The simplest solution would be to put both classes in the same file, but that makes PRs hard to read. Additionally, bigger files mean merge conflicts happen more often.
Another solution is to just not use type annotations for one of the objects (or use
Anyas the type)The solution implemented in this PR is to define a
Protocol(PEP 544): A protocol just states which methods a class is expected to have (with their function signature). It's duck typing: If it walks like a duck and it quacks like a duck, then it must be a duck.So we define the expected behavior instead of referencing to the specific class.
typing.Iterable is an example for a Protocol. In the Java world, one would call this an interface.