From e269af24e74e9e8fd1181acd48e0ce471d9aa386 Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Wed, 1 Jan 2025 00:27:32 -0500 Subject: [PATCH 1/2] fix: retrive version from release dynamically in conf.py --- doc/source/conf.py | 21 ++++++++++++++++++++- news/version-release.rst | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 news/version-release.rst diff --git a/doc/source/conf.py b/doc/source/conf.py index 721f940e..2b57d912 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,6 +17,7 @@ import time from importlib.metadata import version from pathlib import Path +import requests # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the @@ -68,11 +69,29 @@ # |version| and |release|, also used in various other places throughout the # built documents. +def _get_latest_release_from_github(org: str, repo_name: str) -> str: + """Get the highest version release (including prereleases) from GitHub + repository.""" + url = f"https://api.github.com/repos/{org}/{repo_name}/releases" + response = requests.get(url) + releases = response.json() + valid_releases = [release for release in releases if "tag_name" in release] + if not valid_releases: + return "No valid releases found" + latest_version_release = valid_releases[0]["tag_name"] + return latest_version_release + + +# Get the latest release version from GitHub repository +org = "diffpy" +repo_name = "diffpy.utils" +latest_verion_from_github = _get_latest_release_from_github(org, repo_name) + fullversion = version(project) # The short X.Y version. version = "".join(fullversion.split(".post")[:1]) # The full version, including alpha/beta/rc tags. -release = fullversion +release = latest_verion_from_github # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/news/version-release.rst b/news/version-release.rst new file mode 100644 index 00000000..d093b158 --- /dev/null +++ b/news/version-release.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* Method to retrieve the latest package version from GitHub's release page in the official documentation. The latest release on GitHub is used to retrieve the latest version of the package instead of a tag. + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* From 2d1de2cd7dbfe8600f3ff6434d685b5fd8a7ff76 Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Wed, 1 Jan 2025 00:27:51 -0500 Subject: [PATCH 2/2] chore: apply pre-commit --- doc/source/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/source/conf.py b/doc/source/conf.py index 2b57d912..6b41454d 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,6 +17,7 @@ import time from importlib.metadata import version from pathlib import Path + import requests # If extensions (or modules to document with autodoc) are in another directory, @@ -69,6 +70,7 @@ # |version| and |release|, also used in various other places throughout the # built documents. + def _get_latest_release_from_github(org: str, repo_name: str) -> str: """Get the highest version release (including prereleases) from GitHub repository."""