]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] Docs: Ensure no warnings are found in the NEWS file before a given line number...
authorHugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Tue, 21 May 2024 14:40:16 +0000 (10:40 -0400)
committerGitHub <noreply@github.com>
Tue, 21 May 2024 14:40:16 +0000 (08:40 -0600)
.github/workflows/reusable-docs.yml
Doc/tools/check-warnings.py
Misc/NEWS.d/next/Library/2023-04-10-00-04-37.gh-issue-87106.UyBnPQ.rst
Misc/NEWS.d/next/Library/2024-04-17-18-00-30.gh-issue-80361.RstWg-.rst
Misc/NEWS.d/next/Library/2024-04-24-12-20-48.gh-issue-118013.TKn_kZ.rst
Misc/NEWS.d/next/Library/2024-04-24-12-29-33.gh-issue-118221.2k_bac.rst
Misc/NEWS.d/next/Library/2024-04-25-12-02-06.gh-issue-118042.2EcdHf.rst

index 9e26d7847d2bd33d295e704d7c32f2491025d904..859f78d043ba9267b9c9d1811ce2215e971449de 100644 (file)
@@ -62,7 +62,8 @@ jobs:
         python Doc/tools/check-warnings.py \
           --annotate-diff '${{ env.branch_base }}' '${{ env.branch_pr }}' \
           --fail-if-regression \
-          --fail-if-improved
+          --fail-if-improved \
+          --fail-if-new-news-nit
 
   # This build doesn't use problem matchers or check annotations
   build_doc_oldest_supported_sphinx:
index 809a8d63087e12e0af672e9cbdb6c5c38594f1aa..c50b00636c36ce545cc9352f5f2e11a0f1f9ec8b 100644 (file)
@@ -13,6 +13,9 @@ import sys
 from pathlib import Path
 from typing import TextIO
 
+# Fail if NEWS nit found before this line number
+NEWS_NIT_THRESHOLD = 200
+
 # Exclude these whether they're dirty or clean,
 # because they trigger a rebuild of dirty files.
 EXCLUDE_FILES = {
@@ -245,6 +248,32 @@ def fail_if_improved(
     return 0
 
 
+def fail_if_new_news_nit(warnings: list[str], threshold: int) -> int:
+    """
+    Ensure no warnings are found in the NEWS file before a given line number.
+    """
+    news_nits = (
+        warning
+        for warning in warnings
+        if "/build/NEWS:" in warning
+    )
+
+    # Nits found before the threshold line
+    new_news_nits = [
+        nit
+        for nit in news_nits
+        if int(nit.split(":")[1]) <= threshold
+    ]
+
+    if new_news_nits:
+        print("\nError: new NEWS nits:\n")
+        for warning in new_news_nits:
+            print(warning)
+        return -1
+
+    return 0
+
+
 def main(argv: list[str] | None = None) -> int:
     parser = argparse.ArgumentParser()
     parser.add_argument(
@@ -264,6 +293,14 @@ def main(argv: list[str] | None = None) -> int:
         action="store_true",
         help="Fail if new files with no nits are found",
     )
+    parser.add_argument(
+        "--fail-if-new-news-nit",
+        metavar="threshold",
+        type=int,
+        nargs="?",
+        const=NEWS_NIT_THRESHOLD,
+        help="Fail if new NEWS nit found before threshold line number",
+    )
 
     args = parser.parse_args(argv)
     if args.annotate_diff is not None and len(args.annotate_diff) > 2:
@@ -304,6 +341,9 @@ def main(argv: list[str] | None = None) -> int:
     if args.fail_if_improved:
         exit_code += fail_if_improved(files_with_expected_nits, files_with_nits)
 
+    if args.fail_if_new_news_nit:
+        exit_code += fail_if_new_news_nit(warnings, args.fail_if_new_news_nit)
+
     return exit_code
 
 
index 6f13188f6f119ffc3ab4cdbf8868d5895e7e69cf..2c736e72476313aba2afeefd1b96fe38328f46e4 100644 (file)
@@ -1,3 +1,3 @@
-Fixed handling in :meth:`inspect.signature.bind` of keyword arguments having
+Fixed handling in :meth:`inspect.Signature.bind` of keyword arguments having
 the same name as positional-only arguments when a variadic keyword argument
 (e.g. ``**kwargs``) is present.
index 3bbae23cc18bf6c5b6d94eeb1a51a39ef438d36f..ce6e19565a4070e3037f15921b9e6fd729c34661 100644 (file)
@@ -1,2 +1,2 @@
-Fix TypeError in :func:`email.Message.get_payload` when the charset is :rfc:`2231`
-encoded.
+Fix TypeError in :func:`email.message.Message.get_payload` when the charset is
+:rfc:`2231` encoded.
index 8eb68ebe99ba155dde26afcf0f9af315b19dae96..aa2da4f837bb6c70374892b493a5be6edc5e594b 100644 (file)
@@ -5,5 +5,5 @@ to that instance's class to persist in an internal cache in the
 class was dynamically created, the class held strong references to other
 objects which took up a significant amount of memory, and the cache
 contained the sole strong reference to the class. The fix for the regression
-leads to a slowdown in :func:`getattr_static`, but the function should still
-be signficantly faster than it was in Python 3.11. Patch by Alex Waygood.
+leads to a slowdown in :func:`!getattr_static`, but the function should still
+be significantly faster than it was in Python 3.11. Patch by Alex Waygood.
index 9b0ea9978a195eb4cd792702a56586fa6804b942..94867b43e68eb394c2cd7f02ed9cb9405d15ad6b 100644 (file)
@@ -1,2 +1,2 @@
-Fix a bug where :func:`sqlite3.iterdump` could fail if a custom :attr:`row
+Fix a bug where :func:`!sqlite3.iterdump` could fail if a custom :attr:`row
 factory <sqlite3.Connection.row_factory>` was used. Patch by Erlend Aasland.
index 7337aae0981ef50d86e87dba6127ed3d128a351c..5ef2cd545952e110f141db12f607cf1705b7784b 100644 (file)
@@ -1,2 +1,2 @@
-Fix an unraisable exception in :meth:`telnetlib.Telnet.__del__` when the
+Fix an unraisable exception in :meth:`!telnetlib.Telnet.__del__` when the
 ``__init__()`` method was not called.