From 5c7c23f8254ceeea6d26486b8bde0e17cc8035b9 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Tue, 8 Apr 2025 15:46:41 -0400 Subject: [PATCH 1/2] generate_rss: make pep_abstract more robust This eliminates an AttributeError during PEP editing, if the PEP being edited has an Abstract or Introduction section but with no interior content (i.e. paragraphs) yet. In practice this should have no effect on actual RSS feeds, since merged PEPs should always have a proper abstract. However, this prevents a confusing error from bubbling up during local editing. See #4355. Signed-off-by: William Woodruff --- pep_sphinx_extensions/generate_rss.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pep_sphinx_extensions/generate_rss.py b/pep_sphinx_extensions/generate_rss.py index 8afd12a10a6..eb14cf96665 100644 --- a/pep_sphinx_extensions/generate_rss.py +++ b/pep_sphinx_extensions/generate_rss.py @@ -59,10 +59,14 @@ def pep_abstract(document: nodes.document) -> str: if title_node is None: continue + para_node = None if title_node.astext() == "Abstract": - return node.next_node(nodes.paragraph).astext().strip().replace("\n", " ") + para_node = node.next_node(nodes.paragraph) elif title_node.astext() == "Introduction": - introduction = node.next_node(nodes.paragraph).astext().strip().replace("\n", " ") + para_node = node.next_node(nodes.paragraph) + + if para_node: + introduction = para_node.astext().strip().replace("\n", " ") return introduction From 5836a73b956aa8e9ff14560581a90d8ee1169ae8 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Fri, 11 Apr 2025 17:17:40 -0400 Subject: [PATCH 2/2] apply patch from @AA-Turner Signed-off-by: William Woodruff --- pep_sphinx_extensions/generate_rss.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pep_sphinx_extensions/generate_rss.py b/pep_sphinx_extensions/generate_rss.py index eb14cf96665..296bb033e0e 100644 --- a/pep_sphinx_extensions/generate_rss.py +++ b/pep_sphinx_extensions/generate_rss.py @@ -59,14 +59,12 @@ def pep_abstract(document: nodes.document) -> str: if title_node is None: continue - para_node = None if title_node.astext() == "Abstract": - para_node = node.next_node(nodes.paragraph) - elif title_node.astext() == "Introduction": - para_node = node.next_node(nodes.paragraph) - - if para_node: - introduction = para_node.astext().strip().replace("\n", " ") + if (para_node := node.next_node(nodes.paragraph)) is not None: + return para_node.astext().strip().replace("\n", " ") + return "" + if title_node.astext() == "Introduction": + introduction = node.next_node(nodes.paragraph).astext().strip().replace("\n", " ") return introduction