It starts to complain about no backend even though we set it at astropy/conftest.py#L84 and that works for older versions of matplotlib.
INTERNALERROR> File ".../matplotlib/__init__.py", line 843, in <module>
INTERNALERROR> fail_on_error=True)
INTERNALERROR> File ".../matplotlib/__init__.py", line 773, in _rc_params_in_file
INTERNALERROR> config[key] = val # try to convert to proper type or raise
INTERNALERROR> File ".../matplotlib/__init__.py", line 607, in __setitem__
INTERNALERROR> raise ValueError(f"Key {key}: {ve}") from None
INTERNALERROR> ValueError: Key backend: '' is not a valid value for backend; supported values are
['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo',
'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']
Code for reproduction
We can reproduce it on both GitHub Actions and CircleCI using tox + pytest but only with the dev version of matplotlib.
Actual outcome
See traceback above.
Expected outcome
It does not throw ValueError.
Matplotlib version
Operating system: Ubuntu on Actions, some Linux image on CircleCI
For me this was failing just from using pytest-mpl before getting to any tests:
INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/pytest_mpl/plugin.py", line 124, in pytest_report_header
INTERNALERROR> import matplotlib
INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 840, in <module>
INTERNALERROR> rcParamsDefault = _rc_params_in_file(
INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 774, in _rc_params_in_file
INTERNALERROR> config[key] = val # try to convert to proper type or raise
INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 608, in __setitem__
INTERNALERROR> raise ValueError(f"Key {key}: {ve}") from None
INTERNALERROR> ValueError: Key backend: '' is not a valid value for backend; supported values are ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']
It is unclear to me where the fix should be. Does pytest-mpl need to be fixed to be compatible now, or is this unintentional side effect of matplotlib change?
I'm pretty sure it's unintentional and as @QuLogic suggested probably caused by the merged change in the template handling. @anntzer is the expert on the fallback logic and maybe can tease it apart.
Activity
QuLogic commented on Apr 1, 2021
Probably related to #19603
pllim commented on Apr 2, 2021
@QuLogic , what does that mean for downstream setup? Do we have to completely change the way we set backend for CI? Can you please advise? Thanks!
ianhi commented on Apr 2, 2021
I ran into this yesterday as well and opened: matplotlib/pytest-mpl#117
For me this was failing just from using pytest-mpl before getting to any tests:
INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/pytest_mpl/plugin.py", line 124, in pytest_report_header INTERNALERROR> import matplotlib INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 840, in <module> INTERNALERROR> rcParamsDefault = _rc_params_in_file( INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 774, in _rc_params_in_file INTERNALERROR> config[key] = val # try to convert to proper type or raise INTERNALERROR> File "/opt/hostedtoolcache/Python/3.9.2/x64/lib/python3.9/site-packages/matplotlib/__init__.py", line 608, in __setitem__ INTERNALERROR> raise ValueError(f"Key {key}: {ve}") from None INTERNALERROR> ValueError: Key backend: '' is not a valid value for backend; supported values are ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']pllim commented on Apr 2, 2021
It is unclear to me where the fix should be. Does pytest-mpl need to be fixed to be compatible now, or is this unintentional side effect of matplotlib change?
jklymak commented on Apr 2, 2021
I'm pretty sure it's unintentional and as @QuLogic suggested probably caused by the merged change in the template handling. @anntzer is the expert on the fallback logic and maybe can tease it apart.
tacaswell commented on Apr 2, 2021
This is definitely a fix on our side, I will look at this this afternoon.
pllim commented on Apr 2, 2021
Thank you all for the quick responses!
FIX: ignore empty backend value in matplotlibrc
tacaswell commented on Apr 2, 2021
See #19854