From 77a38fcb32bfe698fe5b9dc2c9c0b60b36ebfd06 Mon Sep 17 00:00:00 2001 From: Sawyer Fuller Date: Thu, 23 Jul 2020 14:46:50 -0700 Subject: [PATCH 1/2] quick and dirty parser for version number in legacy-defaults --- control/config.py | 13 ++++++++++--- control/tests/config_test.py | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/control/config.py b/control/config.py index 27a5712a3..ee8945743 100644 --- a/control/config.py +++ b/control/config.py @@ -166,9 +166,16 @@ def use_legacy_defaults(version): Parameters ---------- version : string - version number of the defaults desired. Currently only supports `0.8.3`. + version number of the defaults desired. ranges from '0.1' to '0.8.4'. """ - if version == '0.8.3': + first_digit = int(version[0]) + second_digit = int(version[2]) + if second_digit < 8: + # TODO: anything for 0.7 and below if needed + pass + elif second_digit == 8: + if len(version) > 4: + third_digit = int(version[4]) use_numpy_matrix(True) # alternatively: set_defaults('statesp', use_numpy_matrix=True) else: - raise ValueError('''version number not recognized. Possible values are: ['0.8.3']''') \ No newline at end of file + raise ValueError('''version number not recognized. Possible values range from '0.1' to '0.8.4'.''') \ No newline at end of file diff --git a/control/tests/config_test.py b/control/tests/config_test.py index 2fdae22e4..667a7e3c4 100644 --- a/control/tests/config_test.py +++ b/control/tests/config_test.py @@ -216,6 +216,12 @@ def test_legacy_defaults(self): assert(isinstance(ct.ss(0,0,0,1).D, np.matrix)) ct.reset_defaults() assert(isinstance(ct.ss(0,0,0,1).D, np.ndarray)) + # test that old versions don't raise a problem + ct.use_legacy_defaults('0.6c') + ct.use_legacy_defaults('0.8.2') + ct.use_legacy_defaults('0.1') + ct.config.reset_defaults() + def test_change_default_dt(self): ct.set_defaults('statesp', default_dt=0) From 94c57dd12daf1d140829ad4fb181f452b51961c9 Mon Sep 17 00:00:00 2001 From: Sawyer Fuller Date: Thu, 23 Jul 2020 19:44:50 -0700 Subject: [PATCH 2/2] refinement to accomodate multi-digit version numbers --- control/config.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/control/config.py b/control/config.py index ee8945743..c06d38b6e 100644 --- a/control/config.py +++ b/control/config.py @@ -168,8 +168,9 @@ def use_legacy_defaults(version): version : string version number of the defaults desired. ranges from '0.1' to '0.8.4'. """ - first_digit = int(version[0]) - second_digit = int(version[2]) + numbers_list = version.split(".") + first_digit = int(numbers_list[0]) + second_digit = int(numbers_list[1].strip('abcdef')) # remove trailing letters if second_digit < 8: # TODO: anything for 0.7 and below if needed pass