### Bug summary Cannot create a `matplotlib.ticker.ScalarFormatter()` without importing "unnecessary" imports. ### Code for reproduction ```python import matplotlib print(matplotlib.__version__) import matplotlib.ticker matplotlib.ticker.ScalarFormatter() ``` ``` ### Actual outcome ```--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [1], in <module> 2 print(matplotlib.__version__) 3 import matplotlib.ticker ----> 4 matplotlib.ticker.ScalarFormatter() File /usr/lib/python3.10/site-packages/matplotlib/ticker.py:444, in ScalarFormatter.__init__(self, useOffset, useMathText, useLocale) 442 if useMathText is False: 443 try: --> 444 ufont = mpl.font_manager.findfont( 445 mpl.font_manager.FontProperties( 446 mpl.rcParams["font.family"] 447 ), 448 fallback_to_default=False, 449 ) 450 except ValueError: 451 ufont = None File /usr/lib/python3.10/site-packages/matplotlib/_api/__init__.py:222, in caching_module_getattr.<locals>.__getattr__(name) 220 if name in props: 221 return props[name].__get__(instance) --> 222 raise AttributeError( 223 f"module {cls.__module__!r} has no attribute {name!r}") AttributeError: module 'matplotlib' has no attribute 'font_manager' ``` ### Expected outcome should run without error **as in previous versions.** ### Additional information As a workaround just execute the following command before creating the ScalarFormatter ``` import matplotlib.font_manager ``` ### Operating system Arch Linux ### Matplotlib Version 3.5.1 ### Matplotlib Backend module://matplotlib_inline.backend_inline ### Python version 3.10.2 ### Jupyter version 3.2.8 (dev), 3.0.16 (app) ### Installation Linux package manager
Activity
FIX: ensure that used sub-packages are actually imported
FIX: ensure that used sub-packages are actually imported
FIX: bury import of matplotlib.font_manager
subfigure _axstack property
MAINT: Les setup.py use pyproject.toml & setup.cfg
MAINT: Les setup.py use pyproject.toml & setup.cfg
MAINT: Les setup.py use pyproject.toml & setup.cfg
MAINT: Les setup.py use pyproject.toml & setup.cfg