myokit 1.34.0__py3-none-any.whl → 1.35.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- myokit/__init__.py +5 -23
- myokit/__main__.py +70 -117
- myokit/_aux.py +5 -8
- myokit/_config.py +22 -31
- myokit/_datablock.py +26 -70
- myokit/_datalog.py +23 -53
- myokit/_err.py +13 -15
- myokit/_expressions.py +35 -55
- myokit/_io.py +5 -22
- myokit/_model_api.py +34 -47
- myokit/_myokit_version.py +1 -5
- myokit/_parsing.py +17 -25
- myokit/_progress.py +4 -7
- myokit/_protocol.py +6 -9
- myokit/_sim/__init__.py +7 -24
- myokit/_sim/cable.c +1 -3
- myokit/_sim/cable.py +3 -5
- myokit/_sim/cmodel.h +1 -3
- myokit/_sim/cmodel.py +1 -4
- myokit/_sim/compiler.py +1 -4
- myokit/_sim/cvodessim.c +1 -4
- myokit/_sim/cvodessim.py +1 -4
- myokit/_sim/fiber_tissue.c +2 -6
- myokit/_sim/fiber_tissue.py +3 -5
- myokit/_sim/jacobian.py +6 -7
- myokit/_sim/mcl.h +51 -53
- myokit/_sim/opencl.py +9 -22
- myokit/_sim/openclsim.c +2 -6
- myokit/_sim/openclsim.py +6 -6
- myokit/_sim/pacing.h +2 -6
- myokit/_sim/rhs.c +3 -10
- myokit/_sim/rhs.py +4 -13
- myokit/_sim/sundials.py +1 -4
- myokit/_system.py +10 -16
- myokit/_unit.py +3 -12
- myokit/float.py +0 -3
- myokit/formats/__init__.py +8 -10
- myokit/formats/ansic/__init__.py +0 -3
- myokit/formats/ansic/_ewriter.py +2 -4
- myokit/formats/ansic/_exporter.py +0 -3
- myokit/formats/axon/__init__.py +1 -3
- myokit/formats/axon/_abf.py +12 -15
- myokit/formats/axon/_atf.py +5 -6
- myokit/formats/axon/_importer.py +0 -3
- myokit/formats/cellml/__init__.py +0 -3
- myokit/formats/cellml/_ewriter.py +3 -6
- myokit/formats/cellml/_exporter.py +3 -6
- myokit/formats/cellml/_importer.py +1 -4
- myokit/formats/cellml/v1/__init__.py +0 -4
- myokit/formats/cellml/v1/_api.py +7 -10
- myokit/formats/cellml/v1/_parser.py +2 -5
- myokit/formats/cellml/v1/_writer.py +2 -11
- myokit/formats/cellml/v2/__init__.py +0 -3
- myokit/formats/cellml/v2/_api.py +7 -16
- myokit/formats/cellml/v2/_parser.py +2 -5
- myokit/formats/cellml/v2/_writer.py +1 -4
- myokit/formats/channelml/__init__.py +0 -3
- myokit/formats/channelml/_importer.py +4 -14
- myokit/formats/cpp/__init__.py +1 -3
- myokit/formats/cpp/_ewriter.py +0 -3
- myokit/formats/cuda/__init__.py +0 -3
- myokit/formats/cuda/_ewriter.py +2 -4
- myokit/formats/cuda/_exporter.py +0 -3
- myokit/formats/easyml/__init__.py +0 -3
- myokit/formats/easyml/_ewriter.py +9 -11
- myokit/formats/easyml/_exporter.py +0 -3
- myokit/formats/html/__init__.py +0 -3
- myokit/formats/html/_exporter.py +0 -3
- myokit/formats/html/_flatten.py +5 -21
- myokit/formats/latex/__init__.py +0 -3
- myokit/formats/latex/_ewriter.py +1 -4
- myokit/formats/latex/_exporter.py +3 -5
- myokit/formats/mathml/__init__.py +0 -3
- myokit/formats/mathml/_ewriter.py +2 -11
- myokit/formats/mathml/_parser.py +3 -5
- myokit/formats/matlab/__init__.py +0 -3
- myokit/formats/matlab/_ewriter.py +1 -4
- myokit/formats/matlab/_exporter.py +0 -3
- myokit/formats/opencl/__init__.py +0 -3
- myokit/formats/opencl/_ewriter.py +2 -4
- myokit/formats/opencl/_exporter.py +0 -3
- myokit/formats/python/__init__.py +0 -3
- myokit/formats/python/_ewriter.py +2 -5
- myokit/formats/python/_exporter.py +0 -3
- myokit/formats/python/template/sim.py +10 -10
- myokit/formats/sbml/__init__.py +0 -3
- myokit/formats/sbml/_api.py +17 -11
- myokit/formats/sbml/_importer.py +1 -4
- myokit/formats/sbml/_parser.py +2 -5
- myokit/formats/stan/__init__.py +0 -3
- myokit/formats/stan/_ewriter.py +2 -4
- myokit/formats/stan/_exporter.py +1 -4
- myokit/formats/sympy/__init__.py +0 -3
- myokit/formats/sympy/_ereader.py +1 -4
- myokit/formats/sympy/_ewriter.py +2 -5
- myokit/formats/wcp/__init__.py +0 -3
- myokit/formats/wcp/_wcp.py +1 -7
- myokit/formats/xml/__init__.py +0 -3
- myokit/formats/xml/_exporter.py +0 -3
- myokit/formats/xml/_split.py +0 -3
- myokit/gui/__init__.py +75 -247
- myokit/gui/datablock_viewer.py +100 -83
- myokit/gui/datalog_viewer.py +32 -44
- myokit/gui/explorer.py +15 -21
- myokit/gui/ide.py +105 -125
- myokit/gui/progress.py +9 -9
- myokit/gui/source.py +405 -374
- myokit/gui/vargrapher.py +2 -12
- myokit/lib/deps.py +7 -8
- myokit/lib/guess.py +1 -2
- myokit/lib/hh.py +5 -7
- myokit/lib/markov.py +9 -11
- myokit/lib/multi.py +1 -3
- myokit/lib/plots.py +1 -3
- myokit/pacing.py +0 -3
- myokit/pype.py +7 -18
- myokit/tests/__init__.py +3 -6
- myokit/tests/ansic_event_based_pacing.py +1 -4
- myokit/tests/ansic_fixed_form_pacing.py +1 -4
- myokit/tests/test_aux.py +9 -23
- myokit/tests/test_cellml_v1_api.py +1 -16
- myokit/tests/test_cellml_v1_parser.py +0 -15
- myokit/tests/test_cellml_v1_writer.py +0 -9
- myokit/tests/test_cellml_v2_api.py +1 -16
- myokit/tests/test_cellml_v2_parser.py +0 -15
- myokit/tests/test_cellml_v2_writer.py +0 -9
- myokit/tests/test_cmodel.py +0 -9
- myokit/tests/test_compiler_detection.py +1 -11
- myokit/tests/test_component.py +0 -10
- myokit/tests/test_config.py +33 -66
- myokit/tests/test_datablock.py +1 -9
- myokit/tests/test_datalog.py +4 -21
- myokit/tests/test_dependency_checking.py +8 -23
- myokit/tests/test_expressions.py +0 -9
- myokit/tests/test_float.py +1 -5
- myokit/tests/test_formats.py +0 -9
- myokit/tests/test_formats_axon.py +1 -9
- myokit/tests/test_formats_cellml.py +0 -15
- myokit/tests/test_formats_channelml.py +0 -15
- myokit/tests/test_formats_easyml.py +0 -14
- myokit/tests/test_formats_exporters.py +1 -16
- myokit/tests/test_formats_expression_writers.py +1 -17
- myokit/tests/test_formats_html.py +0 -3
- myokit/tests/test_formats_importers.py +1 -16
- myokit/tests/test_formats_mathml_content.py +0 -9
- myokit/tests/test_formats_mathml_presentation.py +0 -9
- myokit/tests/test_formats_opencl.py +0 -10
- myokit/tests/test_formats_sbml.py +0 -15
- myokit/tests/test_formats_sympy.py +0 -9
- myokit/tests/test_formats_wcp.py +1 -3
- myokit/tests/test_io.py +6 -14
- myokit/tests/test_jacobian_calculator.py +1 -9
- myokit/tests/test_jacobian_tracer.py +0 -9
- myokit/tests/test_lib_deps.py +0 -9
- myokit/tests/test_lib_guess.py +0 -9
- myokit/tests/test_lib_hh.py +1 -9
- myokit/tests/test_lib_markov.py +1 -9
- myokit/tests/test_lib_multi.py +0 -9
- myokit/tests/test_lib_plots.py +0 -3
- myokit/tests/test_meta.py +0 -3
- myokit/tests/test_model.py +0 -10
- myokit/tests/test_model_building.py +2 -17
- myokit/tests/test_opencl_info.py +5 -14
- myokit/tests/test_pacing_factory.py +0 -3
- myokit/tests/test_pacing_system_c.py +0 -9
- myokit/tests/test_pacing_system_py.py +0 -9
- myokit/tests/test_parsing.py +5 -20
- myokit/tests/test_progress_reporters.py +0 -3
- myokit/tests/test_protocol.py +0 -9
- myokit/tests/test_protocol_floating_point.py +0 -9
- myokit/tests/test_protocol_time_series.py +0 -10
- myokit/tests/test_pype.py +0 -9
- myokit/tests/test_quantity.py +0 -9
- myokit/tests/test_rhs_benchmarker.py +1 -9
- myokit/tests/test_sbml_api.py +0 -15
- myokit/tests/test_sbml_parser.py +0 -15
- myokit/tests/test_simulation_1d.py +1 -10
- myokit/tests/test_simulation_cvodes.py +8 -16
- myokit/tests/test_simulation_cvodes_from_disk.py +0 -3
- myokit/tests/test_simulation_fiber_tissue.py +1 -10
- myokit/tests/test_simulation_log_interval.py +0 -9
- myokit/tests/test_simulation_opencl.py +1 -10
- myokit/tests/test_simulation_opencl_log_interval.py +1 -3
- myokit/tests/test_simulation_opencl_vs_cvode.py +1 -10
- myokit/tests/test_simulation_opencl_vs_sim1d.py +1 -10
- myokit/tests/test_system_info.py +1 -11
- myokit/tests/test_tools.py +0 -9
- myokit/tests/test_unit.py +0 -9
- myokit/tests/test_user_functions.py +0 -10
- myokit/tests/test_variable.py +0 -10
- myokit/tools.py +5 -21
- myokit/units.py +0 -3
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/METADATA +7 -7
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/RECORD +198 -200
- myokit/_exec_new.py +0 -15
- myokit/_exec_old.py +0 -15
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/LICENSE.txt +0 -0
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/WHEEL +0 -0
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/entry_points.txt +0 -0
- {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/top_level.txt +0 -0
|
@@ -5,28 +5,18 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import unittest
|
|
12
9
|
|
|
13
10
|
import myokit
|
|
14
11
|
|
|
15
12
|
|
|
16
|
-
# Strings in Python2 and Python3
|
|
17
|
-
try:
|
|
18
|
-
basestring
|
|
19
|
-
except NameError: # pragma: no cover
|
|
20
|
-
basestring = str
|
|
21
|
-
|
|
22
|
-
|
|
23
13
|
class CompilerDetectionTest(unittest.TestCase):
|
|
24
14
|
"""
|
|
25
15
|
Tests the compiler detection.
|
|
26
16
|
"""
|
|
27
17
|
def test_compiler(self):
|
|
28
18
|
# Test the compiler detection.
|
|
29
|
-
self.assertIsInstance(myokit.Compiler.info(),
|
|
19
|
+
self.assertIsInstance(myokit.Compiler.info(), str)
|
|
30
20
|
|
|
31
21
|
|
|
32
22
|
if __name__ == '__main__':
|
myokit/tests/test_component.py
CHANGED
|
@@ -5,20 +5,10 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import myokit
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
14
11
|
|
|
15
|
-
# Unit testing in Python 2 and 3
|
|
16
|
-
try:
|
|
17
|
-
unittest.TestCase.assertRaisesRegex
|
|
18
|
-
except AttributeError:
|
|
19
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
20
|
-
|
|
21
|
-
|
|
22
12
|
class VarOwnerTest(unittest.TestCase):
|
|
23
13
|
"""
|
|
24
14
|
Tests parts of :class:`myokit.VarOwner`.
|
myokit/tests/test_config.py
CHANGED
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import sys
|
|
13
10
|
import unittest
|
|
@@ -16,7 +13,6 @@ import myokit
|
|
|
16
13
|
|
|
17
14
|
from myokit.tests import TemporaryDirectory, WarningCollector
|
|
18
15
|
|
|
19
|
-
|
|
20
16
|
debug = False
|
|
21
17
|
|
|
22
18
|
|
|
@@ -44,7 +40,7 @@ str=String value
|
|
|
44
40
|
"""
|
|
45
41
|
|
|
46
42
|
# Config with empty paths and spaces
|
|
47
|
-
|
|
43
|
+
config_paths = """
|
|
48
44
|
[sundials]
|
|
49
45
|
lib = five
|
|
50
46
|
inc = three;four;
|
|
@@ -53,16 +49,6 @@ lib = one;; two point five;three;
|
|
|
53
49
|
inc =
|
|
54
50
|
"""
|
|
55
51
|
|
|
56
|
-
# Config with empty paths and " ;", which in Python 2 is ignored
|
|
57
|
-
config_paths_2 = """
|
|
58
|
-
[sundials]
|
|
59
|
-
lib = five ; six
|
|
60
|
-
inc = three;four;
|
|
61
|
-
[opencl]
|
|
62
|
-
lib = one ;; two point five ;three;
|
|
63
|
-
inc =
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
52
|
|
|
67
53
|
class TestConfig(unittest.TestCase):
|
|
68
54
|
|
|
@@ -82,10 +68,10 @@ class TestConfig(unittest.TestCase):
|
|
|
82
68
|
cls._compat_no_fd_capture = myokit.COMPAT_NO_FD_CAPTURE
|
|
83
69
|
cls._date_format = myokit.DATE_FORMAT
|
|
84
70
|
cls._time_format = myokit.TIME_FORMAT
|
|
85
|
-
cls.
|
|
86
|
-
cls._force_pyside2 = myokit.FORCE_PYSIDE2
|
|
87
|
-
cls._force_pyqt4 = myokit.FORCE_PYQT4
|
|
71
|
+
cls._force_pyqt6 = myokit.FORCE_PYQT6
|
|
88
72
|
cls._force_pyqt5 = myokit.FORCE_PYQT5
|
|
73
|
+
cls._force_pyside6 = myokit.FORCE_PYSIDE6
|
|
74
|
+
cls._force_pyside2 = myokit.FORCE_PYSIDE2
|
|
89
75
|
cls._sundials_lib = myokit.SUNDIALS_LIB
|
|
90
76
|
cls._sundials_inc = myokit.SUNDIALS_INC
|
|
91
77
|
cls._opencl_lib = myokit.OPENCL_LIB
|
|
@@ -114,10 +100,10 @@ class TestConfig(unittest.TestCase):
|
|
|
114
100
|
myokit.COMPAT_NO_FD_CAPTURE = cls._compat_no_fd_capture
|
|
115
101
|
myokit.DATE_FORMAT = cls._date_format
|
|
116
102
|
myokit.TIME_FORMAT = cls._time_format
|
|
117
|
-
myokit.
|
|
118
|
-
myokit.FORCE_PYSIDE2 = cls._force_pyside2
|
|
119
|
-
myokit.FORCE_PYQT4 = cls._force_pyqt4
|
|
103
|
+
myokit.FORCE_PYQT6 = cls._force_pyqt6
|
|
120
104
|
myokit.FORCE_PYQT5 = cls._force_pyqt5
|
|
105
|
+
myokit.FORCE_PYSIDE6 = cls._force_pyside6
|
|
106
|
+
myokit.FORCE_PYSIDE2 = cls._force_pyside2
|
|
121
107
|
myokit.SUNDIALS_LIB = cls._sundials_lib
|
|
122
108
|
myokit.SUNDIALS_INC = cls._sundials_inc
|
|
123
109
|
myokit.OPENCL_LIB = cls._opencl_lib
|
|
@@ -131,10 +117,10 @@ class TestConfig(unittest.TestCase):
|
|
|
131
117
|
assert myokit.COMPAT_NO_FD_CAPTURE == cls._compat_no_fd_capture
|
|
132
118
|
assert myokit.DATE_FORMAT != 'TEST_DATE_FORMAT'
|
|
133
119
|
assert myokit.TIME_FORMAT != 'TEST_TIME_FORMAT'
|
|
134
|
-
assert myokit.
|
|
135
|
-
assert myokit.FORCE_PYSIDE2 == cls._force_pyside2
|
|
136
|
-
assert myokit.FORCE_PYQT4 == cls._force_pyqt4
|
|
120
|
+
assert myokit.FORCE_PYQT6 == cls._force_pyqt6
|
|
137
121
|
assert myokit.FORCE_PYQT5 == cls._force_pyqt5
|
|
122
|
+
assert myokit.FORCE_PYSIDE6 == cls._force_pyside6
|
|
123
|
+
assert myokit.FORCE_PYSIDE2 == cls._force_pyside2
|
|
138
124
|
assert myokit.SUNDIALS_LIB != ['one', 'two']
|
|
139
125
|
assert myokit.SUNDIALS_INC != ['three', 'four']
|
|
140
126
|
assert myokit.OPENCL_LIB != ['five', 'six']
|
|
@@ -168,17 +154,17 @@ class TestConfig(unittest.TestCase):
|
|
|
168
154
|
myokit.SUNDIALS_INC = []
|
|
169
155
|
myokit.OPENCL_LIB = []
|
|
170
156
|
myokit.OPENCL_INC = []
|
|
171
|
-
myokit.
|
|
172
|
-
myokit.
|
|
157
|
+
myokit.FORCE_PYSIDE6 = myokit.FORCE_PYSIDE2 = False
|
|
158
|
+
myokit.FORCE_PYQT6 = myokit.FORCE_PYQT5 = False
|
|
173
159
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
174
160
|
f.write(config_basic)
|
|
175
161
|
self._config_module._load()
|
|
176
162
|
self.assertEqual(myokit.DATE_FORMAT, 'TEST_DATE_FORMAT')
|
|
177
163
|
self.assertEqual(myokit.TIME_FORMAT, 'TEST_TIME_FORMAT')
|
|
178
|
-
self.assertFalse(myokit.
|
|
179
|
-
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
180
|
-
self.assertFalse(myokit.FORCE_PYQT4)
|
|
164
|
+
self.assertFalse(myokit.FORCE_PYQT6)
|
|
181
165
|
self.assertFalse(myokit.FORCE_PYQT5)
|
|
166
|
+
self.assertFalse(myokit.FORCE_PYSIDE6)
|
|
167
|
+
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
182
168
|
self.assertEqual(myokit.SUNDIALS_LIB, ['one', 'two'])
|
|
183
169
|
self.assertEqual(myokit.SUNDIALS_INC, ['three', 'four'])
|
|
184
170
|
self.assertEqual(myokit.OPENCL_LIB, ['five', 'six'])
|
|
@@ -205,7 +191,7 @@ class TestConfig(unittest.TestCase):
|
|
|
205
191
|
myokit.OPENCL_LIB = []
|
|
206
192
|
myokit.OPENCL_INC = []
|
|
207
193
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
208
|
-
f.write(
|
|
194
|
+
f.write(config_paths)
|
|
209
195
|
self._config_module._load()
|
|
210
196
|
self.assertEqual(myokit.SUNDIALS_LIB, ['five'])
|
|
211
197
|
self.assertEqual(myokit.SUNDIALS_INC, ['three', 'four'])
|
|
@@ -214,60 +200,41 @@ class TestConfig(unittest.TestCase):
|
|
|
214
200
|
['one', 'two point five', 'three'])
|
|
215
201
|
self.assertEqual(myokit.OPENCL_INC, [])
|
|
216
202
|
|
|
217
|
-
# Even if the list contains " ;", which Python 2's config parser treats
|
|
218
|
-
# as a comment
|
|
219
|
-
myokit.SUNDIALS_LIB = []
|
|
220
|
-
myokit.SUNDIALS_INC = []
|
|
221
|
-
myokit.OPENCL_LIB = []
|
|
222
|
-
myokit.OPENCL_INC = []
|
|
223
|
-
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
224
|
-
f.write(config_paths_2)
|
|
225
|
-
if sys.hexversion < 0x03020000:
|
|
226
|
-
self.assertRaises(ImportError, self._config_module._load)
|
|
227
|
-
else:
|
|
228
|
-
self._config_module._load()
|
|
229
|
-
self.assertEqual(myokit.SUNDIALS_LIB, ['five', 'six'])
|
|
230
|
-
self.assertEqual(myokit.SUNDIALS_INC, ['three', 'four'])
|
|
231
|
-
self.assertEqual(
|
|
232
|
-
myokit.OPENCL_LIB,
|
|
233
|
-
['one', 'two point five', 'three'])
|
|
234
|
-
self.assertEqual(myokit.OPENCL_INC, [])
|
|
235
|
-
|
|
236
203
|
def test_load_gui_backend(self):
|
|
237
204
|
# Tests setting the GUI back end
|
|
238
205
|
|
|
239
206
|
# Qt gui options
|
|
240
207
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
241
|
-
f.write('[gui]\nbackend=
|
|
208
|
+
f.write('[gui]\nbackend=pyqt6\n')
|
|
242
209
|
self._config_module._load()
|
|
243
|
-
self.
|
|
244
|
-
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
245
|
-
self.assertTrue(myokit.FORCE_PYQT4)
|
|
210
|
+
self.assertTrue(myokit.FORCE_PYQT6)
|
|
246
211
|
self.assertFalse(myokit.FORCE_PYQT5)
|
|
212
|
+
self.assertFalse(myokit.FORCE_PYSIDE6)
|
|
213
|
+
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
247
214
|
|
|
248
215
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
249
216
|
f.write('[gui]\nbackend=pyqt5\n')
|
|
250
217
|
self._config_module._load()
|
|
251
|
-
self.assertFalse(myokit.
|
|
252
|
-
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
253
|
-
self.assertFalse(myokit.FORCE_PYQT4)
|
|
218
|
+
self.assertFalse(myokit.FORCE_PYQT6)
|
|
254
219
|
self.assertTrue(myokit.FORCE_PYQT5)
|
|
220
|
+
self.assertFalse(myokit.FORCE_PYSIDE6)
|
|
221
|
+
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
255
222
|
|
|
256
223
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
257
|
-
f.write('[gui]\nbackend=
|
|
224
|
+
f.write('[gui]\nbackend=pyside6\n')
|
|
258
225
|
self._config_module._load()
|
|
259
|
-
self.
|
|
260
|
-
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
261
|
-
self.assertFalse(myokit.FORCE_PYQT4)
|
|
226
|
+
self.assertFalse(myokit.FORCE_PYQT6)
|
|
262
227
|
self.assertFalse(myokit.FORCE_PYQT5)
|
|
228
|
+
self.assertTrue(myokit.FORCE_PYSIDE6)
|
|
229
|
+
self.assertFalse(myokit.FORCE_PYSIDE2)
|
|
263
230
|
|
|
264
231
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
265
232
|
f.write('[gui]\nbackend=pyside2\n')
|
|
266
233
|
self._config_module._load()
|
|
267
|
-
self.assertFalse(myokit.
|
|
268
|
-
self.assertTrue(myokit.FORCE_PYSIDE2)
|
|
269
|
-
self.assertFalse(myokit.FORCE_PYQT4)
|
|
234
|
+
self.assertFalse(myokit.FORCE_PYQT6)
|
|
270
235
|
self.assertFalse(myokit.FORCE_PYQT5)
|
|
236
|
+
self.assertFalse(myokit.FORCE_PYSIDE6)
|
|
237
|
+
self.assertTrue(myokit.FORCE_PYSIDE2)
|
|
271
238
|
|
|
272
239
|
# Empty has no effect
|
|
273
240
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
|
@@ -275,10 +242,10 @@ class TestConfig(unittest.TestCase):
|
|
|
275
242
|
with WarningCollector() as c:
|
|
276
243
|
self._config_module._load()
|
|
277
244
|
self.assertEqual(c.text(), '')
|
|
278
|
-
self.assertFalse(myokit.
|
|
279
|
-
self.assertTrue(myokit.FORCE_PYSIDE2)
|
|
280
|
-
self.assertFalse(myokit.FORCE_PYQT4)
|
|
245
|
+
self.assertFalse(myokit.FORCE_PYQT6)
|
|
281
246
|
self.assertFalse(myokit.FORCE_PYQT5)
|
|
247
|
+
self.assertFalse(myokit.FORCE_PYSIDE6)
|
|
248
|
+
self.assertTrue(myokit.FORCE_PYSIDE2)
|
|
282
249
|
|
|
283
250
|
# Invalid raises warning
|
|
284
251
|
with open(self._temp_dir.path('myokit.ini'), 'w') as f:
|
myokit/tests/test_datablock.py
CHANGED
|
@@ -5,11 +5,9 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
10
|
+
|
|
13
11
|
import numpy as np
|
|
14
12
|
|
|
15
13
|
import myokit
|
|
@@ -23,12 +21,6 @@ from myokit.tests import (
|
|
|
23
21
|
WarningCollector,
|
|
24
22
|
)
|
|
25
23
|
|
|
26
|
-
# Unit testing in Python 2 and 3
|
|
27
|
-
try:
|
|
28
|
-
unittest.TestCase.assertRaisesRegex
|
|
29
|
-
except AttributeError:
|
|
30
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
31
|
-
|
|
32
24
|
|
|
33
25
|
class DataBlock1dTest(unittest.TestCase):
|
|
34
26
|
"""
|
myokit/tests/test_datalog.py
CHANGED
|
@@ -5,11 +5,9 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
10
|
+
|
|
13
11
|
import numpy as np
|
|
14
12
|
|
|
15
13
|
import myokit
|
|
@@ -23,21 +21,6 @@ from myokit.tests import (
|
|
|
23
21
|
WarningCollector,
|
|
24
22
|
)
|
|
25
23
|
|
|
26
|
-
# Unit testing in Python 2 and 3
|
|
27
|
-
try:
|
|
28
|
-
unittest.TestCase.assertRaisesRegex
|
|
29
|
-
except AttributeError:
|
|
30
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# Universal newline mode in Python 2 and 3
|
|
34
|
-
def uopen(filename):
|
|
35
|
-
try:
|
|
36
|
-
return open(filename, 'r', newline=None)
|
|
37
|
-
except TypeError:
|
|
38
|
-
return open(filename, 'U')
|
|
39
|
-
|
|
40
|
-
|
|
41
24
|
# Extra output
|
|
42
25
|
debug = False
|
|
43
26
|
|
|
@@ -1395,12 +1378,12 @@ class DataLogTest(unittest.TestCase):
|
|
|
1395
1378
|
with TemporaryDirectory() as td:
|
|
1396
1379
|
fname = td.path('test.csv')
|
|
1397
1380
|
d.save_csv(fname, order=['a.b', 'c.d', 'e.f'])
|
|
1398
|
-
with
|
|
1381
|
+
with open(fname, 'r', newline=None) as f:
|
|
1399
1382
|
header = f.readline()
|
|
1400
1383
|
self.assertEqual(header, '"a.b","c.d","e.f"\n')
|
|
1401
1384
|
|
|
1402
1385
|
d.save_csv(fname, order=['e.f', 'a.b', 'c.d'])
|
|
1403
|
-
with
|
|
1386
|
+
with open(fname, 'r', newline=None) as f:
|
|
1404
1387
|
header = f.readline()
|
|
1405
1388
|
self.assertEqual(header, '"e.f","a.b","c.d"\n')
|
|
1406
1389
|
|
|
@@ -1422,7 +1405,7 @@ class DataLogTest(unittest.TestCase):
|
|
|
1422
1405
|
with TemporaryDirectory() as td:
|
|
1423
1406
|
fname = td.path('test.csv')
|
|
1424
1407
|
d.save_csv(fname)
|
|
1425
|
-
with
|
|
1408
|
+
with open(fname, 'r', newline=None) as f:
|
|
1426
1409
|
order = [x[1:-1] for x in f.readline().strip().split(',')]
|
|
1427
1410
|
self.assertEqual(len(order), 9)
|
|
1428
1411
|
self.assertEqual(order[0], 'e.t')
|
|
@@ -6,9 +6,6 @@
|
|
|
6
6
|
# This file is part of Myokit.
|
|
7
7
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
8
8
|
#
|
|
9
|
-
from __future__ import absolute_import, division
|
|
10
|
-
from __future__ import print_function, unicode_literals
|
|
11
|
-
|
|
12
9
|
import os
|
|
13
10
|
import unittest
|
|
14
11
|
|
|
@@ -16,18 +13,6 @@ import myokit
|
|
|
16
13
|
|
|
17
14
|
from myokit.tests import DIR_DATA
|
|
18
15
|
|
|
19
|
-
# Unit testing in Python 2 and 3
|
|
20
|
-
try:
|
|
21
|
-
unittest.TestCase.assertRaisesRegex
|
|
22
|
-
except AttributeError:
|
|
23
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
24
|
-
|
|
25
|
-
# Strings in Python 2 and 3
|
|
26
|
-
try:
|
|
27
|
-
basestring
|
|
28
|
-
except NameError: # pragma: no cover
|
|
29
|
-
basestring = str
|
|
30
|
-
|
|
31
16
|
|
|
32
17
|
# Extra output
|
|
33
18
|
debug = False
|
|
@@ -55,7 +40,7 @@ class DepTest(unittest.TestCase):
|
|
|
55
40
|
"""
|
|
56
41
|
# If a string lhs is given, interpret it as a variable name and get
|
|
57
42
|
# the lhs of its defining equation
|
|
58
|
-
if isinstance(key,
|
|
43
|
+
if isinstance(key, str):
|
|
59
44
|
key = self.m.get(key)
|
|
60
45
|
if isinstance(key, myokit.Variable):
|
|
61
46
|
key = key.lhs()
|
|
@@ -64,7 +49,7 @@ class DepTest(unittest.TestCase):
|
|
|
64
49
|
# convert it to a Name. Ensure no duplicates are given.
|
|
65
50
|
deps = list(set(deps))
|
|
66
51
|
for k, dep in enumerate(deps):
|
|
67
|
-
if isinstance(dep,
|
|
52
|
+
if isinstance(dep, str):
|
|
68
53
|
deps[k] = self.n(dep)
|
|
69
54
|
|
|
70
55
|
# Get dep map
|
|
@@ -449,7 +434,7 @@ class DeepDepTest(DepTest):
|
|
|
449
434
|
return self.has_lhs(depmap, lhs, *deps)
|
|
450
435
|
|
|
451
436
|
def nhas(lhs):
|
|
452
|
-
if isinstance(lhs,
|
|
437
|
+
if isinstance(lhs, str):
|
|
453
438
|
lhs = self.m.get(lhs).lhs()
|
|
454
439
|
self.assertNotIn(lhs, depmap)
|
|
455
440
|
|
|
@@ -594,7 +579,7 @@ class DeepDepTest(DepTest):
|
|
|
594
579
|
return self.has_lhs(depmap, lhs, *deps)
|
|
595
580
|
|
|
596
581
|
def nhas(lhs):
|
|
597
|
-
if isinstance(lhs,
|
|
582
|
+
if isinstance(lhs, str):
|
|
598
583
|
lhs = self.m.get(lhs).lhs()
|
|
599
584
|
self.assertNotIn(lhs, depmap)
|
|
600
585
|
|
|
@@ -1360,10 +1345,10 @@ class SolvableOrderTest(DepTest):
|
|
|
1360
1345
|
|
|
1361
1346
|
def before(lhs1, *lhs2s):
|
|
1362
1347
|
""" Asserts lhs1 comes before lhs2 in the current component """
|
|
1363
|
-
if isinstance(lhs1,
|
|
1348
|
+
if isinstance(lhs1, str):
|
|
1364
1349
|
lhs1 = self.m.get(self.ccomp + '.' + lhs1).lhs()
|
|
1365
1350
|
for lhs2 in lhs2s:
|
|
1366
|
-
if isinstance(lhs2,
|
|
1351
|
+
if isinstance(lhs2, str):
|
|
1367
1352
|
lhs2 = self.m.get(self.ccomp + '.' + lhs2).lhs()
|
|
1368
1353
|
i1 = i2 = None
|
|
1369
1354
|
for i, eq in enumerate(self.order[self.ccomp]):
|
|
@@ -1508,14 +1493,14 @@ class SolvableOrderTest(DepTest):
|
|
|
1508
1493
|
|
|
1509
1494
|
def before(lhs1, *lhs2s):
|
|
1510
1495
|
""" Asserts lhs2 comes before lhs1 """
|
|
1511
|
-
if isinstance(lhs1,
|
|
1496
|
+
if isinstance(lhs1, str):
|
|
1512
1497
|
if lhs1.startswith('dot('):
|
|
1513
1498
|
lhs1 = myokit.Derivative(myokit.Name(
|
|
1514
1499
|
self.m.get(lhs1[4:-1])))
|
|
1515
1500
|
else:
|
|
1516
1501
|
lhs1 = myokit.Name(self.m.get(lhs1))
|
|
1517
1502
|
for lhs2 in lhs2s:
|
|
1518
|
-
if isinstance(lhs2,
|
|
1503
|
+
if isinstance(lhs2, str):
|
|
1519
1504
|
if lhs2.startswith('dot('):
|
|
1520
1505
|
lhs2 = myokit.Derivative(myokit.Name(
|
|
1521
1506
|
self.m.get(lhs2[4:-1])))
|
myokit/tests/test_expressions.py
CHANGED
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import pickle
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
@@ -15,12 +12,6 @@ import numpy as np
|
|
|
15
12
|
|
|
16
13
|
import myokit
|
|
17
14
|
|
|
18
|
-
# Unit testing in Python 2 and 3
|
|
19
|
-
try:
|
|
20
|
-
unittest.TestCase.assertRaisesRegex
|
|
21
|
-
except AttributeError:
|
|
22
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
23
|
-
|
|
24
15
|
|
|
25
16
|
# Unit --> See test_units.py
|
|
26
17
|
# Quantity --> See test_units.py
|
myokit/tests/test_float.py
CHANGED
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import sys
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
@@ -91,8 +88,7 @@ class FloatTest(unittest.TestCase):
|
|
|
91
88
|
# Test float to string conversion.
|
|
92
89
|
|
|
93
90
|
# String should be passed through
|
|
94
|
-
|
|
95
|
-
self.assertEqual(myokit.float.str(str('123')), '123')
|
|
91
|
+
self.assertEqual(myokit.float.str('123'), '123')
|
|
96
92
|
|
|
97
93
|
# Simple numbers
|
|
98
94
|
self.assertEqual(myokit.float.str(0), '0')
|
myokit/tests/test_formats.py
CHANGED
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import unittest
|
|
12
9
|
|
|
13
10
|
import myokit
|
|
@@ -15,12 +12,6 @@ import myokit.formats
|
|
|
15
12
|
|
|
16
13
|
from myokit.tests import TemporaryDirectory
|
|
17
14
|
|
|
18
|
-
# Unit testing in Python 2 and 3
|
|
19
|
-
try:
|
|
20
|
-
unittest.TestCase.assertRaisesRegex
|
|
21
|
-
except AttributeError:
|
|
22
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
23
|
-
|
|
24
15
|
|
|
25
16
|
class FormatsTest(unittest.TestCase):
|
|
26
17
|
"""
|
|
@@ -5,11 +5,9 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
10
|
+
|
|
13
11
|
import numpy as np
|
|
14
12
|
|
|
15
13
|
import myokit
|
|
@@ -17,12 +15,6 @@ import myokit.formats.axon as axon
|
|
|
17
15
|
|
|
18
16
|
from myokit.tests import TemporaryDirectory, DIR_FORMATS
|
|
19
17
|
|
|
20
|
-
# Unit testing in Python 2 and 3
|
|
21
|
-
try:
|
|
22
|
-
unittest.TestCase.assertRaisesRegex
|
|
23
|
-
except AttributeError:
|
|
24
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
25
|
-
|
|
26
18
|
|
|
27
19
|
class AbfTest(unittest.TestCase):
|
|
28
20
|
"""
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import re
|
|
13
10
|
import unittest
|
|
@@ -23,18 +20,6 @@ from myokit.tests import TemporaryDirectory, DIR_FORMATS, WarningCollector
|
|
|
23
20
|
# CellML dir
|
|
24
21
|
DIR = os.path.join(DIR_FORMATS, 'cellml')
|
|
25
22
|
|
|
26
|
-
# Unit testing in Python 2 and 3
|
|
27
|
-
try:
|
|
28
|
-
unittest.TestCase.assertRaisesRegex
|
|
29
|
-
except AttributeError:
|
|
30
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
31
|
-
|
|
32
|
-
# Strings in Python 2 and 3
|
|
33
|
-
try:
|
|
34
|
-
basestring
|
|
35
|
-
except NameError: # pragma: no python 2 cover
|
|
36
|
-
basestring = str
|
|
37
|
-
|
|
38
23
|
|
|
39
24
|
class CellMLExporterTest(unittest.TestCase):
|
|
40
25
|
"""
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
@@ -20,18 +17,6 @@ from myokit.tests import DIR_FORMATS, WarningCollector
|
|
|
20
17
|
# ChannelML dir
|
|
21
18
|
DIR = os.path.join(DIR_FORMATS, 'channelml')
|
|
22
19
|
|
|
23
|
-
# Unit testing in Python 2 and 3
|
|
24
|
-
try:
|
|
25
|
-
unittest.TestCase.assertRaisesRegex
|
|
26
|
-
except AttributeError: # pragma: no python 3 cover
|
|
27
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
28
|
-
|
|
29
|
-
# Strings in Python 2 and 3
|
|
30
|
-
try:
|
|
31
|
-
basestring
|
|
32
|
-
except NameError: # pragma: no python 2 cover
|
|
33
|
-
basestring = str
|
|
34
|
-
|
|
35
20
|
|
|
36
21
|
class ChannelMLTest(unittest.TestCase):
|
|
37
22
|
""" Test ChannelML importing. """
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
@@ -17,17 +14,6 @@ import myokit.formats.easyml
|
|
|
17
14
|
|
|
18
15
|
from myokit.tests import TemporaryDirectory, WarningCollector, DIR_DATA
|
|
19
16
|
|
|
20
|
-
# Unit testing in Python 2 and 3
|
|
21
|
-
try:
|
|
22
|
-
unittest.TestCase.assertRaisesRegex
|
|
23
|
-
except AttributeError: # pragma: no python 3 cover
|
|
24
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
25
|
-
|
|
26
|
-
# Strings in Python 2 and 3
|
|
27
|
-
try:
|
|
28
|
-
basestring
|
|
29
|
-
except NameError: # pragma: no python 2 cover
|
|
30
|
-
basestring = str
|
|
31
17
|
|
|
32
18
|
# Model that requires unit conversion
|
|
33
19
|
units_model = """
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import os
|
|
12
9
|
import unittest
|
|
13
10
|
|
|
@@ -16,18 +13,6 @@ import myokit.formats
|
|
|
16
13
|
|
|
17
14
|
from myokit.tests import TemporaryDirectory
|
|
18
15
|
|
|
19
|
-
# Unit testing in Python 2 and 3
|
|
20
|
-
try:
|
|
21
|
-
unittest.TestCase.assertRaisesRegex
|
|
22
|
-
except AttributeError: # pragma: no python 3 cover
|
|
23
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
24
|
-
|
|
25
|
-
# Strings in Python 2 and 3
|
|
26
|
-
try:
|
|
27
|
-
basestring
|
|
28
|
-
except NameError: # pragma: no python 2 cover
|
|
29
|
-
basestring = str
|
|
30
|
-
|
|
31
16
|
|
|
32
17
|
class ExportTest(unittest.TestCase):
|
|
33
18
|
"""
|
|
@@ -38,7 +23,7 @@ class ExportTest(unittest.TestCase):
|
|
|
38
23
|
""" Test a given exporter `e`. """
|
|
39
24
|
|
|
40
25
|
# Test info method.
|
|
41
|
-
self.assertIsInstance(e.post_export_info(),
|
|
26
|
+
self.assertIsInstance(e.post_export_info(), str)
|
|
42
27
|
|
|
43
28
|
# Load model, protocol
|
|
44
29
|
m, p = model, protocol
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
# This file is part of Myokit.
|
|
6
6
|
# See http://myokit.org for copyright, sharing, and licensing details.
|
|
7
7
|
#
|
|
8
|
-
from __future__ import absolute_import, division
|
|
9
|
-
from __future__ import print_function, unicode_literals
|
|
10
|
-
|
|
11
8
|
import unittest
|
|
12
9
|
|
|
13
10
|
import myokit
|
|
@@ -20,19 +17,6 @@ import myokit.formats.python
|
|
|
20
17
|
import myokit.formats.stan
|
|
21
18
|
|
|
22
19
|
|
|
23
|
-
# Unit testing in Python 2 and 3
|
|
24
|
-
try:
|
|
25
|
-
unittest.TestCase.assertRaisesRegex
|
|
26
|
-
except AttributeError: # pragma: no python 3 cover
|
|
27
|
-
unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
|
|
28
|
-
|
|
29
|
-
# Strings in Python 2 and 3
|
|
30
|
-
try:
|
|
31
|
-
basestring
|
|
32
|
-
except NameError: # pragma: no python 2 cover
|
|
33
|
-
basestring = str
|
|
34
|
-
|
|
35
|
-
|
|
36
20
|
class ExpressionWriterTest(unittest.TestCase):
|
|
37
21
|
""" Test shared expression writer functionality. """
|
|
38
22
|
|
|
@@ -45,7 +29,7 @@ class ExpressionWriterTest(unittest.TestCase):
|
|
|
45
29
|
|
|
46
30
|
# Create one of each
|
|
47
31
|
for e in es:
|
|
48
|
-
self.assertIsInstance(e,
|
|
32
|
+
self.assertIsInstance(e, str)
|
|
49
33
|
e = myokit.formats.ewriter(e)
|
|
50
34
|
self.assertTrue(isinstance(e, myokit.formats.ExpressionWriter))
|
|
51
35
|
|