From 9b8fe1c904146aa4f7953303e41cb0887983f857 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Fri, 16 Oct 2026 17:06:57 +0200 Subject: [PATCH 1/4] fix: link check should ignore certain issues --- src/extensions/broken_link_fix.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/extensions/broken_link_fix.py b/src/extensions/broken_link_fix.py index 46ed7fad2..fd9e2f202 100644 --- a/src/extensions/broken_link_fix.py +++ b/src/extensions/broken_link_fix.py @@ -10,7 +10,6 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -import re from collections.abc import Callable from enum import StrEnum from typing import Any, cast @@ -45,10 +44,8 @@ def process_result(self: CheckExternalLinksBuilder, result: CheckResult) -> None """ match result.status: case _Status.BROKEN: - """ Ignore client errors from sourceforge.io """ - if re.match( - r"^https://[^/]+\.sourceforge\.io(/|$)", result.uri - ) and "403 Client Error" in str(result.message): + """Ignore selected HTTP errors that can be caused by access restrictions or rate limits.""" + if result.code in {401, 402, 403, 407, 418, 429, 451, 504, 511}: logger.info(darkgray("-ignored- ") + result.uri) self.write_entry( "ignored", From 764ffca678e9b7c8a6f78263eca2592785c7d421 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Mon, 19 Oct 2026 16:48:46 +0200 Subject: [PATCH 2/4] fix: re-add import re --- src/extensions/broken_link_fix.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/extensions/broken_link_fix.py b/src/extensions/broken_link_fix.py index fd9e2f202..0c3021834 100644 --- a/src/extensions/broken_link_fix.py +++ b/src/extensions/broken_link_fix.py @@ -10,6 +10,7 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* +import re from collections.abc import Callable from enum import StrEnum from typing import Any, cast From 01eadaea35c82e69a0ce7abfe25599fa4e419a95 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Tue, 20 Oct 2026 12:47:17 +0200 Subject: [PATCH 3/4] fix: do not ignore HTTP 504 504 Gateway Timeout is a genuine server-side failure and hides truly dead pages. --- src/extensions/broken_link_fix.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/extensions/broken_link_fix.py b/src/extensions/broken_link_fix.py index 0c3021834..ad1397308 100644 --- a/src/extensions/broken_link_fix.py +++ b/src/extensions/broken_link_fix.py @@ -32,6 +32,7 @@ class _Status(StrEnum): BROKEN = "broken" +IGNORED_HTTP_CODES: frozenset[int] = frozenset({401, 402, 403, 407, 418, 429, 451, 511}) def process_result(self: CheckExternalLinksBuilder, result: CheckResult) -> None: """hook a custom process_result function. @@ -45,8 +46,8 @@ def process_result(self: CheckExternalLinksBuilder, result: CheckResult) -> None """ match result.status: case _Status.BROKEN: - """Ignore selected HTTP errors that can be caused by access restrictions or rate limits.""" - if result.code in {401, 402, 403, 407, 418, 429, 451, 504, 511}: + # Ignore selected HTTP errors that can be caused by access restrictions or rate limits. + if result.code in IGNORED_HTTP_CODES: logger.info(darkgray("-ignored- ") + result.uri) self.write_entry( "ignored", From a6d6ca48f81fa9907932654d9cb37346cce3d815 Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Tue, 20 Oct 2026 14:18:01 +0200 Subject: [PATCH 4/4] fix: format check --- src/extensions/broken_link_fix.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/extensions/broken_link_fix.py b/src/extensions/broken_link_fix.py index ad1397308..02fcb6755 100644 --- a/src/extensions/broken_link_fix.py +++ b/src/extensions/broken_link_fix.py @@ -32,8 +32,10 @@ class _Status(StrEnum): BROKEN = "broken" + IGNORED_HTTP_CODES: frozenset[int] = frozenset({401, 402, 403, 407, 418, 429, 451, 511}) + def process_result(self: CheckExternalLinksBuilder, result: CheckResult) -> None: """hook a custom process_result function.