From e7dc79484884354697f1bac25c7ee8495566e7ae Mon Sep 17 00:00:00 2001 From: cherry530 <707078654@qq.com> Date: Wed, 13 Nov 2024 09:31:26 +0800 Subject: [PATCH] sync 2403-lts code Signed-off-by: cherry530 <707078654@qq.com> (cherry picked from commit 158ee0b72ccd2ed0b667b60fa91cc6ed011718cd) --- ...-error-checking-when-parsing-a-Blurb.patch | 150 ++++++++++++++++++ python-blurb.spec | 11 +- 2 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 Improved-error-checking-when-parsing-a-Blurb.patch diff --git a/Improved-error-checking-when-parsing-a-Blurb.patch b/Improved-error-checking-when-parsing-a-Blurb.patch new file mode 100644 index 0000000..ae74c34 --- /dev/null +++ b/Improved-error-checking-when-parsing-a-Blurb.patch @@ -0,0 +1,150 @@ +From d4b7d536b2c0228ce09d7c8271f9aeb0889b6927 Mon Sep 17 00:00:00 2001 +From: larryhastings +Date: Sun, 23 Jul 2023 06:36:51 -0700 +Subject: [PATCH] Improved error checking when parsing a Blurb. (#507) + +We now: +* Check the entries in metadata in order, so we complain about + the *first* one that has an error, which is a more familiar + user experience. +* Have checks for: + * Invalid issue number + * Invalid section + * Empty section + * Completely missing section + +(There is no test for "missing issue number", because it's legal +to have a Blurb with no issue number. "no changes" blurbs don't +have an issue number. But we do now reliably test that, *if* the +issue number is specified, it *is* correctly formatted.) +--- + blurb.py | 54 ++++++++++++++++++++------------ + tests/fail/invalid-gh-number.rst | 4 +++ + tests/fail/invalid-section.rst | 4 +++ + tests/fail/no-gh-number.rst | 4 +++ + tests/fail/no-section.rst | 3 ++ + 5 files changed, 49 insertions(+), 20 deletions(-) + create mode 100644 tests/fail/invalid-gh-number.rst + create mode 100644 tests/fail/invalid-section.rst + create mode 100644 tests/fail/no-gh-number.rst + create mode 100644 tests/fail/no-section.rst + +diff --git a/blurb.py b/blurb.py +index 51f1087..7557c23 100755 +--- a/blurb.py ++++ b/blurb.py +@@ -472,27 +472,34 @@ class Blurbs(list): + throw("Blurb 'body' can't start with " + repr(naughty_prefix) + "!") + + no_changes = metadata.get('no changes') +- section = metadata.get('section') +- +- if not no_changes: +- if not section: +- throw("No 'section' specified. You must provide one!") +- elif section not in sections: +- throw("Invalid 'section'! You must use one of the predefined sections.") +- +- issue_number = None +- +- if metadata.get("gh-issue") is not None: +- try: +- issue_number = int(metadata.get('gh-issue')) +- except (TypeError, ValueError): +- throw("Invalid GitHub issue number! (" + repr(issue_number) + ")") +- elif metadata.get("bpo") is not None: +- try: +- issue_number = int(metadata.get('bpo')) +- except (TypeError, ValueError): +- throw("Invalid bpo issue number! (" + repr(issue_number) + ")") + ++ issue_keys = { ++ 'gh-issue': 'GitHub', ++ 'bpo': 'bpo', ++ } ++ for key, value in metadata.items(): ++ # Iterate over metadata items in order. ++ # We parsed the blurb file line by line, ++ # so we'll insert metadata keys in the ++ # order we see them. So if we issue the ++ # errors in the order we see the keys, ++ # we'll complain about the *first* error ++ # we see in the blurb file, which is a ++ # better user experience. ++ if key in issue_keys: ++ try: ++ int(value) ++ except (TypeError, ValueError): ++ throw(f"Invalid {issue_keys[key]} issue number! ({value!r})") ++ ++ if key == "section": ++ if no_changes: ++ continue ++ if value not in sections: ++ throw(f"Invalid section {value!r}! You must use one of the predefined sections.") ++ ++ if not 'section' in metadata: ++ throw("No 'section' specified. You must provide one!") + + self.append((metadata, text)) + metadata = {} +@@ -854,6 +861,13 @@ Run unit tests. Only works inside source repo, not when installed. + # unittest.main doesn't work because this isn't a module + # so we'll do it ourselves + ++ while not (os.path.isdir(".git") and os.path.isdir("blurb")): ++ old_dir = os.getcwd() ++ os.chdir("..") ++ if old_dir == os.getcwd(): ++ # we reached the root and never found it! ++ sys.exit("Error: Couldn't find the root of your blurb repo!") ++ + print("-" * 79) + + for clsname, cls in sorted(globals().items()): +diff --git a/tests/fail/invalid-gh-number.rst b/tests/fail/invalid-gh-number.rst +new file mode 100644 +index 0000000..6d60917 +--- /dev/null ++++ b/tests/fail/invalid-gh-number.rst +@@ -0,0 +1,4 @@ ++.. gh-issue: abcde ++.. section: Library ++ ++Things, stuff. +\ No newline at end of file +diff --git a/tests/fail/invalid-section.rst b/tests/fail/invalid-section.rst +new file mode 100644 +index 0000000..1c0af55 +--- /dev/null ++++ b/tests/fail/invalid-section.rst +@@ -0,0 +1,4 @@ ++.. gh-issue: 8675309 ++.. section: Funky Kong ++ ++This is an invalid blurb. Shockingly, "Funky Kong" is not a valid section name. +\ No newline at end of file +diff --git a/tests/fail/no-gh-number.rst b/tests/fail/no-gh-number.rst +new file mode 100644 +index 0000000..480fcbf +--- /dev/null ++++ b/tests/fail/no-gh-number.rst +@@ -0,0 +1,4 @@ ++.. gh-issue: ++.. section: Library ++ ++Things, stuff. +\ No newline at end of file +diff --git a/tests/fail/no-section.rst b/tests/fail/no-section.rst +new file mode 100644 +index 0000000..f6e06aa +--- /dev/null ++++ b/tests/fail/no-section.rst +@@ -0,0 +1,3 @@ ++.. gh-issue: 8675309 ++ ++This is an invalid blurb. It doesn't have a "section". +\ No newline at end of file +-- +2.27.0 + diff --git a/python-blurb.spec b/python-blurb.spec index fa8a8ae..33db694 100644 --- a/python-blurb.spec +++ b/python-blurb.spec @@ -1,11 +1,12 @@ %global _empty_manifest_terminate_build 0 Name: python-blurb Version: 1.1.0 -Release: 3 +Release: 5 Summary: Command-line tool to manage CPython Misc/NEWS.d entries. License: BSD-3-Clause -URL: https://github.com/python/core-workflow/tree/master/blurb +URL: https://github.com/python/blurb Source0: https://files.pythonhosted.org/packages/71/34/676f8c4a16ac69cc5a1a59d871f6c34d019fb5f36df3a44d4e3e5f4b7362/blurb-1.1.0.tar.gz +Patch0: Improved-error-checking-when-parsing-a-Blurb.patch BuildArch: noarch @@ -40,6 +41,12 @@ PYTHONPATH=%{buildroot}%{python3_sitelib} %{buildroot}%{_bindir}/blurb --help %{_bindir}/blurb %changelog +* Fri May 10 2024 lilu - 1.1.0-5 +- Improved error checking when parsing a Blurb + +* Thu May 9 2024 tenglei - 1.1.0-4 +- url have changed on github, sync change + * Thu Apr 27 2023 wangkai <13474090681@163.com> - 1.1.0-3 - Compling package with pyproject - Obsoletes subpackage python-blurb-help -- Gitee