Python matplotlib.testing() Examples
The following are 24
code examples of matplotlib.testing().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
matplotlib
, or try the search function
.
Example #1
Source File: decorators.py From twitter-stock-recommendation with MIT License | 6 votes |
def switch_backend(backend): # Local import to avoid a hard nose dependency and only incur the # import time overhead at actual test-time. def switch_backend_decorator(func): @functools.wraps(func) def backend_switcher(*args, **kwargs): try: prev_backend = mpl.get_backend() matplotlib.testing.setup() plt.switch_backend(backend) result = func(*args, **kwargs) finally: plt.switch_backend(prev_backend) return result return _copy_metadata(func, backend_switcher) return switch_backend_decorator
Example #2
Source File: decorators.py From GraphicDesignPatternByPython with MIT License | 6 votes |
def switch_backend(backend): def switch_backend_decorator(func): @functools.wraps(func) def backend_switcher(*args, **kwargs): try: prev_backend = mpl.get_backend() matplotlib.testing.setup() plt.switch_backend(backend) return func(*args, **kwargs) finally: plt.switch_backend(prev_backend) return backend_switcher return switch_backend_decorator
Example #3
Source File: decorators.py From CogAlg with MIT License | 6 votes |
def switch_backend(backend): def switch_backend_decorator(func): @functools.wraps(func) def backend_switcher(*args, **kwargs): try: prev_backend = mpl.get_backend() matplotlib.testing.setup() plt.switch_backend(backend) return func(*args, **kwargs) finally: plt.switch_backend(prev_backend) return backend_switcher return switch_backend_decorator
Example #4
Source File: decorators.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 6 votes |
def switch_backend(backend): def switch_backend_decorator(func): @functools.wraps(func) def backend_switcher(*args, **kwargs): try: prev_backend = mpl.get_backend() matplotlib.testing.setup() plt.switch_backend(backend) return func(*args, **kwargs) finally: plt.switch_backend(prev_backend) return backend_switcher return switch_backend_decorator
Example #5
Source File: decorators.py From coffeegrindsize with MIT License | 6 votes |
def switch_backend(backend): def switch_backend_decorator(func): @functools.wraps(func) def backend_switcher(*args, **kwargs): try: prev_backend = mpl.get_backend() matplotlib.testing.setup() plt.switch_backend(backend) return func(*args, **kwargs) finally: plt.switch_backend(prev_backend) return backend_switcher return switch_backend_decorator
Example #6
Source File: decorators.py From twitter-stock-recommendation with MIT License | 5 votes |
def setup(self): func = self.func plt.close('all') self.setup_class() try: matplotlib.style.use(self.style) matplotlib.testing.set_font_settings_for_testing() func() assert len(plt.get_fignums()) == len(self.baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(self.baseline_images))) except: # Restore original settings before raising errors. self.teardown_class() raise
Example #7
Source File: decorators.py From twitter-stock-recommendation with MIT License | 5 votes |
def setup_class(cls): cls.original_units_registry = matplotlib.units.registry.copy() cls.original_settings = mpl.rcParams.copy() matplotlib.testing.setup()
Example #8
Source File: decorators.py From CogAlg with MIT License | 5 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. For test module ``foo.bar.test_baz``, the baseline directory is at ``foo/bar/baseline_images/test_baz`` and the result directory at ``$(pwd)/result_images/test_baz``. The result directory is created if it doesn't exist. """ module_path = Path(sys.modules[func.__module__].__file__) baseline_dir = module_path.parent / "baseline_images" / module_path.stem result_dir = Path().resolve() / "result_images" / module_path.stem result_dir.mkdir(parents=True, exist_ok=True) return str(baseline_dir), str(result_dir)
Example #9
Source File: decorators.py From CogAlg with MIT License | 5 votes |
def setup(self): func = self.func plt.close('all') self.setup_class() try: matplotlib.style.use(self.style) matplotlib.testing.set_font_settings_for_testing() func() assert len(plt.get_fignums()) == len(self.baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(self.baseline_images))) except: # Restore original settings before raising errors. self.teardown_class() raise
Example #10
Source File: decorators.py From coffeegrindsize with MIT License | 5 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. For test module ``foo.bar.test_baz``, the baseline directory is at ``foo/bar/baseline_images/test_baz`` and the result directory at ``$(pwd)/result_images/test_baz``. The result directory is created if it doesn't exist. """ module_path = Path(sys.modules[func.__module__].__file__) baseline_dir = module_path.parent / "baseline_images" / module_path.stem result_dir = Path().resolve() / "result_images" / module_path.stem result_dir.mkdir(parents=True, exist_ok=True) return str(baseline_dir), str(result_dir)
Example #11
Source File: decorators.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def setup(self): func = self.func plt.close('all') self.setup_class() try: matplotlib.style.use(self.style) matplotlib.testing.set_font_settings_for_testing() func() assert len(plt.get_fignums()) == len(self.baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(self.baseline_images))) except: # Restore original settings before raising errors. self.teardown_class() raise
Example #12
Source File: decorators.py From coffeegrindsize with MIT License | 5 votes |
def setup(self): func = self.func plt.close('all') self.setup_class() try: matplotlib.style.use(self.style) matplotlib.testing.set_font_settings_for_testing() func() assert len(plt.get_fignums()) == len(self.baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(self.baseline_images))) except: # Restore original settings before raising errors. self.teardown_class() raise
Example #13
Source File: mpl_ic.py From msaf with MIT License | 5 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. Create the result directory if it doesn't exist. """ module_name = func.__module__ # mods = module_name.split('.') # mods.pop(0) # <- will be the name of the package being tested (in # most cases "matplotlib") # assert mods.pop(0) == 'tests' # subdir = os.path.join(*mods) subdir = module_name import imp def find_dotted_module(module_name, path=None): """A version of imp which can handle dots in the module name""" res = None for sub_mod in module_name.split('.'): try: res = file, path, _ = imp.find_module(sub_mod, path) path = [path] if file is not None: file.close() except ImportError: # assume namespace package path = sys.modules[sub_mod].__path__ res = None, path, None return res mod_file = find_dotted_module(func.__module__)[1] basedir = os.path.dirname(mod_file) baseline_dir = os.path.join(basedir, 'baseline_images', subdir) result_dir = os.path.abspath(os.path.join('result_images', subdir)) if not os.path.exists(result_dir): cbook.mkdirs(result_dir) return baseline_dir, result_dir
Example #14
Source File: mpl_ic.py From msaf with MIT License | 5 votes |
def _do_cleanup(original_units_registry): plt.close('all') gc.collect() import matplotlib.testing matplotlib.testing.setup() matplotlib.units.registry.clear() matplotlib.units.registry.update(original_units_registry) warnings.resetwarnings() # reset any warning filters set in tests
Example #15
Source File: mpl_ic.py From msaf with MIT License | 5 votes |
def knownfailureif(fail_condition, msg=None, known_exception_class=None ): """ Assume a will fail if *fail_condition* is True. *fail_condition* may also be False or the string 'indeterminate'. *msg* is the error message displayed for the test. If *known_exception_class* is not None, the failure is only known if the exception is an instance of this class. (Default = None) """ # based on numpy.testing.dec.knownfailureif if msg is None: msg = 'Test known to fail' def known_fail_decorator(f): # Local import to avoid a hard nose dependency and only incur the # import time overhead at actual test-time. import nose def failer(*args, **kwargs): try: # Always run the test (to generate images). result = f(*args, **kwargs) except Exception as err: if fail_condition: if known_exception_class is not None: if not isinstance(err,known_exception_class): # This is not the expected exception raise # (Keep the next ultra-long comment so in shows in console.) raise KnownFailure(msg) # An error here when running nose means that you don't have the matplotlib.testing.noseclasses:KnownFailure plugin in use. else: raise if fail_condition and fail_condition != 'indeterminate': raise KnownFailureDidNotFailTest(msg) return result return nose.tools.make_decorator(f)(failer) return known_fail_decorator
Example #16
Source File: decorators.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. For test module ``foo.bar.test_baz``, the baseline directory is at ``foo/bar/baseline_images/test_baz`` and the result directory at ``$(pwd)/result_images/test_baz``. The result directory is created if it doesn't exist. """ module_path = Path(sys.modules[func.__module__].__file__) baseline_dir = module_path.parent / "baseline_images" / module_path.stem result_dir = Path().resolve() / "result_images" / module_path.stem result_dir.mkdir(parents=True, exist_ok=True) return str(baseline_dir), str(result_dir)
Example #17
Source File: decorators.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 5 votes |
def setup(self): func = self.func plt.close('all') self.setup_class() try: matplotlib.style.use(self.style) matplotlib.testing.set_font_settings_for_testing() func() assert len(plt.get_fignums()) == len(self.baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(self.baseline_images))) except: # Restore original settings before raising errors. self.teardown_class() raise
Example #18
Source File: decorators.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. For test module ``foo.bar.test_baz``, the baseline directory is at ``foo/bar/baseline_images/test_baz`` and the result directory at ``$(pwd)/result_images/test_baz``. The result directory is created if it doesn't exist. """ module_path = Path(sys.modules[func.__module__].__file__) baseline_dir = module_path.parent / "baseline_images" / module_path.stem result_dir = Path().resolve() / "result_images" / module_path.stem result_dir.mkdir(parents=True, exist_ok=True) return str(baseline_dir), str(result_dir)
Example #19
Source File: decorators.py From twitter-stock-recommendation with MIT License | 4 votes |
def _pytest_image_comparison(baseline_images, extensions, tol, freetype_version, remove_text, savefig_kwargs, style): """ Decorate function with image comparison for pytest. This function creates a decorator that wraps a figure-generating function with image comparison code. Pytest can become confused if we change the signature of the function, so we indirectly pass anything we need via the `mpl_image_comparison_parameters` fixture and extra markers. """ import pytest extensions = map(_mark_xfail_if_format_is_uncomparable, extensions) def decorator(func): # Parameter indirection; see docstring above and comment below. @pytest.mark.usefixtures('mpl_image_comparison_parameters') @pytest.mark.parametrize('extension', extensions) @pytest.mark.baseline_images(baseline_images) # END Parameter indirection. @pytest.mark.style(style) @_checked_on_freetype_version(freetype_version) @functools.wraps(func) def wrapper(*args, **kwargs): __tracebackhide__ = True img = _ImageComparisonBase(tol=tol, remove_text=remove_text, savefig_kwargs=savefig_kwargs) img.delayed_init(func) matplotlib.testing.set_font_settings_for_testing() func(*args, **kwargs) # Parameter indirection: # This is hacked on via the mpl_image_comparison_parameters fixture # so that we don't need to modify the function's real signature for # any parametrization. Modifying the signature is very very tricky # and likely to confuse pytest. baseline_images, extension = func.parameters assert len(plt.get_fignums()) == len(baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(baseline_images))) for idx, baseline in enumerate(baseline_images): img.compare(idx, baseline, extension) wrapper.__wrapped__ = func # For Python 2.7. return _copy_metadata(func, wrapper) return decorator
Example #20
Source File: decorators.py From twitter-stock-recommendation with MIT License | 4 votes |
def _image_directories(func): """ Compute the baseline and result image directories for testing *func*. Create the result directory if it doesn't exist. """ module_name = func.__module__ if module_name == '__main__': # FIXME: this won't work for nested packages in matplotlib.tests warnings.warn( 'Test module run as script. Guessing baseline image locations.') script_name = sys.argv[0] basedir = os.path.abspath(os.path.dirname(script_name)) subdir = os.path.splitext(os.path.split(script_name)[1])[0] else: mods = module_name.split('.') if len(mods) >= 3: mods.pop(0) # mods[0] will be the name of the package being tested (in # most cases "matplotlib") However if this is a # namespace package pip installed and run via the nose # multiprocess plugin or as a specific test this may be # missing. See https://github.com/matplotlib/matplotlib/issues/3314 if mods.pop(0) != 'tests': warnings.warn( "Module {!r} does not live in a parent module named 'tests'. " "This is probably ok, but we may not be able to guess the " "correct subdirectory containing the baseline images. If " "things go wrong please make sure that there is a parent " "directory named 'tests' and that it contains a __init__.py " "file (can be empty).".format(module_name)) subdir = os.path.join(*mods) import imp def find_dotted_module(module_name, path=None): """A version of imp which can handle dots in the module name. As for imp.find_module(), the return value is a 3-element tuple (file, pathname, description).""" res = None for sub_mod in module_name.split('.'): try: res = file, path, _ = imp.find_module(sub_mod, path) path = [path] if file is not None: file.close() except ImportError: # assume namespace package path = list(sys.modules[sub_mod].__path__) res = None, path, None return res mod_file = find_dotted_module(func.__module__)[1] basedir = os.path.dirname(mod_file) baseline_dir = os.path.join(basedir, 'baseline_images', subdir) result_dir = os.path.abspath(os.path.join('result_images', subdir)) if not os.path.exists(result_dir): cbook.mkdirs(result_dir) return baseline_dir, result_dir
Example #21
Source File: decorators.py From coffeegrindsize with MIT License | 4 votes |
def _pytest_image_comparison(baseline_images, extensions, tol, freetype_version, remove_text, savefig_kwargs, style): """ Decorate function with image comparison for pytest. This function creates a decorator that wraps a figure-generating function with image comparison code. Pytest can become confused if we change the signature of the function, so we indirectly pass anything we need via the `mpl_image_comparison_parameters` fixture and extra markers. """ import pytest extensions = map(_mark_xfail_if_format_is_uncomparable, extensions) def decorator(func): @functools.wraps(func) # Parameter indirection; see docstring above and comment below. @pytest.mark.usefixtures('mpl_image_comparison_parameters') @pytest.mark.parametrize('extension', extensions) @pytest.mark.baseline_images(baseline_images) # END Parameter indirection. @pytest.mark.style(style) @_checked_on_freetype_version(freetype_version) @functools.wraps(func) def wrapper(*args, **kwargs): __tracebackhide__ = True img = _ImageComparisonBase(tol=tol, remove_text=remove_text, savefig_kwargs=savefig_kwargs) img.delayed_init(func) matplotlib.testing.set_font_settings_for_testing() func(*args, **kwargs) # Parameter indirection: # This is hacked on via the mpl_image_comparison_parameters fixture # so that we don't need to modify the function's real signature for # any parametrization. Modifying the signature is very very tricky # and likely to confuse pytest. baseline_images, extension = func.parameters assert len(plt.get_fignums()) == len(baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(baseline_images))) for idx, baseline in enumerate(baseline_images): img.compare(idx, baseline, extension) return wrapper return decorator
Example #22
Source File: decorators.py From CogAlg with MIT License | 4 votes |
def _pytest_image_comparison(baseline_images, extensions, tol, freetype_version, remove_text, savefig_kwargs, style): """ Decorate function with image comparison for pytest. This function creates a decorator that wraps a figure-generating function with image comparison code. Pytest can become confused if we change the signature of the function, so we indirectly pass anything we need via the `mpl_image_comparison_parameters` fixture and extra markers. """ import pytest extensions = map(_mark_skip_if_format_is_uncomparable, extensions) def decorator(func): @functools.wraps(func) # Parameter indirection; see docstring above and comment below. @pytest.mark.usefixtures('mpl_image_comparison_parameters') @pytest.mark.parametrize('extension', extensions) @pytest.mark.baseline_images(baseline_images) # END Parameter indirection. @pytest.mark.style(style) @_checked_on_freetype_version(freetype_version) @functools.wraps(func) def wrapper(*args, **kwargs): __tracebackhide__ = True img = _ImageComparisonBase(tol=tol, remove_text=remove_text, savefig_kwargs=savefig_kwargs) img.delayed_init(func) matplotlib.testing.set_font_settings_for_testing() func(*args, **kwargs) # Parameter indirection: # This is hacked on via the mpl_image_comparison_parameters fixture # so that we don't need to modify the function's real signature for # any parametrization. Modifying the signature is very very tricky # and likely to confuse pytest. baseline_images, extension = func.parameters assert len(plt.get_fignums()) == len(baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(baseline_images))) for idx, baseline in enumerate(baseline_images): img.compare(idx, baseline, extension) return wrapper return decorator
Example #23
Source File: decorators.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 4 votes |
def _pytest_image_comparison(baseline_images, extensions, tol, freetype_version, remove_text, savefig_kwargs, style): """ Decorate function with image comparison for pytest. This function creates a decorator that wraps a figure-generating function with image comparison code. Pytest can become confused if we change the signature of the function, so we indirectly pass anything we need via the `mpl_image_comparison_parameters` fixture and extra markers. """ import pytest extensions = map(_mark_xfail_if_format_is_uncomparable, extensions) def decorator(func): @functools.wraps(func) # Parameter indirection; see docstring above and comment below. @pytest.mark.usefixtures('mpl_image_comparison_parameters') @pytest.mark.parametrize('extension', extensions) @pytest.mark.baseline_images(baseline_images) # END Parameter indirection. @pytest.mark.style(style) @_checked_on_freetype_version(freetype_version) @functools.wraps(func) def wrapper(*args, **kwargs): __tracebackhide__ = True img = _ImageComparisonBase(tol=tol, remove_text=remove_text, savefig_kwargs=savefig_kwargs) img.delayed_init(func) matplotlib.testing.set_font_settings_for_testing() func(*args, **kwargs) # Parameter indirection: # This is hacked on via the mpl_image_comparison_parameters fixture # so that we don't need to modify the function's real signature for # any parametrization. Modifying the signature is very very tricky # and likely to confuse pytest. baseline_images, extension = func.parameters assert len(plt.get_fignums()) == len(baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(baseline_images))) for idx, baseline in enumerate(baseline_images): img.compare(idx, baseline, extension) return wrapper return decorator
Example #24
Source File: decorators.py From GraphicDesignPatternByPython with MIT License | 4 votes |
def _pytest_image_comparison(baseline_images, extensions, tol, freetype_version, remove_text, savefig_kwargs, style): """ Decorate function with image comparison for pytest. This function creates a decorator that wraps a figure-generating function with image comparison code. Pytest can become confused if we change the signature of the function, so we indirectly pass anything we need via the `mpl_image_comparison_parameters` fixture and extra markers. """ import pytest extensions = map(_mark_xfail_if_format_is_uncomparable, extensions) def decorator(func): @functools.wraps(func) # Parameter indirection; see docstring above and comment below. @pytest.mark.usefixtures('mpl_image_comparison_parameters') @pytest.mark.parametrize('extension', extensions) @pytest.mark.baseline_images(baseline_images) # END Parameter indirection. @pytest.mark.style(style) @_checked_on_freetype_version(freetype_version) @functools.wraps(func) def wrapper(*args, **kwargs): __tracebackhide__ = True img = _ImageComparisonBase(tol=tol, remove_text=remove_text, savefig_kwargs=savefig_kwargs) img.delayed_init(func) matplotlib.testing.set_font_settings_for_testing() func(*args, **kwargs) # Parameter indirection: # This is hacked on via the mpl_image_comparison_parameters fixture # so that we don't need to modify the function's real signature for # any parametrization. Modifying the signature is very very tricky # and likely to confuse pytest. baseline_images, extension = func.parameters assert len(plt.get_fignums()) == len(baseline_images), ( "Test generated {} images but there are {} baseline images" .format(len(plt.get_fignums()), len(baseline_images))) for idx, baseline in enumerate(baseline_images): img.compare(idx, baseline, extension) return wrapper return decorator