1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import difflib
- import subprocess
- import sys
- from pathlib import Path
- import pytest
- import matplotlib as mpl
- from matplotlib import pyplot as plt
- from matplotlib.cbook import MatplotlibDeprecationWarning
- def test_pyplot_up_to_date(tmpdir):
- gen_script = Path(mpl.__file__).parents[2] / "tools/boilerplate.py"
- if not gen_script.exists():
- pytest.skip("boilerplate.py not found")
- orig_contents = Path(plt.__file__).read_text()
- plt_file = tmpdir.join('pyplot.py')
- plt_file.write_text(orig_contents, 'utf-8')
- subprocess.run([sys.executable, str(gen_script), str(plt_file)],
- check=True)
- new_contents = plt_file.read_text('utf-8')
- if orig_contents != new_contents:
- diff_msg = '\n'.join(
- difflib.unified_diff(
- orig_contents.split('\n'), new_contents.split('\n'),
- fromfile='found pyplot.py',
- tofile='expected pyplot.py',
- n=0, lineterm=''))
- pytest.fail(
- "pyplot.py is not up-to-date. Please run "
- "'python tools/boilerplate.py' to update pyplot.py. "
- "This needs to be done from an environment where your "
- "current working copy is installed (e.g. 'pip install -e'd). "
- "Here is a diff of unexpected differences:\n%s" % diff_msg
- )
- def test_copy_docstring_and_deprecators(recwarn):
- @mpl.cbook._rename_parameter("(version)", "old", "new")
- @mpl.cbook._make_keyword_only("(version)", "kwo")
- def func(new, kwo=None):
- pass
- @plt._copy_docstring_and_deprecators(func)
- def wrapper_func(new, kwo=None):
- pass
- wrapper_func(None)
- wrapper_func(new=None)
- wrapper_func(None, kwo=None)
- wrapper_func(new=None, kwo=None)
- assert not recwarn
- with pytest.warns(MatplotlibDeprecationWarning):
- wrapper_func(old=None)
- with pytest.warns(MatplotlibDeprecationWarning):
- wrapper_func(None, None)
- def test_pyplot_box():
- fig, ax = plt.subplots()
- plt.box(False)
- assert not ax.get_frame_on()
- plt.box(True)
- assert ax.get_frame_on()
- plt.box()
- assert not ax.get_frame_on()
- plt.box()
- assert ax.get_frame_on()
- def test_stackplot_smoke():
- # Small smoke test for stackplot (see #12405)
- plt.stackplot([1, 2, 3], [1, 2, 3])
- def test_nrows_error():
- with pytest.raises(TypeError):
- plt.subplot(nrows=1)
- with pytest.raises(TypeError):
- plt.subplot(ncols=1)
|