⚡ Optimize check-updates.py by removing redundant TOML parsing#3
⚡ Optimize check-updates.py by removing redundant TOML parsing#3Serendeep wants to merge 1 commit into
Conversation
Co-authored-by: Serendeep <36764254+Serendeep@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
There was a problem hiding this comment.
Pull request overview
This PR optimizes the scripts/check-updates.py workflow by avoiding a redundant on-disk TOML parse when applying updates, reusing the already-known “current/old version” discovered during the initial formula analysis.
Changes:
- Added an
old_versionparameter toupdate_formula_file(...)and updated its call site. - Removed the extra file read +
tomllib.load(...)used only to rediscover the old version before doing replacements.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Update mirrors that contain the old version | ||
| # Read old version to find/replace in mirror URLs | ||
| with open(path, "rb") as f: | ||
| old_data = tomllib.load(f) | ||
| old_version = old_data["package"]["version"] | ||
| if old_version != new_version: | ||
| content = content.replace(old_version, new_version) | ||
|
|
There was a problem hiding this comment.
content.replace(old_version, new_version) runs over the entire TOML, not just [source].mirrors as the comment suggests. In existing formulas (e.g., formulas/curl.toml), the version string appears in [bottle.*].url values; this replacement will rewrite those URLs to the new version while leaving the bottle sha256 unchanged (and likely pointing at assets that don’t exist yet), which can break installs between the version-bump commit and the later bottle rebuild/update. Please scope the replacement to the [source] mirrors entries (or alternatively clear/remove bottle sections on version bumps) so bottle URLs/SHAs aren’t mutated here.
💡 What: Added
old_versionparameter toupdate_formula_fileto remove a redundant file read and TOML parsing step. Passed the existingresult["current_version"]directly to the function frommain().🎯 Why: The script was reading the entire TOML file from disk and parsing it using
tomllib.load(f)solely to get theold_versionthat the script already had in memory from its initial analysis. By passingold_versionas an argument, we eliminate an unnecessary disk I/O and CPU-intensive parsing operation for every formula updated.📊 Measured Improvement:
Using a simulated heavy update benchmark (5000 iterations on a sizable TOML file):
While the absolute time difference per file is small, this scales O(N) with the number of packages updated and prevents blocking I/O and unnecessary TOML dictionary allocations.
PR created automatically by Jules for task 12527621872511176360 started by @Serendeep