Source code for matplotlib.testing

Helper functions for testing.

import locale
import logging
import subprocess
from pathlib import Path
from tempfile import TemporaryDirectory

import matplotlib as mpl
from matplotlib import _api

_log = logging.getLogger(__name__)

[docs]def set_font_settings_for_testing(): mpl.rcParams[''] = 'DejaVu Sans' mpl.rcParams['text.hinting'] = 'none' mpl.rcParams['text.hinting_factor'] = 8
[docs]def set_reproducibility_for_testing(): mpl.rcParams['svg.hashsalt'] = 'matplotlib'
[docs]def setup(): # The baseline images are created in this locale, so we should use # it during all of the tests. try: locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') except locale.Error: try: locale.setlocale(locale.LC_ALL, 'English_United States.1252') except locale.Error: _log.warning( "Could not set locale to English/United States. " "Some date-related tests may fail.") mpl.use('Agg') with _api.suppress_matplotlib_deprecation_warning(): mpl.rcdefaults() # Start with all defaults # These settings *must* be hardcoded for running the comparison tests and # are not necessarily the default values as specified in set_font_settings_for_testing() set_reproducibility_for_testing()
def _check_for_pgf(texsystem): """ Check if a given TeX system + pgf is available Parameters ---------- texsystem : str The executable name to check """ with TemporaryDirectory() as tmpdir: tex_path = Path(tmpdir, "test.tex") tex_path.write_text(r""" \documentclass{minimal} \usepackage{pgf} \begin{document} \typeout{pgfversion=\pgfversion} \makeatletter \@@end """) try: subprocess.check_call( [texsystem, "-halt-on-error", str(tex_path)], cwd=tmpdir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) except (OSError, subprocess.CalledProcessError): return False return True def _has_tex_package(package): return bool(mpl.dviread.find_tex_file(f"{package}.sty"))