Skip to content

Commit 7f13a07

Browse files
committed
Replace mplcleanup decorator use by fixture
1 parent 89ce0cb commit 7f13a07

File tree

2 files changed

+12
-22
lines changed

2 files changed

+12
-22
lines changed

control/tests/config_test.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from math import pi, log10
99

1010
import matplotlib.pyplot as plt
11-
from matplotlib.testing.decorators import cleanup as mplcleanup
1211
import numpy as np
1312
import pytest
1413

@@ -18,7 +17,6 @@
1817
@pytest.mark.usefixtures("editsdefaults") # makes sure to reset the defaults
1918
# to the test configuration
2019
class TestConfig:
21-
2220
# Create a simple second order system to use for testing
2321
sys = ct.tf([10], [1, 2, 1])
2422

@@ -28,8 +26,7 @@ def test_set_defaults(self):
2826
assert ct.config.defaults['freqplot.deg'] == 2
2927
assert ct.config.defaults['freqplot.Hz'] is None
3028

31-
@mplcleanup
32-
def test_get_param(self):
29+
def test_get_param(self, mplcleanup):
3330
assert ct.config._get_param('freqplot', 'dB')\
3431
== ct.config.defaults['freqplot.dB']
3532
assert ct.config._get_param('freqplot', 'dB', 1) == 1
@@ -92,8 +89,7 @@ def test_default_deprecation(self):
9289
assert ct.config.defaults['bode.Hz'] \
9390
== ct.config.defaults['freqplot.Hz']
9491

95-
@mplcleanup
96-
def test_fbs_bode(self):
92+
def test_fbs_bode(self, mplcleanup):
9793
ct.use_fbs_defaults()
9894

9995
# Generate a Bode plot
@@ -137,8 +133,7 @@ def test_fbs_bode(self):
137133
phase_x, phase_y = (((plt.gcf().axes[1]).get_lines())[0]).get_data()
138134
np.testing.assert_almost_equal(phase_y[-1], -pi, decimal=2)
139135

140-
@mplcleanup
141-
def test_matlab_bode(self):
136+
def test_matlab_bode(self, mplcleanup):
142137
ct.use_matlab_defaults()
143138

144139
# Generate a Bode plot
@@ -182,8 +177,7 @@ def test_matlab_bode(self):
182177
phase_x, phase_y = (((plt.gcf().axes[1]).get_lines())[0]).get_data()
183178
np.testing.assert_almost_equal(phase_y[-1], -pi, decimal=2)
184179

185-
@mplcleanup
186-
def test_custom_bode_default(self):
180+
def test_custom_bode_default(self, mplcleanup):
187181
ct.config.defaults['freqplot.dB'] = True
188182
ct.config.defaults['freqplot.deg'] = True
189183
ct.config.defaults['freqplot.Hz'] = True
@@ -204,8 +198,7 @@ def test_custom_bode_default(self):
204198
np.testing.assert_almost_equal(mag_y[0], 20*log10(10), decimal=3)
205199
np.testing.assert_almost_equal(phase_y[-1], -pi, decimal=2)
206200

207-
@mplcleanup
208-
def test_bode_number_of_samples(self):
201+
def test_bode_number_of_samples(self, mplcleanup):
209202
# Set the number of samples (default is 50, from np.logspace)
210203
mag_ret, phase_ret, omega_ret = ct.bode_plot(self.sys, omega_num=87)
211204
assert len(mag_ret) == 87
@@ -219,8 +212,7 @@ def test_bode_number_of_samples(self):
219212
mag_ret, phase_ret, omega_ret = ct.bode_plot(self.sys, omega_num=87)
220213
assert len(mag_ret) == 87
221214

222-
@mplcleanup
223-
def test_bode_feature_periphery_decade(self):
215+
def test_bode_feature_periphery_decade(self, mplcleanup):
224216
# Generate a sample Bode plot to figure out the range it uses
225217
ct.reset_defaults() # Make sure starting state is correct
226218
mag_ret, phase_ret, omega_ret = ct.bode_plot(self.sys, Hz=False)

control/tests/conftest.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
"""conftest.py - pytest local plugins and fixtures"""
22

33
import os
4-
import sys
54
from contextlib import contextmanager
65

76
import matplotlib as mpl
87
import numpy as np
98
import pytest
10-
import scipy as sp
119

1210
import control
1311

@@ -45,15 +43,15 @@ def control_defaults():
4543
params=[pytest.param("arrayout", marks=matrixerrorfilter),
4644
pytest.param("matrixout", marks=matrixfilter)])
4745
def matarrayout(request):
48-
"""Switch the config to use np.ndarray and np.matrix as returns"""
46+
"""Switch the config to use np.ndarray and np.matrix as returns."""
4947
restore = control.config.defaults['statesp.use_numpy_matrix']
5048
control.use_numpy_matrix(request.param == "matrixout", warn=False)
5149
yield
5250
control.use_numpy_matrix(restore, warn=False)
5351

5452

5553
def ismatarrayout(obj):
56-
"""Test if the returned object has the correct type as configured
54+
"""Test if the returned object has the correct type as configured.
5755
5856
note that isinstance(np.matrix(obj), np.ndarray) is True
5957
"""
@@ -63,15 +61,15 @@ def ismatarrayout(obj):
6361

6462

6563
def asmatarrayout(obj):
66-
"""Return a object according to the configured default"""
64+
"""Return a object according to the configured default."""
6765
use_matrix = control.config.defaults['statesp.use_numpy_matrix']
6866
matarray = np.asmatrix if use_matrix else np.asarray
6967
return matarray(obj)
7068

7169

7270
@contextmanager
7371
def check_deprecated_matrix():
74-
"""Check that a call produces a deprecation warning because of np.matrix"""
72+
"""Check that a call produces a deprecation warning because of np.matrix."""
7573
use_matrix = control.config.defaults['statesp.use_numpy_matrix']
7674
if use_matrix:
7775
with pytest.deprecated_call():
@@ -94,13 +92,13 @@ def check_deprecated_matrix():
9492
False)]
9593
if usebydefault or TEST_MATRIX_AND_ARRAY])
9694
def matarrayin(request):
97-
"""Use array and matrix to construct input data in tests"""
95+
"""Use array and matrix to construct input data in tests."""
9896
return request.param
9997

10098

10199
@pytest.fixture(scope="function")
102100
def editsdefaults():
103-
"""Make sure any changes to the defaults only last during a test"""
101+
"""Make sure any changes to the defaults only last during a test."""
104102
restore = control.config.defaults.copy()
105103
yield
106104
control.config.defaults = restore.copy()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy