This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch filter-versions-to-latest-minor
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 0cd15593160efd95fefa9bb358ac679b3c8ba3aa
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Oct 25 10:46:26 2025 +0200

    Only show latest minor versions in version drop-down in docs
    
    This does not remove the actual versions from S3 only limits
    the drop-down. All versions are available still to see and they
    are indexed, also links from PyPI continue to work, you can
    also manually update version in the URL.
---
 .../output_release-management_publish-docs.svg     | 38 ++++++++--------------
 .../output_release-management_publish-docs.txt     |  2 +-
 .../commands/release_management_commands.py        |  8 -----
 .../commands/release_management_commands_config.py |  2 --
 .../src/airflow_breeze/utils/publish_docs_to_s3.py | 34 ++++++++++++-------
 5 files changed, 37 insertions(+), 47 deletions(-)

diff --git a/dev/breeze/doc/images/output_release-management_publish-docs.svg 
b/dev/breeze/doc/images/output_release-management_publish-docs.svg
index 56d51f42050..91f36f758b8 100644
--- a/dev/breeze/doc/images/output_release-management_publish-docs.svg
+++ b/dev/breeze/doc/images/output_release-management_publish-docs.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1172.3999999999999" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 1099.2" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-publish-docs-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1121.3999999999999" />
+      <rect x="0" y="0" width="1463.0" height="1048.2" />
     </clipPath>
     <clipPath id="breeze-release-management-publish-docs-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -173,18 +173,9 @@
 <clipPath id="breeze-release-management-publish-docs-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="breeze-release-management-publish-docs-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-release-management-publish-docs-line-43">
-    <rect x="0" y="1050.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-release-management-publish-docs-line-44">
-    <rect x="0" y="1075.1" 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="1170.4" rx="8"/><text 
class="breeze-release-management-publish-docs-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;publish-docs</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="1097.2" rx="8"/><text 
class="breeze-release-management-publish-docs-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;publish-docs</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -227,19 +218,16 @@
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="752" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-30)">│</text><text 
class="breeze-release-management-publish-docs-r8" x="488" y="752" 
textLength="951.6" 
clip-path="url(#breeze-release-management-publish-docs-line-30)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="776.4" 
textLength="1464" 
clip-path="url(#breeze-release-management-publish-docs-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-publish-docs-r1" x="1464" y="776.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-31)">
 </text><text class="breeze-release-management-publish-docs-r5" x="0" y="800.8" 
textLength="24.4" 
clip-path="url(#breeze-release-management-publish-docs-line-32)">╭─</text><text 
class="breeze-release-management-publish-docs-r5" x="24.4" y="800.8" 
textLength="219.6" 
clip-path="url(#breeze-release-management-publish-docs-line-32)">&#160;Parallel&#160;running&#160;</text><text
 class="breeze-release-management-publish-docs-r5" x="244" y="800.8" 
textLength="1195.6" clip-path="url(#breeze-relea [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="825.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-33)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="825.2" 
textLength="207.4" 
clip-path="url(#breeze-release-management-publish-docs-line-33)">--debug-resources</text><text
 class="breeze-release-management-publish-docs-r1" x="378.2" y="825.2" 
textLength="768.6" clip-path="url(#breeze-release-management-pu [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="849.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-34)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="849.6" 
textLength="305" 
clip-path="url(#breeze-release-management-publish-docs-line-34)">--include-success-outputs</text><text
 class="breeze-release-management-publish-docs-r1" x="378.2" y="849.6" 
textLength="841.8" clip-path="url(#breeze-release-managem [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-35)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="874" 
textLength="158.6" 
clip-path="url(#breeze-release-management-publish-docs-line-35)">--parallelism</text><text
 class="breeze-release-management-publish-docs-r1" x="378.2" y="874" 
textLength="915" clip-path="url(#breeze-release-management-publish-docs-l [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="898.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-36)">│</text><text 
class="breeze-release-management-publish-docs-r8" x="378.2" y="898.4" 
textLength="915" 
clip-path="url(#breeze-release-management-publish-docs-line-36)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="922.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-37)">│</text><text 
class="breeze-release-management-publish-docs-r5" x="378.2" y="922.8" 
textLength="915" 
clip-path="url(#breeze-release-management-publish-docs-line-37)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="947.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-38)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="947.2" 
textLength="207.4" 
clip-path="url(#breeze-release-management-publish-docs-line-38)">--run-in-parallel</text><text
 class="breeze-release-management-publish-docs-r1" x="378.2" y="947.2" 
textLength="854" clip-path="url(#breeze-release-management-publ [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="971.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-39)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="971.6" 
textLength="170.8" 
clip-path="url(#breeze-release-management-publish-docs-line-39)">--skip-cleanup</text><text
 class="breeze-release-management-publish-docs-r1" x="378.2" y="971.6" 
