Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.12] Docs: Ensure no warnings are found in the NEWS file before a given line number (GH-119221) #119266

Merged
merged 1 commit into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/reusable-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
40 changes: 40 additions & 0 deletions Doc/tools/check-warnings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
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 = {
Expand Down Expand Up @@ -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(
Expand All @@ -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:
Expand Down Expand Up @@ -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


Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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.
Loading