From b2a19acde12728f2b68b3d5c27635db6f62bb0fd Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Tue, 31 Dec 2024 23:21:38 -0500 Subject: [PATCH 1/6] bug: dynamically get the latest version from release instead of tag --- doc/source/conf.py | 18 +++++++++++++++++- src/diffpy/utils/diffraction_objects.py | 1 + src/diffpy/utils/validators.py | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index 721f940e..fdbd0696 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,7 +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 # documentation root, use Path().resolve() to make it absolute, like shown here. @@ -68,6 +68,22 @@ # |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]) diff --git a/src/diffpy/utils/diffraction_objects.py b/src/diffpy/utils/diffraction_objects.py index 99b6b7a1..693e3685 100644 --- a/src/diffpy/utils/diffraction_objects.py +++ b/src/diffpy/utils/diffraction_objects.py @@ -203,6 +203,7 @@ def __add__(self, other): Examples -------- Add a scalar value to the yarray of a DiffractionObject instance: + >>> my_do = DiffractionObject(wavelength=2 * np.pi, xarray=np.array([30, 60]), yarray=np.array([1, 2]), xtype="tth") >>> new_do = my_do + 10.1 >>> new_do = 10.1 + my_do diff --git a/src/diffpy/utils/validators.py b/src/diffpy/utils/validators.py index 91a461bf..fde69d7f 100644 --- a/src/diffpy/utils/validators.py +++ b/src/diffpy/utils/validators.py @@ -23,7 +23,7 @@ def is_number(string): True >>> is_number("007") - True + False >>> is_number("five") False From 9ca7b1954376f003d48968e8fef4f45c2fe5baa5 Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Tue, 31 Dec 2024 23:21:48 -0500 Subject: [PATCH 2/6] chore: add news for how we get the version number --- news/docs-version-tag.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 news/docs-version-tag.rst diff --git a/news/docs-version-tag.rst b/news/docs-version-tag.rst new file mode 100644 index 00000000..d093b158 --- /dev/null +++ b/news/docs-version-tag.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 cf1679b7fce6f502e6b6ba93e8b07b92969be4fd Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Tue, 31 Dec 2024 23:23:17 -0500 Subject: [PATCH 3/6] chore: revert unintended change --- src/diffpy/utils/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diffpy/utils/validators.py b/src/diffpy/utils/validators.py index fde69d7f..91a461bf 100644 --- a/src/diffpy/utils/validators.py +++ b/src/diffpy/utils/validators.py @@ -23,7 +23,7 @@ def is_number(string): True >>> is_number("007") - False + True >>> is_number("five") False From 3c1cc36decb43cb843cea41ea44fd27d62d3a54c Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Tue, 31 Dec 2024 23:32:06 -0500 Subject: [PATCH 4/6] chore: revert unncessary changes --- src/diffpy/utils/diffraction_objects.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/diffpy/utils/diffraction_objects.py b/src/diffpy/utils/diffraction_objects.py index 693e3685..99b6b7a1 100644 --- a/src/diffpy/utils/diffraction_objects.py +++ b/src/diffpy/utils/diffraction_objects.py @@ -203,7 +203,6 @@ def __add__(self, other): Examples -------- Add a scalar value to the yarray of a DiffractionObject instance: - >>> my_do = DiffractionObject(wavelength=2 * np.pi, xarray=np.array([30, 60]), yarray=np.array([1, 2]), xtype="tth") >>> new_do = my_do + 10.1 >>> new_do = 10.1 + my_do From 65ce22f1c9c644ed7b363a601e5b1221a2e352ef Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 04:35:13 +0000 Subject: [PATCH 5/6] [pre-commit.ci] auto fixes from pre-commit hooks --- doc/source/conf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index fdbd0696..f91b4561 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,7 +17,9 @@ 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 # documentation root, use Path().resolve() to make it absolute, like shown here. @@ -68,8 +70,10 @@ # |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.""" + """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() @@ -79,6 +83,7 @@ def _get_latest_release_from_github(org: str, repo_name: str) -> str: 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" From b20af34d46105507757b77da55da56d6d70e1517 Mon Sep 17 00:00:00 2001 From: Sangjoon Bob Lee Date: Tue, 31 Dec 2024 23:52:12 -0500 Subject: [PATCH 6/6] chore: improve error msg for no release found --- doc/source/conf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index fdbd0696..f91b4561 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,7 +17,9 @@ 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 # documentation root, use Path().resolve() to make it absolute, like shown here. @@ -68,8 +70,10 @@ # |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.""" + """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() @@ -79,6 +83,7 @@ def _get_latest_release_from_github(org: str, repo_name: str) -> str: 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"