From f7fbfd6532245c0b8699677a7c291e8b1ac1f29d Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Mon, 27 Apr 2026 04:36:52 +0000 Subject: [PATCH 1/4] Treat 0.0.0 as invalid version in get_version_info --- eng/tools/azure-sdk-tools/packaging_tools/package_utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py index 1a756197bbb0..fab4a2b6c7be 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py @@ -68,6 +68,11 @@ def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[st _LOGGER.warning(f"Failed to get version info from PyPI for {package_name}: {e}") last_version = "" last_stable_release = "" + + # 0.0.0 is not valid version although it is in pypi + if last_version.startswith("0.0.0"): + return "", "" + return last_version, str(last_stable_release) From 706f39681bef5fdf0813ee12b1ada47098949581 Mon Sep 17 00:00:00 2001 From: Yuchao Yan Date: Mon, 27 Apr 2026 12:49:18 +0800 Subject: [PATCH 2/4] Update eng/tools/azure-sdk-tools/packaging_tools/package_utils.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- eng/tools/azure-sdk-tools/packaging_tools/package_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py index fab4a2b6c7be..96a44cabf3f6 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py @@ -69,7 +69,7 @@ def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[st last_version = "" last_stable_release = "" - # 0.0.0 is not valid version although it is in pypi + # Ignore 0.0.0 when it appears on PyPI as a placeholder or name-reservation version. if last_version.startswith("0.0.0"): return "", "" From 97966e781af41047350c6dd133fa2419d8204686 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 04:52:46 +0000 Subject: [PATCH 3/4] Use packaging.version.Version for 0.0.0 check; add unit tests Agent-Logs-Url: https://github.com/Azure/azure-sdk-for-python/sessions/4ebec9df-c06c-4b15-a0a9-97e80d6dc045 Co-authored-by: msyyc <70930885+msyyc@users.noreply.github.com> --- .../packaging_tools/package_utils.py | 3 +- .../tests/test_package_utils.py | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py index 96a44cabf3f6..1b5f197de532 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py @@ -1,6 +1,7 @@ import re import sys import os +from packaging.version import Version import ast import shutil from importlib.util import find_spec @@ -70,7 +71,7 @@ def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[st last_stable_release = "" # Ignore 0.0.0 when it appears on PyPI as a placeholder or name-reservation version. - if last_version.startswith("0.0.0"): + if last_version and Version(last_version).base_version == "0.0.0": return "", "" return last_version, str(last_stable_release) diff --git a/eng/tools/azure-sdk-tools/tests/test_package_utils.py b/eng/tools/azure-sdk-tools/tests/test_package_utils.py index c68d436b78c5..f395de3f90e3 100644 --- a/eng/tools/azure-sdk-tools/tests/test_package_utils.py +++ b/eng/tools/azure-sdk-tools/tests/test_package_utils.py @@ -1,5 +1,7 @@ from pathlib import Path import os +from unittest.mock import patch, MagicMock +from packaging.version import Version try: import tomllib as toml @@ -69,3 +71,39 @@ def test_check_file_sets_is_stable_false_for_beta(tmp_path, monkeypatch): assert data["packaging"]["is_stable"] is False # title still populated assert data["packaging"]["title"] == "FooClient" + + +def test_get_version_info_treats_0_0_0_as_invalid(): + """get_version_info should return empty strings when the latest PyPI version is 0.0.0.""" + with patch("pypi_tools.pypi.PyPIClient") as MockClient: + mock_client = MagicMock() + MockClient.return_value = mock_client + mock_client.get_ordered_versions.return_value = [Version("0.0.0")] + + result = pu.get_version_info("azure-some-package", tag_is_stable=False) + + assert result == ("", "") + + +def test_get_version_info_treats_0_0_0_prerelease_as_invalid(): + """get_version_info should return empty strings when the latest PyPI version is 0.0.0b1.""" + with patch("pypi_tools.pypi.PyPIClient") as MockClient: + mock_client = MagicMock() + MockClient.return_value = mock_client + mock_client.get_ordered_versions.return_value = [Version("0.0.0b1")] + + result = pu.get_version_info("azure-some-package", tag_is_stable=False) + + assert result == ("", "") + + +def test_get_version_info_does_not_filter_0_0_0_1(): + """get_version_info should NOT filter 0.0.0.1 — its base version is not 0.0.0.""" + with patch("pypi_tools.pypi.PyPIClient") as MockClient: + mock_client = MagicMock() + MockClient.return_value = mock_client + mock_client.get_ordered_versions.return_value = [Version("0.0.0.1")] + + result = pu.get_version_info("azure-some-package", tag_is_stable=False) + + assert result != ("", "") From 1b01f08b6df011ab4ef20bd6a66c8485346b3478 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 04:53:41 +0000 Subject: [PATCH 4/4] Improve assertion in 0.0.0.1 test to check specific return value Agent-Logs-Url: https://github.com/Azure/azure-sdk-for-python/sessions/4ebec9df-c06c-4b15-a0a9-97e80d6dc045 Co-authored-by: msyyc <70930885+msyyc@users.noreply.github.com> --- eng/tools/azure-sdk-tools/tests/test_package_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/azure-sdk-tools/tests/test_package_utils.py b/eng/tools/azure-sdk-tools/tests/test_package_utils.py index f395de3f90e3..53d73a52e705 100644 --- a/eng/tools/azure-sdk-tools/tests/test_package_utils.py +++ b/eng/tools/azure-sdk-tools/tests/test_package_utils.py @@ -106,4 +106,4 @@ def test_get_version_info_does_not_filter_0_0_0_1(): result = pu.get_version_info("azure-some-package", tag_is_stable=False) - assert result != ("", "") + assert result == ("0.0.0.1", "0.0.0.1")