-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
Unfortunately, the $MPLCONFIGDIR mechanism used to instruct matplotlib where to look for stylesheets also sets the cache directory. Because in the UPS implementation this is a read-only directory, matplotlib re-sets this to a different, temporary directory upon startup, which then makes it unable to find the style file. Example invocation on a DUNE gpvm:
$ source /cvmfs/dune.opensciencegrid.org/products/dune/setup_dune.sh
Setting up larsoft UPS area... /cvmfs/larsoft.opensciencegrid.org
Setting up DUNE UPS area... /cvmfs/dune.opensciencegrid.org/products/dune/
$ setup duneutil v10_11_00d00 -q e26:prof
$ setup dune_plot_style v01_02
$ python3
Python 3.9.15 (main, Feb 8 2023, 11:36:31)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from dunestyle import matplotlib as dunestyle
Matplotlib created a temporary cache directory at /tmp/matplotlib-mv9gap30 because the default path (/cvmfs/dune.opensciencegrid.org/products/dune/dune_plot_style/v01_02/stylelib) is not a writable directory; it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/cvmfs/dune.opensciencegrid.org/products/dune/dune_plot_style/v01_02/python/dunestyle/matplotlib/__init__.py", line 18, in <module>
from .dunestyle import *
File "/cvmfs/dune.opensciencegrid.org/products/dune/dune_plot_style/v01_02/python/dunestyle/matplotlib/dunestyle.py", line 33, in <module>
enable()
File "/cvmfs/dune.opensciencegrid.org/products/dune/dune_plot_style/v01_02/python/dunestyle/matplotlib/dunestyle.py", line 25, in enable
assert os.path.exists(path), "Can't locate DUNE matplotlib style sheet file! I tried path: " + path
AssertionError: Can't locate DUNE matplotlib style sheet file! I tried path: /tmp/matplotlib-mv9gap30/dune.mplstyle
>>> Matplotlib 3.7 (2022) introduced a better mechanism for custom stylesheets. This should be adopted by dune_plot_style. Changes are relatively simple:
- instead of installing the
src/matplotlib/stylelibfile into its own directory, install its contents into the same directory as the__init__.py - eliminate the setting of
$MPLCONFIGDIRin the UPS files - make
matplotliban optional dependency, but specify the version as >= 3.7
Metadata
Metadata
Assignees
Labels
No labels