This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push: new 1cac59ed6f Introducing --latest for generate-issue-content-helm-chart command (#38648) 1cac59ed6f is described below commit 1cac59ed6fd008b08a0ad5576b0bd3edc57f2509 Author: Amogh Desai <amoghrajesh1...@gmail.com> AuthorDate: Mon Apr 1 19:26:43 2024 +0530 Introducing --latest for generate-issue-content-helm-chart command (#38648) * Introducing --latest for generate-issue-content-helm-chart command * testing only * fetching tags * review comments from potiuk --- .github/workflows/helm-tests.yml | 6 ++- ...anagement_generate-issue-content-helm-chart.svg | 40 ++++++++++---------- ...anagement_generate-issue-content-helm-chart.txt | 2 +- .../commands/release_management_commands.py | 44 ++++++++++++++-------- .../commands/release_management_commands_config.py | 1 + .../src/airflow_breeze/utils/version_utils.py | 37 ++++++++++++++++++ 6 files changed, 92 insertions(+), 38 deletions(-) diff --git a/.github/workflows/helm-tests.yml b/.github/workflows/helm-tests.yml index 96597840e7..0c18472648 100644 --- a/.github/workflows/helm-tests.yml +++ b/.github/workflows/helm-tests.yml @@ -121,11 +121,13 @@ jobs: run: ./dev/sign.sh dist/airflow-*.tgz dist/airflow-*-source.tar.gz env: SIGN_WITH: d...@airflow.apache.org + - name: "Fetch Git Tags" + run: git fetch --tags - name: "Test helm chart issue generation automatically" # Adding same tags for now, will address in a follow-up run: > - breeze release-management generate-issue-content-helm-chart - --previous-release helm-chart/0.0.0dev0 --current-release helm-chart/0.0.0dev0 + breeze release-management generate-issue-content-helm-chart --limit-pr-count 10 + --latest --verbose - name: "Upload Helm artifacts" uses: actions/upload-artifact@v4 with: diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.svg b/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.svg index 9cb4c5c6db..83d3bf3d73 100644 --- a/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.svg +++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.svg @@ -1,4 +1,4 @@ -<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg"> +<svg class="rich-terminal" viewBox="0 0 1482 538.0" xmlns="http://www.w3.org/2000/svg"> <!-- Generated with Rich https://www.textualize.io --> <style> @@ -38,14 +38,12 @@ .breeze-release-management-generate-issue-content-helm-chart-r4 { fill: #68a0b3;font-weight: bold } .breeze-release-management-generate-issue-content-helm-chart-r5 { fill: #868887 } .breeze-release-management-generate-issue-content-helm-chart-r6 { fill: #8d7b39 } -.breeze-release-management-generate-issue-content-helm-chart-r7 { fill: #cc555a } -.breeze-release-management-generate-issue-content-helm-chart-r8 { fill: #8a4346 } -.breeze-release-management-generate-issue-content-helm-chart-r9 { fill: #98a84b;font-weight: bold } +.breeze-release-management-generate-issue-content-helm-chart-r7 { fill: #98a84b;font-weight: bold } </style> <defs> <clipPath id="breeze-release-management-generate-issue-content-helm-chart-clip-terminal"> - <rect x="0" y="0" width="1463.0" height="462.59999999999997" /> + <rect x="0" y="0" width="1463.0" height="487.0" /> </clipPath> <clipPath id="breeze-release-management-generate-issue-content-helm-chart-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> @@ -101,9 +99,12 @@ <clipPath id="breeze-release-management-generate-issue-content-helm-chart-line-17"> <rect x="0" y="416.3" width="1464" height="24.65"/> </clipPath> +<clipPath id="breeze-release-management-generate-issue-content-helm-chart-line-18"> + <rect x="0" y="440.7" width="1464" height="24.65"/> + </clipPath> </defs> - <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="breeze-release-management-generate-issue-content-helm-chart-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management generate-issue-content-helm-chart</text> + <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="536" rx="8"/><text class="breeze-release-management-generate-issue-content-helm-chart-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management generate-issue-content-helm-chart</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> @@ -119,19 +120,20 @@ </text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="12.2" y="93.2" textLength="719.8" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-3)">Generates content for issue to test the helm chart release.</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-conte [...] </text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-4)"> </text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-5)">╭─</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="24.4" y="142" textLength="268.4" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-5)"> Generate issue flags </text><text class="breeze-release-managem [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-6)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="61" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-6)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-7)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="329.4" y="190.8" textLength="1110.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-7)">variable set. Can be generated with:    [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-8)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="329.4" y="215.2" textLength="1110.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-8)">https://github.com/settings/tokens/new?description=Read%20sssues&scopes=rep [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-9)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r6" x="329.4" y="239.6" textLength="1110.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-9)">(TEXT)            & [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-10)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r7" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-10)">*</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-11)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r7" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-11)">*</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-12)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="61" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-12)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart-r [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-13)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="61" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-13)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart-r [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-gener [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-15)">╭─</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="24.4" y="386" textLength="195.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-15)"> Common options </text><text class="breeze-release-management-gener [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-16)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-16)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-17)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-17)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] -</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-gener [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-6)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-6)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart-r [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-7)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="292.8" y="190.8" textLength="1146.8" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-7)">set. Can be generated with:     &# [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-8)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="292.8" y="215.2" textLength="1146.8" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-8)">https://github.com/settings/tokens/new?description=Read%20sssues&scopes=rep [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-9)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r6" x="292.8" y="239.6" textLength="1146.8" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-9)">(TEXT)            & [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-10)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-10)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-11)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-11)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-12)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-12)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-13)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-13)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-14)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-14)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="386" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="386" textLength="12.2" clip-path="url(#breeze-release-management-generate- [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="410.4" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-16)">╭─</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="24.4" y="410.4" textLength="195.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-16)"> Common options </text><text class="breeze-release-management-g [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-17)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-17)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-18)">│</text><text class="breeze-release-management-generate-issue-content-helm-chart-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-18)">-</text><text class="breeze-release-management-generate-issue-content-helm-chart [...] +</text><text class="breeze-release-management-generate-issue-content-helm-chart-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-release-management-generate-issue-content-helm-chart-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-issue-content-helm-chart-r1" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-gener [...] </text> </g> </g> diff --git a/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.txt b/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.txt index e9b6a70e80..20d87ba8df 100644 --- a/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.txt +++ b/dev/breeze/doc/images/output_release-management_generate-issue-content-helm-chart.txt @@ -1 +1 @@ -66451b1e0d4897113e3763e04d73b65e +3e0e080fa8422853ed7df3967725b35f diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py index b714c01103..11e062252e 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -155,6 +155,7 @@ from airflow_breeze.utils.run_utils import ( run_command, ) from airflow_breeze.utils.shared_options import get_dry_run, get_verbose +from airflow_breeze.utils.version_utils import get_latest_airflow_version, get_latest_helm_chart_version from airflow_breeze.utils.versions import is_pre_release from airflow_breeze.utils.virtualenv_utils import create_pip_command, create_venv @@ -2290,13 +2291,11 @@ def print_issue_content( @click.option( "--previous-release", type=str, - required=True, help="commit reference (for example hash or tag) of the previous release.", ) @click.option( "--current-release", type=str, - required=True, help="commit reference (for example hash or tag) of the current release.", ) @click.option("--excluded-pr-list", type=str, help="Coma-separated list of PRs to exclude from the issue.") @@ -2306,6 +2305,11 @@ def print_issue_content( default=None, help="Limit PR count processes (useful for testing small subset of PRs).", ) +@click.option( + "--latest", + is_flag=True, + help="Run the command against latest released version of airflow helm charts", +) @option_verbose def generate_issue_content_helm_chart( github_token: str, @@ -2313,6 +2317,7 @@ def generate_issue_content_helm_chart( current_release: str, excluded_pr_list: str, limit_pr_count: int | None, + latest: bool, ): generate_issue_content( github_token, @@ -2321,7 +2326,7 @@ def generate_issue_content_helm_chart( excluded_pr_list, limit_pr_count, is_helm_chart=True, - latest=False, + latest=latest, ) @@ -3264,18 +3269,25 @@ def generate_issue_content( current = current_release if latest: - import requests - - response = requests.get("https://pypi.org/pypi/apache-airflow/json") - response.raise_for_status() - latest_released_version = response.json()["info"]["version"] - previous = str(latest_released_version) - current = os.getenv("VERSION", "HEAD") - if current == "HEAD": - get_console().print( - "\n[warning]Environment variable VERSION not set, setting current release " - "version as 'HEAD'\n" - ) + if is_helm_chart: + latest_helm_version = get_latest_helm_chart_version() + get_console().print(f"\n[info] Latest stable version of helm chart is {latest_helm_version}\n") + previous = f"helm-chart/{latest_helm_version}" + current = os.getenv("VERSION", "HEAD") + if current == "HEAD": + get_console().print( + "\n[warning]Environment variable VERSION not set, setting current release " + "version as 'HEAD' for helm chart release\n" + ) + else: + latest_airflow_version = get_latest_airflow_version() + previous = str(latest_airflow_version) + current = os.getenv("VERSION", "HEAD") + if current == "HEAD": + get_console().print( + "\n[warning]Environment variable VERSION not set, setting current release " + "version as 'HEAD'\n" + ) changes = get_changes(verbose, previous, current, is_helm_chart) change_prs = [change.pr for change in changes] @@ -3342,4 +3354,4 @@ def generate_issue_content( users[pr_number].add(linked_issue.user.login) progress.advance(task) - print_issue_content(current_release, pull_requests, linked_issues, users, is_helm_chart) + print_issue_content(current, pull_requests, linked_issues, users, is_helm_chart) diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py index 97df6a7740..4013476737 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py @@ -113,6 +113,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = { "--current-release", "--excluded-pr-list", "--limit-pr-count", + "--latest", ], } ], diff --git a/dev/breeze/src/airflow_breeze/utils/version_utils.py b/dev/breeze/src/airflow_breeze/utils/version_utils.py new file mode 100644 index 0000000000..7b41fa46bd --- /dev/null +++ b/dev/breeze/src/airflow_breeze/utils/version_utils.py @@ -0,0 +1,37 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from __future__ import annotations + + +def get_latest_helm_chart_version(): + import requests + + response = requests.get("https://airflow.apache.org/_gen/packages-metadata.json") + data = response.json() + for package in data: + if package["package-name"] == "helm-chart": + stable_version = package["stable-version"] + return stable_version + + +def get_latest_airflow_version(): + import requests + + response = requests.get("https://pypi.org/pypi/apache-airflow/json") + response.raise_for_status() + latest_released_version = response.json()["info"]["version"] + return latest_released_version