matplotlib / matplotlib/matplotlib
Add a public backend fallback API
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 23.2k
- Forks
- 8.5k
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 66
Description
### Bug report
**Bug summary**
Back in #11600/#11896 I added backend fallback autodetection, which (by default) picks the first available backend among macosx, qt5agg, qt4agg, gtk3agg, etc. Initially the fallback order was configurable, but that got removed before the PRs were merged because of concerns about the API. I would like to revive that feature (essentially so that I can configure my envs to use module://mplcairo.qt by default, but module://mplcairo.base when no $DISPLAY is available). In itself it's not really hard, it's just a matter of what API we expose. One concern was that the initial approach was to put the list of backends to attempt in rcParams["backend"], which made that entry "active" (it's not just a plain dict entry, but something rather more complicated). One possible API (considering that this mostly just only needs to work before importing matplotlib) may be to only support configuring this in the $MPLBACKEND environment variable, which could e.g. be set to a (semi?)colon-separated list of backends to attempt.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the backend fallback autodetection work referenced in #11600 and #11896, then inspect how rcParams["backend"] and the $MPLBACKEND environment variable are handled before importing matplotlib. The issue leaves the public API and fallback-list syntax unresolved; done would require an agreed configuration interface with coverage for the backend-selection behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100