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

sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git


The following commit(s) were added to refs/heads/main by this push:
     new 1e433f3  Fix a bug with sorting some versions
1e433f3 is described below

commit 1e433f3fda7d2fc12bb06696b4dc75ed618ad9b4
Author: Sean B. Palmer <[email protected]>
AuthorDate: Fri Sep 12 14:12:40 2025 +0100

    Fix a bug with sorting some versions
---
 atr/db/interaction.py | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/atr/db/interaction.py b/atr/db/interaction.py
index fdb0e22..cc1b424 100644
--- a/atr/db/interaction.py
+++ b/atr/db/interaction.py
@@ -88,7 +88,24 @@ async def all_releases(project: sql.Project) -> 
list[sql.Release]:
     for release in results:
         release.project = project
 
-    results.sort(key=lambda r: version.Version(r.version), reverse=True)
+    try:
+        # This rejects any non PEP 440 versions
+        results.sort(key=lambda r: version.Version(r.version), reverse=True)
+    except Exception:
+
+        def sort_key(release: sql.Release) -> tuple[tuple[int, int | str], 
...]:
+            parts = []
+            version = release.version.replace("+", ".").replace("-", ".")
+            for part in version.split("."):
+                try:
+                    # Numeric parts: (0, number) to sort before strings
+                    parts.append((0, int(part)))
+                except ValueError:
+                    # String parts: (1, string) to sort after numbers
+                    parts.append((1, part))
+            return tuple(parts)
+
+        results.sort(key=sort_key, reverse=True)
     return results
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to