From ed732c9e53fbcdc088283b97b09a799a1c180df2 Mon Sep 17 00:00:00 2001 From: Alexander King Date: Tue, 5 Oct 2021 11:01:32 -0400 Subject: [PATCH 1/8] Add release.pre.rst --- scripts/release.pre.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 scripts/release.pre.rst diff --git a/scripts/release.pre.rst b/scripts/release.pre.rst new file mode 100644 index 00000000000..7d17f097586 --- /dev/null +++ b/scripts/release.pre.rst @@ -0,0 +1,23 @@ +pytest-{version} +======================================= + +The pytest team is proud to announce the {version} prerelease! + +As this is a prerelease, we don't expect any major or breaking changes. We would appreciate testing of the new features, improvements, and bug fixes before the final release. Users are encouraged to take a look at the CHANGELOG carefully: + + https://docs.pytest.org/en/stable/changelog.html + +For complete documentation, please visit: + + https://docs.pytest.org/en/stable/ + +As usual, you can upgrade from PyPI via: + + pip install -U pytest + +Thanks to all of the contributors to this release: + +{contributors} + +Happy testing, +The pytest Development Team From 6016397ac8cdee9a5360ef95525637afdd3cb3f4 Mon Sep 17 00:00:00 2001 From: Alexander King Date: Tue, 5 Oct 2021 11:19:26 -0400 Subject: [PATCH 2/8] Add myself to AUTHORS --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index bfc2d3e46ee..4c895b73d0b 100644 --- a/AUTHORS +++ b/AUTHORS @@ -13,6 +13,7 @@ Ahn Ki-Wook Akiomi Kamakura Alan Velasco Alexander Johnson +Alexander King Alexei Kozlenok Allan Feldman Aly Sivji From 9a7553cd82e96a995785e158731e3f22d0e080a9 Mon Sep 17 00:00:00 2001 From: Alexander King Date: Fri, 8 Oct 2021 09:59:05 -0400 Subject: [PATCH 3/8] Update template selection --- scripts/prepare-release-pr.py | 39 +++++++++++++++++++++++++++-------- scripts/release.pre.rst | 5 ++++- scripts/release.py | 14 +++++++------ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/scripts/prepare-release-pr.py b/scripts/prepare-release-pr.py index 82da553cb2d..3c962eb1091 100644 --- a/scripts/prepare-release-pr.py +++ b/scripts/prepare-release-pr.py @@ -54,12 +54,29 @@ def prepare_release_pr( check_call(["git", "checkout", f"origin/{base_branch}"]) + changelog = Path("changelog") + + features = list(changelog.glob("*.feature.rst")) + breaking = list(changelog.glob("*.breaking.rst")) + is_feature_release = features or breaking + try: - version = find_next_version(base_branch, is_major, prerelease) + version = find_next_version( + base_branch, is_major, is_feature_release, prerelease + ) except InvalidFeatureRelease as e: print(f"{Fore.RED}{e}") raise SystemExit(1) + template_name = "" + + if is_major: + template_name = "release.pre.rst" + elif is_feature_release: + template_name = "release.minor.rst" + else: + template_name = "release.patch.rst" + print(f"Version: {Fore.CYAN}{version}") release_branch = f"release-{version}" @@ -82,7 +99,15 @@ def prepare_release_pr( # important to use tox here because we have changed branches, so dependencies # might have changed as well - cmdline = ["tox", "-e", "release", "--", version, "--skip-check-links"] + cmdline = [ + "tox", + "-e", + "release", + "--", + version, + template_name, + "--skip-check-links", + ] print("Running", " ".join(cmdline)) run( cmdline, @@ -107,7 +132,9 @@ def prepare_release_pr( print(f"Pull request {Fore.CYAN}{pr.url}{Fore.RESET} created.") -def find_next_version(base_branch: str, is_major: bool, prerelease: str) -> str: +def find_next_version( + base_branch: str, is_major: bool, is_feature_release: bool, prerelease: str +) -> str: output = check_output(["git", "tag"], encoding="UTF-8") valid_versions = [] for v in output.splitlines(): @@ -118,12 +145,6 @@ def find_next_version(base_branch: str, is_major: bool, prerelease: str) -> str: valid_versions.sort() last_version = valid_versions[-1] - changelog = Path("changelog") - - features = list(changelog.glob("*.feature.rst")) - breaking = list(changelog.glob("*.breaking.rst")) - is_feature_release = features or breaking - if is_major: return f"{last_version[0]+1}.0.0{prerelease}" elif is_feature_release: diff --git a/scripts/release.pre.rst b/scripts/release.pre.rst index 7d17f097586..ca9e8e24abe 100644 --- a/scripts/release.pre.rst +++ b/scripts/release.pre.rst @@ -3,7 +3,10 @@ pytest-{version} The pytest team is proud to announce the {version} prerelease! -As this is a prerelease, we don't expect any major or breaking changes. We would appreciate testing of the new features, improvements, and bug fixes before the final release. Users are encouraged to take a look at the CHANGELOG carefully: +As this is a prerelease, we don't expect any major or breaking changes. +We would appreciate testing of the new features, improvements, +and bug fixes before the final release. Users are encouraged to +take a look at the CHANGELOG carefully: https://docs.pytest.org/en/stable/changelog.html diff --git a/scripts/release.py b/scripts/release.py index 090712cbd3f..87d4a90e52a 100644 --- a/scripts/release.py +++ b/scripts/release.py @@ -10,7 +10,7 @@ from colorama import init -def announce(version): +def announce(version, template_name): """Generates a new release announcement entry in the docs.""" # Get our list of authors stdout = check_output(["git", "describe", "--abbrev=0", "--tags"]) @@ -22,9 +22,6 @@ def announce(version): contributors = {name for name in stdout.splitlines() if not name.endswith("[bot]")} - template_name = ( - "release.minor.rst" if version.endswith(".0") else "release.patch.rst" - ) template_text = ( Path(__file__).parent.joinpath(template_name).read_text(encoding="UTF-8") ) @@ -81,7 +78,7 @@ def check_links(): check_call(["tox", "-e", "docs-checklinks"]) -def pre_release(version, *, skip_check_links): +def pre_release(version, template_name, *, skip_check_links): """Generates new docs, release announcements and creates a local tag.""" announce(version) regen(version) @@ -108,9 +105,14 @@ def main(): init(autoreset=True) parser = argparse.ArgumentParser() parser.add_argument("version", help="Release version") + parser.add_argument("template_name") parser.add_argument("--skip-check-links", action="store_true", default=False) options = parser.parse_args() - pre_release(options.version, skip_check_links=options.skip_check_links) + pre_release( + options.version, + options.template_name, + skip_check_links=options.skip_check_links, + ) if __name__ == "__main__": From a87220477ab60e3af062f1fb7113c98f6675c79c Mon Sep 17 00:00:00 2001 From: Alexander King <55767786+king-alexander@users.noreply.github.com> Date: Mon, 11 Oct 2021 10:37:47 -0400 Subject: [PATCH 4/8] Add help text to template_name argument Co-authored-by: Bruno Oliveira --- scripts/release.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release.py b/scripts/release.py index 87d4a90e52a..b7fbe93e481 100644 --- a/scripts/release.py +++ b/scripts/release.py @@ -105,7 +105,7 @@ def main(): init(autoreset=True) parser = argparse.ArgumentParser() parser.add_argument("version", help="Release version") - parser.add_argument("template_name") + parser.add_argument("template_name", help="Name of template file to use for release announcement") parser.add_argument("--skip-check-links", action="store_true", default=False) options = parser.parse_args() pre_release( From 45e3d69706b06cadf02a8aef05de17a7d10cf985 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 Oct 2021 14:38:46 +0000 Subject: [PATCH 5/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- scripts/release.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/release.py b/scripts/release.py index b7fbe93e481..e9397ad96fd 100644 --- a/scripts/release.py +++ b/scripts/release.py @@ -105,7 +105,9 @@ def main(): init(autoreset=True) parser = argparse.ArgumentParser() parser.add_argument("version", help="Release version") - parser.add_argument("template_name", help="Name of template file to use for release announcement") + parser.add_argument( + "template_name", help="Name of template file to use for release announcement" + ) parser.add_argument("--skip-check-links", action="store_true", default=False) options = parser.parse_args() pre_release( From 5c8159f2739e62b758fed83260b50e912b5e59b9 Mon Sep 17 00:00:00 2001 From: Alexander King <55767786+king-alexander@users.noreply.github.com> Date: Mon, 11 Oct 2021 10:52:40 -0400 Subject: [PATCH 6/8] Change template selection condition Co-authored-by: Bruno Oliveira --- scripts/prepare-release-pr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare-release-pr.py b/scripts/prepare-release-pr.py index 3c962eb1091..14fbdd7c08f 100644 --- a/scripts/prepare-release-pr.py +++ b/scripts/prepare-release-pr.py @@ -70,7 +70,7 @@ def prepare_release_pr( template_name = "" - if is_major: + if prerelease: template_name = "release.pre.rst" elif is_feature_release: template_name = "release.minor.rst" From 090676a2bc35d59e20c940e4edb28bc058ccef6a Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 12 Oct 2021 09:22:39 -0300 Subject: [PATCH 7/8] Minor adjustments --- scripts/prepare-release-pr.py | 18 ++++++++---------- scripts/release.py | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/scripts/prepare-release-pr.py b/scripts/prepare-release-pr.py index 14fbdd7c08f..f16e7b9625c 100644 --- a/scripts/prepare-release-pr.py +++ b/scripts/prepare-release-pr.py @@ -58,7 +58,7 @@ def prepare_release_pr( features = list(changelog.glob("*.feature.rst")) breaking = list(changelog.glob("*.breaking.rst")) - is_feature_release = features or breaking + is_feature_release = bool(features or breaking) try: version = find_next_version( @@ -68,15 +68,6 @@ def prepare_release_pr( print(f"{Fore.RED}{e}") raise SystemExit(1) - template_name = "" - - if prerelease: - template_name = "release.pre.rst" - elif is_feature_release: - template_name = "release.minor.rst" - else: - template_name = "release.patch.rst" - print(f"Version: {Fore.CYAN}{version}") release_branch = f"release-{version}" @@ -97,6 +88,13 @@ def prepare_release_pr( print(f"Branch {Fore.CYAN}{release_branch}{Fore.RESET} created.") + if prerelease: + template_name = "release.pre.rst" + elif is_feature_release: + template_name = "release.minor.rst" + else: + template_name = "release.patch.rst" + # important to use tox here because we have changed branches, so dependencies # might have changed as well cmdline = [ diff --git a/scripts/release.py b/scripts/release.py index e9397ad96fd..27fc68292de 100644 --- a/scripts/release.py +++ b/scripts/release.py @@ -80,7 +80,7 @@ def check_links(): def pre_release(version, template_name, *, skip_check_links): """Generates new docs, release announcements and creates a local tag.""" - announce(version) + announce(version, template_name) regen(version) changelog(version, write_out=True) fix_formatting() From ba106f817041c232a1edaea722010c552575f440 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 12 Oct 2021 09:31:19 -0300 Subject: [PATCH 8/8] Improve prerelease text --- scripts/release.pre.rst | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/scripts/release.pre.rst b/scripts/release.pre.rst index ca9e8e24abe..f0b054de3fc 100644 --- a/scripts/release.pre.rst +++ b/scripts/release.pre.rst @@ -3,22 +3,25 @@ pytest-{version} The pytest team is proud to announce the {version} prerelease! -As this is a prerelease, we don't expect any major or breaking changes. -We would appreciate testing of the new features, improvements, -and bug fixes before the final release. Users are encouraged to -take a look at the CHANGELOG carefully: +This is a prerelease, not intended for production use, but to test the upcoming features and improvements +in order to catch any major problems before the final version is released to the major public. - https://docs.pytest.org/en/stable/changelog.html +We appreciate your help testing this out before the final release, making sure to report any +regressions to our issue tracker: + +https://github.com/pytest-dev/pytest/issues -For complete documentation, please visit: +When doing so, please include the string ``[prerelease]`` in the title. - https://docs.pytest.org/en/stable/ +You can upgrade from PyPI via: -As usual, you can upgrade from PyPI via: + pip install pytest=={version} - pip install -U pytest +Users are encouraged to take a look at the CHANGELOG carefully: + + https://docs.pytest.org/en/stable/changelog.html -Thanks to all of the contributors to this release: +Thanks to all the contributors to this release: {contributors}