From 8fa9c9b5211cc05a5f6d8e0158a75a1ea8d321b4 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:18:39 +0000 Subject: [PATCH 01/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_page.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pypdf/_page.py b/pypdf/_page.py index 8db1866aa..b29b9c4e5 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1248,6 +1248,7 @@ def _merge_page( self.replace_contents(ContentStream(new_content_array, self.pdf)) self[NameObject(PG.RESOURCES)] = new_resources self[NameObject(PG.ANNOTS)] = new_annots + return def _merge_page_writer( self, From 96c92b94229067a16583c53990e36a0e012425d6 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:21:27 +0000 Subject: [PATCH 02/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_writer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 0c9a7da33..ce4444716 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2187,6 +2187,7 @@ def clean_forms( clean(content, images, forms) page.replace_contents(content) + return def remove_images( self, From 552cc82e6bf3173c3e8eb99ba99a539f3d0b5dd8 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:26:58 +0000 Subject: [PATCH 03/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 55dad16f3..7525c4e56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -175,7 +175,6 @@ ignore = [ "PYI042", # Type alias `mode_str_type` should be CamelCase "RET501", # Do not explicitly `return None` in function if it is the only possible return value "RET502", # Do not implicitly `return None` in function able to return non-`None` value - "RET503", # Missing explicit `return` at the end of function able to return non-`None` value "RET505", # Unnecessary `else` after `return` statement "RUF001", # Detect confusable Unicode-to-Unicode units. Introduces bugs "RUF002", # Detect confusable Unicode-to-Unicode units. Introduces bugs From e1b86e38b88e972822864a9cb90295b19eb6b89f Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:35:12 +0000 Subject: [PATCH 04/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_writer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index ce4444716..9850970d2 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2187,7 +2187,7 @@ def clean_forms( clean(content, images, forms) page.replace_contents(content) - return + return def remove_images( self, @@ -3106,6 +3106,7 @@ def find_outline_item( o = cast(TreeObject, o["/Next"]) else: return None + return def find_bookmark( self, From 0696f2a4a93efd024b3d4f128d9688a1dfe77756 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:11:14 +0000 Subject: [PATCH 05/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 7525c4e56..a6aa55bb6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -207,6 +207,7 @@ max-complexity = 54 # Recommended: 10 [tool.ruff.lint.per-file-ignores] "_cryptography.py" = ["S304", "S305"] # Use of insecure cipher / modes, aka RC4 and AES-ECB "_encryption.py" = ["S324"] +"_page.py" = ["RET503"] # Missing explicit return at the end of function able to return non-None value "_writer.py" = ["S324"] "pypdf/_codecs/symbol.py" = ["A005"] # Module shadows a Python standard-library module "types.py" = ["A005"] # Module shadows a Python standard-library module From 95568ef22d14ae7acab14b267025400c9a8d80d2 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:12:52 +0000 Subject: [PATCH 06/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_page.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pypdf/_page.py b/pypdf/_page.py index b29b9c4e5..8db1866aa 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1248,7 +1248,6 @@ def _merge_page( self.replace_contents(ContentStream(new_content_array, self.pdf)) self[NameObject(PG.RESOURCES)] = new_resources self[NameObject(PG.ANNOTS)] = new_annots - return def _merge_page_writer( self, From f5c84e5238a7fd7979e56476ff0d2c5aa4e0d164 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sun, 23 Mar 2025 18:47:56 +0000 Subject: [PATCH 07/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_page.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypdf/_page.py b/pypdf/_page.py index 8db1866aa..66574d112 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1144,7 +1144,7 @@ def _merge_page( ctm: Optional[CompressedTransformationMatrix] = None, over: bool = True, expand: bool = False, - ) -> None: + ) -> None: # noqa: RET503 # First we work on merging the resource dictionaries. This allows us # to find out what symbols in the content streams we might need to # rename. From d1d8ed60dca87d7a779d673aaac8aac26fce6a9e Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sun, 23 Mar 2025 18:50:24 +0000 Subject: [PATCH 08/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a6aa55bb6..7525c4e56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -207,7 +207,6 @@ max-complexity = 54 # Recommended: 10 [tool.ruff.lint.per-file-ignores] "_cryptography.py" = ["S304", "S305"] # Use of insecure cipher / modes, aka RC4 and AES-ECB "_encryption.py" = ["S324"] -"_page.py" = ["RET503"] # Missing explicit return at the end of function able to return non-None value "_writer.py" = ["S324"] "pypdf/_codecs/symbol.py" = ["A005"] # Module shadows a Python standard-library module "types.py" = ["A005"] # Module shadows a Python standard-library module From f672d30e38bd649793fd86f2d07ed1f7835edd8c Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sun, 23 Mar 2025 18:52:53 +0000 Subject: [PATCH 09/14] DEV: Remove ignore Ruff rule RET503 RET503: Missing explicit "return" at the end of function able to return non-"None" value. --- pypdf/_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 9850970d2..474643123 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2187,7 +2187,7 @@ def clean_forms( clean(content, images, forms) page.replace_contents(content) - return + return [], [] def remove_images( self, From 6c2a441d1792b23498d2ed92f3a9dd55c83ff329 Mon Sep 17 00:00:00 2001 From: Stefan <96178532+stefan6419846@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:17:22 +0100 Subject: [PATCH 10/14] avoid noqa comment --- pypdf/_page.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pypdf/_page.py b/pypdf/_page.py index 66574d112..1a515782e 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1144,7 +1144,7 @@ def _merge_page( ctm: Optional[CompressedTransformationMatrix] = None, over: bool = True, expand: bool = False, - ) -> None: # noqa: RET503 + ) -> None: # First we work on merging the resource dictionaries. This allows us # to find out what symbols in the content streams we might need to # rename. @@ -1153,9 +1153,10 @@ def _merge_page( if hasattr( self.indirect_reference.pdf, "_add_object" ): # ---------- to detect PdfWriter - return self._merge_page_writer( + self._merge_page_writer( page2, page2transformation, ctm, over, expand ) + return except (AssertionError, AttributeError): pass From 14c7d6b1df342630f3c059a930a3b4ffe2e2c43c Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 18 Jul 2025 07:00:15 +0000 Subject: [PATCH 11/14] Fix errors --- pypdf/_page.py | 3 ++- pypdf/_writer.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pypdf/_page.py b/pypdf/_page.py index cd799868f..27cb76300 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1087,7 +1087,7 @@ def _merge_page( return self._merge_page_writer( page2, page2transformation, ctm, over, expand ) - return + return None except (AssertionError, AttributeError): pass @@ -1180,6 +1180,7 @@ def _merge_page( self.replace_contents(ContentStream(new_content_array, self.pdf)) self[NameObject(PG.RESOURCES)] = new_resources self[NameObject(PG.ANNOTS)] = new_annots + return def _merge_page_writer( self, diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 40d2e297d..d46b4da10 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2240,7 +2240,7 @@ def clean_forms( clean(content, images, forms, text_filters) page.replace_contents(content) - return [], [] + return [], [] def remove_images( self, @@ -3214,7 +3214,7 @@ def find_outline_item( o = cast(TreeObject, o["/Next"]) else: return None - return + return None def find_bookmark( self, From 8c49df42b0deaa702cb1ec72845635a9ae8b6d81 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 18 Jul 2025 07:22:44 +0000 Subject: [PATCH 12/14] Fix another error --- pypdf/_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index d46b4da10..5fd4e271e 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -3214,7 +3214,7 @@ def find_outline_item( o = cast(TreeObject, o["/Next"]) else: return None - return None + return def find_bookmark( self, From fef0f080e9f19e39c7793b8c4cafbb148af3c9bd Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 18 Jul 2025 08:14:27 +0000 Subject: [PATCH 13/14] Fix RET502 erros --- pypdf/_page.py | 2 +- pypdf/_writer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pypdf/_page.py b/pypdf/_page.py index 27cb76300..f812dbbbf 100644 --- a/pypdf/_page.py +++ b/pypdf/_page.py @@ -1180,7 +1180,7 @@ def _merge_page( self.replace_contents(ContentStream(new_content_array, self.pdf)) self[NameObject(PG.RESOURCES)] = new_resources self[NameObject(PG.ANNOTS)] = new_annots - return + return None def _merge_page_writer( self, diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 5fd4e271e..d46b4da10 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -3214,7 +3214,7 @@ def find_outline_item( o = cast(TreeObject, o["/Next"]) else: return None - return + return None def find_bookmark( self, From dd7dd06fb88df04b02ca26f9dafdf288712c33bc Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Fri, 18 Jul 2025 08:31:36 +0000 Subject: [PATCH 14/14] Comment and fix error --- pypdf/_writer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index d46b4da10..78eee8984 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2240,7 +2240,7 @@ def clean_forms( clean(content, images, forms, text_filters) page.replace_contents(content) - return [], [] + return [], [] # type: ignore def remove_images( self, @@ -3214,7 +3214,7 @@ def find_outline_item( o = cast(TreeObject, o["/Next"]) else: return None - return None + return None # This line may be unreachable? def find_bookmark( self,