Skip to content

⚡ Bolt: Memoize Printify blueprint variant fetching#86

Open
merg357 wants to merge 1 commit into
mainfrom
bolt/memoize-get-variants-698427306353595514
Open

⚡ Bolt: Memoize Printify blueprint variant fetching#86
merg357 wants to merge 1 commit into
mainfrom
bolt/memoize-get-variants-698427306353595514

Conversation

@merg357

@merg357 merg357 commented Jul 3, 2026

Copy link
Copy Markdown
Owner

💡 What: Wrapped get_variants in printify_manager.py with @functools.lru_cache and converted the return type to an immutable tuple. Added inline comments explaining the rationale. Added the required functools import. Created journal entry at .jules/bolt.md documenting this caching learning.

🎯 Why: The bulk creation loop caused an N+1 network bottleneck by requesting the same static blueprint variants from the Printify API for every single image uploaded, even though the blueprint ID and provider ID are identical across loops for a given item type. Returning a tuple ensures downstream mutation cannot alter the shared cache state, and json cleanly serializes tuples to arrays implicitly.

📊 Impact: Significantly speeds up product creation (e.g. python3 printify_manager.py create or run) by eliminating redundant HTTP requests (and latency) per product iteration. For 25 items, it removes 25 identical API calls, saving potentially 5-15 seconds in latency alone.

🔬 Measurement: Run python3 printify_manager.py create with multiple designs and observe the reduced creation time and decreased API call volume compared to running without the cache.


PR created automatically by Jules for task 698427306353595514 started by @merg357

Wrapped `get_variants` in `printify_manager.py` with `@functools.lru_cache` and converted the return type to an immutable `tuple`. This prevents N+1 network requests during bulk creation.

Co-authored-by: merg357 <221854052+merg357@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant