Import matplotlib only when plotting - #38
Open
bernalde wants to merge 1 commit into
Open
Conversation
lyopronto/__init__.py imports high_level, which imported matplotlib at module scope, so every `import lyopronto` initialized matplotlib and its backend even for callers that only run simulations. That costs import time for everyone and makes a missing or misconfigured backend fail at import rather than at the point of use, which matters for headless batch and server-side callers. matplotlib is used only by generate_visualizations and the four _plot_ helpers, so load it there and pass plt to the helpers rather than relying on a module global. `import lyopronto` no longer pulls matplotlib. Full test suite: 144 passed, 1 skipped.
This was referenced Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #37.
lyopronto/__init__.pyimportshigh_level, which imported matplotlib at module scope, so everyimport lyoprontoinitialized matplotlib and its backend — even for callers that only run simulations.matplotlib is used only by
generate_visualizationsand the four_plot_*helpers, so this loads it there and passespltto the helpers instead of relying on a module global.matplotlibrcis only used insidegenerate_visualizationsand needs no threading.Before:
After:
False.No behavior change to plotting — the helpers receive the same
pltmodule they previously read from module scope.Tests
pytest tests/on this branch: 144 passed, 1 skipped (603 s), coverage 99%.Branched from
4fb63df. Found while syncing SECQUOIA/LyoPRONTO, which carries the same change.