textLength="732" clip-path="url(#breeze-release-management-publish [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="996" 
textLength="1464" 
clip-path="url(#breeze-release-management-publish-docs-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-publish-docs-r1" x="1464" y="996" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-40)">
-</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1020.4" textLength="24.4" 
clip-path="url(#breeze-release-management-publish-docs-line-41)">╭─</text><text 
class="breeze-release-management-publish-docs-r5" x="24.4" y="1020.4" 
textLength="195.2" 
clip-path="url(#breeze-release-management-publish-docs-line-41)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-publish-docs-r5" x="219.6" y="1020.4" 
textLength="1220" clip-path="url(#breeze-rele [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1044.8" textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-42)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="1044.8" 
textLength="109.8" 
clip-path="url(#breeze-release-management-publish-docs-line-42)">--dry-run</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="1044.8" 
textLength="24.4" clip-path="url(#breeze-release-management-publish- [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1069.2" textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-43)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="1069.2" 
textLength="109.8" 
clip-path="url(#breeze-release-management-publish-docs-line-43)">--verbose</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="1069.2" 
textLength="24.4" clip-path="url(#breeze-release-management-publish- [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1093.6" textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-44)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="1093.6" 
textLength="73.2" 
clip-path="url(#breeze-release-management-publish-docs-line-44)">--help</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="1093.6" 
textLength="24.4" clip-path="url(#breeze-release-management-publish-docs [...]
-</text><text class="breeze-release-management-publish-docs-r5" x="0" y="1118" 
textLength="1464" 
clip-path="url(#breeze-release-management-publish-docs-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-publish-docs-r1" x="1464" y="1118" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-45)">
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="825.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-33)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="825.2" 
textLength="207.4" 
clip-path="url(#breeze-release-management-publish-docs-line-33)">--debug-resources</text><text
 class="breeze-release-management-publish-docs-r1" x="280.6" y="825.2" 
textLength="768.6" clip-path="url(#breeze-release-management-pu [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="849.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-34)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="849.6" 
textLength="158.6" 
clip-path="url(#breeze-release-management-publish-docs-line-34)">--parallelism</text><text
 class="breeze-release-management-publish-docs-r1" x="280.6" y="849.6" 
textLength="915" clip-path="url(#breeze-release-management-publish- [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-35)">│</text><text 
class="breeze-release-management-publish-docs-r5" x="280.6" y="874" 
textLength="915" 
clip-path="url(#breeze-release-management-publish-docs-line-35)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="898.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-36)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="898.4" 
textLength="207.4" 
clip-path="url(#breeze-release-management-publish-docs-line-36)">--run-in-parallel</text><text
 class="breeze-release-management-publish-docs-r1" x="280.6" y="898.4" 
textLength="854" clip-path="url(#breeze-release-management-publ [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="922.8" 
textLength="1464" 
clip-path="url(#breeze-release-management-publish-docs-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-publish-docs-r1" x="1464" y="922.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-37)">
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="947.2" 
textLength="24.4" 
clip-path="url(#breeze-release-management-publish-docs-line-38)">╭─</text><text 
class="breeze-release-management-publish-docs-r5" x="24.4" y="947.2" 
textLength="195.2" 
clip-path="url(#breeze-release-management-publish-docs-line-38)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-publish-docs-r5" x="219.6" y="947.2" 
textLength="1220" clip-path="url(#breeze-release [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="971.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-39)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="971.6" 
textLength="109.8" 
clip-path="url(#breeze-release-management-publish-docs-line-39)">--dry-run</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="971.6" 
textLength="24.4" clip-path="url(#breeze-release-management-publish-doc [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" y="996" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-40)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="996" 
textLength="109.8" 
clip-path="url(#breeze-release-management-publish-docs-line-40)">--verbose</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="996" 
textLength="24.4" clip-path="url(#breeze-release-management-publish-docs-line 
[...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1020.4" textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-41)">│</text><text 
class="breeze-release-management-publish-docs-r4" x="24.4" y="1020.4" 
textLength="73.2" 
clip-path="url(#breeze-release-management-publish-docs-line-41)">--help</text><text
 class="breeze-release-management-publish-docs-r7" x="158.6" y="1020.4" 
textLength="24.4" clip-path="url(#breeze-release-management-publish-docs [...]
+</text><text class="breeze-release-management-publish-docs-r5" x="0" 
y="1044.8" textLength="1464" 
clip-path="url(#breeze-release-management-publish-docs-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-publish-docs-r1" x="1464" y="1044.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-publish-docs-line-42)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_release-management_publish-docs.txt 
b/dev/breeze/doc/images/output_release-management_publish-docs.txt
index cc300ab732b..7b07e4d1e09 100644
--- a/dev/breeze/doc/images/output_release-management_publish-docs.txt
+++ b/dev/breeze/doc/images/output_release-management_publish-docs.txt
@@ -1 +1 @@
-05431d65004156ec2a9784016a035517
+90b3e65f6dfe76c5580f0cb3880e688a
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 4507ab15bd1..dfad85b2c71 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -1775,9 +1775,7 @@ def run_publish_docs_in_parallel(
     distributions_list: tuple[str, ...],
     airflow_site_directory: str,
     override_versioned: bool,
-    include_success_outputs: bool,
     parallelism: int,
-    skip_cleanup: bool,
     debug_resources: bool,
 ):
     """Run docs publishing in parallel"""
@@ -1841,7 +1839,6 @@ def run_publish_docs_in_parallel(
 @option_dry_run
 @option_include_not_ready_providers
 @option_include_removed_providers
-@option_include_success_outputs
 @click.option("-s", "--override-versioned", help="Overrides versioned 
directories.", is_flag=True)
 @click.option(
     "--package-filter",
@@ -1861,13 +1858,11 @@ def run_publish_docs_in_parallel(
 )
 @option_parallelism
 @option_run_in_parallel
-@option_skip_cleanup
 @option_verbose
 def publish_docs(
     airflow_site_directory: str,
     debug_resources: bool,
     doc_packages: tuple[str, ...],
-    include_success_outputs: bool,
     include_not_ready_providers: bool,
     include_removed_providers: bool,
     override_versioned: bool,
@@ -1875,7 +1870,6 @@ def publish_docs(
     distributions_list: str,
     parallelism: int,
     run_in_parallel: bool,
-    skip_cleanup: bool,
 ):
     """Publishes documentation to airflow-site."""
     if not os.path.isdir(airflow_site_directory):
@@ -1913,9 +1907,7 @@ def publish_docs(
         run_publish_docs_in_parallel(
             distributions_list=current_packages,
             parallelism=parallelism,
-            skip_cleanup=skip_cleanup,
             debug_resources=debug_resources,
-            include_success_outputs=include_success_outputs,
             airflow_site_directory=airflow_site_directory,
             override_versioned=override_versioned,
         )
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 903f547486d..2e843a04af6 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
@@ -370,10 +370,8 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, 
str | list[str]]]] = {
             "name": "Parallel running",
             "options": [
                 "--debug-resources",
-                "--include-success-outputs",
                 "--parallelism",
                 "--run-in-parallel",
-                "--skip-cleanup",
             ],
         },
     ],
diff --git a/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py 
b/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
index dbf3b96fd5d..22a9ce71ba1 100644
--- a/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
+++ b/dev/breeze/src/airflow_breeze/utils/publish_docs_to_s3.py
@@ -303,7 +303,7 @@ class S3DocsPublish:
         all_packages_infos = [
             {
                 "package-name": package_name,
-                "all-versions": (all_versions := 
self.get_all_versions(package_name, versions)),
+                "all-versions": (all_versions := 
self.get_latest_minor_versions(package_name, versions)),
                 "stable-version": all_versions[-1],
             }
             for package_name, versions in package_versions.items()
@@ -312,22 +312,34 @@ class S3DocsPublish:
         return all_packages_infos
 
     @staticmethod
-    def get_all_versions(package_name: str, versions: list[str]) -> list[str]:
+    def get_latest_minor_versions(package_name: str, versions: list[str]) -> 
list[str]:
         from packaging.version import Version
 
-        good_versions = []
-        for version in versions:
+        get_console().print(f"[info]Getting package versions for 
{package_name} from:\n")
+        get_console().print(versions)
+        all_versions: list[Version] = []
+        for v in versions:
             try:
-                Version(version)
-                good_versions.append(version)
+                all_versions.append(Version(v))
             except ValueError as e:
-                get_console().print(f"[error]Invalid version {version}: {e}\n")
+                get_console().print(f"[error]Invalid version {v}: {e}\n")
                 global version_error
                 version_error = True
-        return sorted(
-            good_versions,
-            key=lambda d: Version(d),
-        )
+        all_versions.sort(reverse=True)
+        minor_versions: list[str] = []
+        good_versions = []
+        for version in all_versions:
+            minor_version = str(version.major) + "." + str(version.minor)
+            if minor_version not in minor_versions:
+                get_console().print(f"[info]Latest minor version added: 
{version}\n")
+                minor_versions.append(minor_version)
+                good_versions.append(str(version))
+            else:
+                get_console().print(f"[info]Not latest minor version skipped: 
{version}\n")
+        MAX_VERSIONS = 10
+        selected_versions = good_versions[0:MAX_VERSIONS]
+        get_console().print(f"[info]Selected {MAX_VERSIONS} versions for 
{package_name}:\n")
+        return selected_versions
 
     @staticmethod
     def get_bucket_key(bucket_path: str) -> tuple[str, str]:

Reply via email to