GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Refactor the test suite using pytest for array and matrix types by bnavigator · Pull Request #438 · python-control/python-control Conversation
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Coverage increased (+0.4%) to 87.04% when pulling 2b98769 on bnavigator:array-matrix-tests into 4eee1f3 on python-control:master. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| ssxfrm_real = ssxfrm_mag * np.cos(ssxfrm_phase) | ||
| ssxfrm_imag = ssxfrm_mag * np.sin(ssxfrm_phase) | ||
| np.testing.assert_array_almost_equal( | ||
| ssorig_real, ssxfrm_real, decimal=5) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I had to reduce precision here, because running the test with matrix and array advances the random seed and produces different random systems.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| try: | ||
| tf2*tf3 # Error; incompatible timebases | ||
| raise ValueError("incompatible operation allowed") | ||
| except ValueError: | ||
| pass | ||
| try: |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
The pytest code makes this look a lot cleaner.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| self.assertRaises(PendingDeprecationWarning, frd_tf.evalfr, 1.) | ||
| with pytest.deprecated_call(): | ||
| frd_tf.evalfr(1.) | ||
|
|
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Pytest takes care of this just fine
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| @@ -1,393 +0,0 @@ | |||
| import unittest | |||
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Same code as robust_test.py, just different setup and teardown. So obsolete with the new fixture.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
9500543 to
b7b7f7b
Compare
|
the iosys_test now fails with incompatible timebases. probably need to merge #431 too. Has some merge conflicts, will need to rebase and apply #431, #433 in order... |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
273a80b to
e7affff
Compare
|
@sawyerbfuller, can I pick 8e3ddd2 from your branch fix-lti-evalfr into this PR and pytestify it right away? That way you don't have to submit a PR yourself and I don't have to rebase those fixes later. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Hi ben , I agree that pull request will need to happen after the changes
you’ve been making. Right now though, that branch Has changes that I don’t
think are the right way to do it (incorrectly assumes omega is real, and I
think we should move toward using __call__) so please don’t merge. S
On Sun, Jul 26, 2020 at 7:53 AM Ben Greiner ***@***.***> wrote:
@sawyerbfuller <https://github.com/sawyerbfuller>, can I pick 8e3ddd2
<8e3ddd2>
from your branch fix-lti-evalfr into this PR and pytestify it right away?
That way you don't have to submit a PR yourself and I don't have to rebase
those fixes later.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#438 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN74SSOBSVQL4M4UFQGXYLTR5Q7L7ANCNFSM4PHU6UNA>
.
--
Sawyer Fuller
Assistant Professor of Mechanical Engineering
University of Washington
http://faculty.washington.edu/~minster/
(Typed with my thumbs)
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
9804e7b to
8ee73b9
Compare
I agree with this statement. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
0bd120d to
45d677f
Compare
90582e5 to
da1c517
Compare
e96f365 to
ab77e02
Compare
remove a lot of duplicate code by converting everything into a single parametrized test function.
7674d30 to
deeb0c7
Compare
|
Rebase is done. I pulled everything not directly related to the testsuite out into different PRs. The new timevector calculation needs a minor change (#485) to fix the failing tests here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
revert this commit when merging a rebased python-control#431 (remove statesp_test.py::test_copy_constructor_nodt if not applicable)
deeb0c7 to
2b98769
Compare
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
A few small things that could be fixed, but OK to merge.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| - "3.8" | ||
| - "3.7" |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
To minimize CI resource usage, would it make sense to just check against the earliest supported Python 3 release and the latest stable Python 3 release? So 3.6 and 3.9, with the idea that if it works in those two then 3.7, and 3.8 are probably OK as well.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Definitely. AFAIK we do not make use of any of the changed Python stdlib changes like importlib-metadata, -resources, -dataclasses or the like.
We will need to revisit the test strategy matrix when moving from travis-ci.org to travis-ci.com or Github Actions. (#446)
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| [tool:pytest] | ||
| filterwarnings = | ||
| ignore:.*matrix subclass:PendingDeprecationWarning | ||
| ignore:.*scipy:DeprecationWarning |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Do we really want to ignore these? Seems like something we would want to flag in a CI test.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This change removes one ignore. We can also remove the other and should track down any remaining matrix usage (in a separate PR, if outside of the test suite). Without the remaining filter, I get this summary:
============================================= warnings summary ==============================================
control/tests/bdalg_test.py: 387 warnings
control/tests/canonical_test.py: 180 warnings
control/tests/config_test.py: 8 warnings
control/tests/convert_test.py: 3080 warnings
control/tests/discrete_test.py: 964 warnings
control/tests/flatsys_test.py: 54 warnings
control/tests/frd_test.py: 87 warnings
control/tests/freqresp_test.py: 84 warnings
control/tests/input_element_int_test.py: 8 warnings
control/tests/iosys_test.py: 728 warnings
control/tests/lti_test.py: 8 warnings
control/tests/margin_test.py: 20 warnings
control/tests/mateqn_test.py: 30 warnings
control/tests/matlab2_test.py: 96 warnings
control/tests/matlab_test.py: 896 warnings
control/tests/minreal_test.py: 4496 warnings
control/tests/modelsimp_test.py: 36 warnings
control/tests/statefbk_test.py: 53 warnings
/home/greiner/src/python-control/control/statesp.py:102: PendingDeprecationWarning: the matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.
arr = np.matrix(data, dtype=float)
control/tests/iosys_test.py::TestIOSys::test_named_signals_linearize_inconsistent
control/tests/iosys_test.py::TestIOSys::test_named_signals_linearize_inconsistent
control/tests/iosys_test.py::TestIOSys::test_named_signals_linearize_inconsistent
control/tests/iosys_test.py::TestIOSys::test_named_signals_linearize_inconsistent
control/tests/matlab_test.py::TestMatlab::testDcgain
control/tests/matlab_test.py::TestMatlab::testDcgain
control/tests/statefbk_test.py::TestStatefbk::test_LQE[arrayin]
control/tests/statefbk_test.py::TestStatefbk::test_LQE[arrayin]
/usr/lib64/python3.8/site-packages/numpy/matrixlib/defmatrix.py:69: PendingDeprecationWarning: the matrix subclass is not the recommended way to represent matrices or deal with linear algebra (see https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html). Please adjust your code to use regular ndarray.
return matrix(data, dtype=dtype, copy=False)
-- Docs: https://docs.pytest.org/en/stable/warnings.html
These warnings vanish, when I activate PYTHON_CONTROL_ARRAY_AND_MATRIX=1. Seems like the default when this is not set is wrong. Will track it down in a few hours.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| Programming Language :: Python :: 3.6 | ||
| Programming Language :: Python :: 3.7 | ||
| Programming Language :: Python :: 3.8 |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Not sure whether we should only list versions we are explicitly testing against (so this would match .travis.yml list).
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…" from python-control#438 This reverts commit 2b98769.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.