This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a commit to branch v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 63f59d8b33362dbdfa0d646e8a7948b15d4f3b9f
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Oct 29 21:48:28 2026 +0530
[v3-4-test] Remove unused milestone selection helpers (#75848) (#75925)
(cherry picked from commit 0a07c9ac1f1a7123a0226f5d8bf050f76cb42efb)
Co-authored-by: Hussein Awala <[email protected]>
---
.../src/airflow_breeze/commands/ci_commands.py | 39 ------------------
dev/breeze/tests/test_set_milestone.py | 48 ----------------------
2 files changed, 87 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index 583f999bc96..ff126c013a0 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -1306,45 +1306,6 @@ def _find_matching_milestone(repo: Repository,
milestone_prefix: str) -> Milesto
return None
-def _parse_milestone_version(title: str) -> tuple[int, int, int] | None:
- """Parse version from milestone title like 'Airflow 3.1.8' or 'Airflow
3.2'."""
- if not title.startswith("Airflow "):
- return None
- version_part = title.replace("Airflow ", "")
- parts = version_part.split(".")
- if len(parts) < 2:
- return None
- try:
- major = int(parts[0])
- minor = int(parts[1])
- patch = int(parts[2]) if len(parts) > 2 else 0
- return major, minor, patch
- except ValueError:
- return None
-
-
-def _find_latest_milestone(repo: Repository) -> Milestone | None:
- """Find the latest (highest version) open milestone."""
- try:
- milestones = list(repo.get_milestones(state="open"))
- # Filter for Airflow milestones and parse versions
- airflow_milestones: list[tuple[Milestone, tuple[int, int, int]]] = []
- for m in milestones:
- version = _parse_milestone_version(m.title)
- if version:
- airflow_milestones.append((m, version))
-
- if not airflow_milestones:
- return None
-
- # Sort by version (major, minor, patch) descending to get the latest
- airflow_milestones.sort(key=lambda x: x[1], reverse=True)
- return airflow_milestones[0][0]
- except Exception as e:
- console_print(f"[error]Failed to get milestones: {e}[/]")
- return None
-
-
def _get_mention(merged_by_login: str) -> str:
"""Get the mention string for a user."""
return f"@{merged_by_login}" if merged_by_login and merged_by_login !=
"unknown" else "maintainer"
diff --git a/dev/breeze/tests/test_set_milestone.py
b/dev/breeze/tests/test_set_milestone.py
index 0c79fa5c934..e9c19bd66ca 100644
--- a/dev/breeze/tests/test_set_milestone.py
+++ b/dev/breeze/tests/test_set_milestone.py
@@ -25,7 +25,6 @@ import pytest
from airflow_breeze.commands.ci_commands import (
_determine_milestone_version,
- _find_latest_milestone,
_find_matching_milestone,
_get_backport_version_from_labels,
_get_mention,
@@ -34,7 +33,6 @@ from airflow_breeze.commands.ci_commands import (
_get_milestone_prefix,
_get_removed_backport_labels_from_events,
_has_bug_fix_indicators,
- _parse_milestone_version,
_parse_version_from_backport_label,
_parse_version_from_branch,
_should_skip_milestone_tagging,
@@ -140,28 +138,6 @@ class TestGetMilestonePrefix:
assert _get_milestone_prefix(major, minor) == expected
-class TestParseMilestoneVersion:
- """Test cases for _parse_milestone_version."""
-
- @pytest.mark.parametrize(
- ("title", "expected"),
- [
- ("Airflow 3.1.8", (3, 1, 8)),
- ("Airflow 3.2", (3, 2, 0)),
- ("Airflow 2.10.5", (2, 10, 5)),
- ],
- )
- def test_valid_milestone_version(self, title, expected):
- assert _parse_milestone_version(title) == expected
-
- @pytest.mark.parametrize(
- "title",
- ["Something else", "Airflow", "Airflow 3"],
- )
- def test_invalid_milestone_version(self, title):
- assert _parse_milestone_version(title) is None
-
-
class TestHasBugFixIndicators:
"""Test cases for _has_bug_fix_indicators."""
@@ -364,30 +340,6 @@ class TestFindMatchingMilestone:
assert result is None
-class TestFindLatestMilestone:
- """Test cases for _find_latest_milestone."""
-
- def test_find_latest_milestone(self):
- mock_repo = MagicMock()
- mock_milestone1 = MagicMock()
- mock_milestone1.title = "Airflow 3.1.8"
- mock_milestone2 = MagicMock()
- mock_milestone2.title = "Airflow 3.2"
- mock_milestone3 = MagicMock()
- mock_milestone3.title = "Airflow 2.10.5"
- mock_repo.get_milestones.return_value = [mock_milestone1,
mock_milestone2, mock_milestone3]
-
- result = _find_latest_milestone(mock_repo)
- assert result.title == "Airflow 3.2" # Should get the highest version
-
- def test_no_milestone_found(self):
- mock_repo = MagicMock()
- mock_repo.get_milestones.return_value = []
-
- result = _find_latest_milestone(mock_repo)
- assert result is None
-
-
class TestSetMilestoneCommand:
"""Test cases for set_milestone command."""