Repository: mlflow/mlflow
Pull request: Update dev/show_package_release_dates.py to display release time as well as date
The `dev/show_package_release_dates.py` script previously displayed only the release date of installed packages in YYYY-MM-DD format. This update enhances the script to show the complete release timestamp in YYYY-MM-DD HH:MM:SS format for more precise release information.

**Changes made:**
- Modified `get_release_date()` function to return full timestamp by replacing "T" with " " instead of splitting on "T"
- Updated column header from "Release Date" to "Release Timestamp" 
- Updated variable names and column width calculations to accommodate the longer timestamp format

**Output comparison:**

Before:
```
Package           Version Release Date
--------------------------------------
aiohttp           3.12.4  2025-05-29  
identify          2.6.12  2025-05-23  
```

After:
```
Package           Version Release Timestamp
-------------------------------------------
aiohttp           3.12.4  2025-05-29 01:33:48
identify          2.6.12  2025-05-23 20:37:51
```

The changes are minimal and preserve all existing functionality while providing more detailed timestamp information as requested.

Fixes #15952.

> [!WARNING]
>
> <details>
> <summary>Firewall rules blocked me from connecting to one or more addresses</summary>
>
> #### I tried to connect to the following addresses, but was blocked by firewall rules:
>
>
> If you need me to access, download, or install something from one of these locations, you can either:
>
> - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled
> - Add the appropriate URLs or hosts to my [firewall allow list](https://gh.io/copilot/firewall-config)
>
> </details>


---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.

Problem statement:
Update dev/show_package_release_dates.py to display release time as well as date
The dev/show_package_release_dates.py script currently displays the release date of installed packages in the format YYYY-MM-DD. It would be helpful to also display the release time (e.g., YYYY-MM-DD HH:MM:SS) for more precise information.

Current output example:
```
Package                                 Version        Release Date
-------------------------------------------------------------------
litellm                                 1.71.1         2025-05-25  
httpx-aiohttp                           0.1.4          2025-05-23  
...
```

Requested change:
Update the script to show both the date and time of the release for each package, such as 2025-05-25 14:23:01.

Hints from issue discussion:

Commit message: Update show_package_release_dates.py to display release time as well as date

Co-authored-by: harupy <17039389+harupy@users.noreply.github.com>

Patch to review:
diff --git a/dev/show_package_release_dates.py b/dev/show_package_release_dates.py
index 047ccee038407..289d2780d87b1 100644
--- a/dev/show_package_release_dates.py
+++ b/dev/show_package_release_dates.py
@@ -28,7 +28,7 @@ async def get_release_date(session: aiohttp.ClientSession, package: str, version
                 return ""
 
             upload_time = matched[0][0]["upload_time"]
-            return upload_time.split("T")[0]  # return year-month-day
+            return upload_time.replace("T", " ")  # return year-month-day hour:minute:second
     except Exception:
         traceback.print_exc()
         return ""
@@ -47,9 +47,9 @@ async def main() -> None:
     packages, versions = list(zip(*distributions))
     package_length = get_longest_string_length(packages)
     version_length = get_longest_string_length(versions)
-    release_date_length = len("Release Date")
-    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Date")
-    print("-" * (package_length + version_length + release_date_length + 2))
+    release_timestamp_length = len("Release Timestamp")
+    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Timestamp")
+    print("-" * (package_length + version_length + release_timestamp_length + 2))
     for package, version, release_date in sorted(
         zip(packages, versions, release_dates),
         # Sort by release date in descending order
@@ -59,7 +59,7 @@ async def main() -> None:
         print(
             package.ljust(package_length),
             version.ljust(version_length),
-            release_date.ljust(release_date_length),
+            release_date.ljust(release_timestamp_length),
         )
 
 


Code review comments:
diff_hunk: @@ -47,9 +47,9 @@ async def main() -> None:
     packages, versions = list(zip(*distributions))
     package_length = get_longest_string_length(packages)
     version_length = get_longest_string_length(versions)
-    release_date_length = len("Release Date")
-    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Date")
-    print("-" * (package_length + version_length + release_date_length + 2))
+    release_timestamp_length = len("Release Timestamp")
+    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Timestamp")
path: dev/show_package_release_dates.py
text: @user1:
```suggestion
    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Timestamp".ljust(release_timestamp_length))
```

@author:
Fixed in commit 3c74e69. Added `.ljust(release_timestamp_length)` to the "Release Timestamp" header for consistent column alignment.

diff_hunk: @@ -47,9 +47,9 @@ async def main() -> None:
     packages, versions = list(zip(*distributions))
     package_length = get_longest_string_length(packages)
     version_length = get_longest_string_length(versions)
-    release_date_length = len("Release Date")
-    print("Package".ljust(package_length), "Version".ljust(version_length), "Release Date")
-    print("-" * (package_length + version_length + release_date_length + 2))
+    release_timestamp_length = len("Release Timestamp")
path: dev/show_package_release_dates.py
text: @user1:
```suggestion
    release_timestamp_length = get_longest_string_length(release_dates)
```

@author:
Fixed in commit 3c74e69. Changed to use `get_longest_string_length(release_dates)` for proper column width calculation based on actual data length.