Skip to content

Import matplotlib only when plotting - #38

Open
bernalde wants to merge 1 commit into
LyoHUB:mainfrom
SECQUOIA:upstream-fix/lazy-matplotlib-import
Open

Import matplotlib only when plotting#38
bernalde wants to merge 1 commit into
LyoHUB:mainfrom
SECQUOIA:upstream-fix/lazy-matplotlib-import

Conversation

@bernalde

@bernalde bernalde commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Closes #37.

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.

matplotlib is used only by generate_visualizations and the four _plot_* helpers, so this loads it there and passes plt to the helpers instead of relying on a module global. matplotlibrc is only used inside generate_visualizations and needs no threading.

Before:

>>> import lyopronto, sys
>>> any(m.startswith("matplotlib") for m in sys.modules)
True

After: False.

No behavior change to plotting — the helpers receive the same plt module 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.

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.
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.

import lyopronto pulls in matplotlib even when never plotting

1 participant