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.
Files changed (200) hide show
  1. myokit/__init__.py +5 -23
  2. myokit/__main__.py +70 -117
  3. myokit/_aux.py +5 -8
  4. myokit/_config.py +22 -31
  5. myokit/_datablock.py +26 -70
  6. myokit/_datalog.py +23 -53
  7. myokit/_err.py +13 -15
  8. myokit/_expressions.py +35 -55
  9. myokit/_io.py +5 -22
  10. myokit/_model_api.py +34 -47
  11. myokit/_myokit_version.py +1 -5
  12. myokit/_parsing.py +17 -25
  13. myokit/_progress.py +4 -7
  14. myokit/_protocol.py +6 -9
  15. myokit/_sim/__init__.py +7 -24
  16. myokit/_sim/cable.c +1 -3
  17. myokit/_sim/cable.py +3 -5
  18. myokit/_sim/cmodel.h +1 -3
  19. myokit/_sim/cmodel.py +1 -4
  20. myokit/_sim/compiler.py +1 -4
  21. myokit/_sim/cvodessim.c +1 -4
  22. myokit/_sim/cvodessim.py +1 -4
  23. myokit/_sim/fiber_tissue.c +2 -6
  24. myokit/_sim/fiber_tissue.py +3 -5
  25. myokit/_sim/jacobian.py +6 -7
  26. myokit/_sim/mcl.h +51 -53
  27. myokit/_sim/opencl.py +9 -22
  28. myokit/_sim/openclsim.c +2 -6
  29. myokit/_sim/openclsim.py +6 -6
  30. myokit/_sim/pacing.h +2 -6
  31. myokit/_sim/rhs.c +3 -10
  32. myokit/_sim/rhs.py +4 -13
  33. myokit/_sim/sundials.py +1 -4
  34. myokit/_system.py +10 -16
  35. myokit/_unit.py +3 -12
  36. myokit/float.py +0 -3
  37. myokit/formats/__init__.py +8 -10
  38. myokit/formats/ansic/__init__.py +0 -3
  39. myokit/formats/ansic/_ewriter.py +2 -4
  40. myokit/formats/ansic/_exporter.py +0 -3
  41. myokit/formats/axon/__init__.py +1 -3
  42. myokit/formats/axon/_abf.py +12 -15
  43. myokit/formats/axon/_atf.py +5 -6
  44. myokit/formats/axon/_importer.py +0 -3
  45. myokit/formats/cellml/__init__.py +0 -3
  46. myokit/formats/cellml/_ewriter.py +3 -6
  47. myokit/formats/cellml/_exporter.py +3 -6
  48. myokit/formats/cellml/_importer.py +1 -4
  49. myokit/formats/cellml/v1/__init__.py +0 -4
  50. myokit/formats/cellml/v1/_api.py +7 -10
  51. myokit/formats/cellml/v1/_parser.py +2 -5
  52. myokit/formats/cellml/v1/_writer.py +2 -11
  53. myokit/formats/cellml/v2/__init__.py +0 -3
  54. myokit/formats/cellml/v2/_api.py +7 -16
  55. myokit/formats/cellml/v2/_parser.py +2 -5
  56. myokit/formats/cellml/v2/_writer.py +1 -4
  57. myokit/formats/channelml/__init__.py +0 -3
  58. myokit/formats/channelml/_importer.py +4 -14
  59. myokit/formats/cpp/__init__.py +1 -3
  60. myokit/formats/cpp/_ewriter.py +0 -3
  61. myokit/formats/cuda/__init__.py +0 -3
  62. myokit/formats/cuda/_ewriter.py +2 -4
  63. myokit/formats/cuda/_exporter.py +0 -3
  64. myokit/formats/easyml/__init__.py +0 -3
  65. myokit/formats/easyml/_ewriter.py +9 -11
  66. myokit/formats/easyml/_exporter.py +0 -3
  67. myokit/formats/html/__init__.py +0 -3
  68. myokit/formats/html/_exporter.py +0 -3
  69. myokit/formats/html/_flatten.py +5 -21
  70. myokit/formats/latex/__init__.py +0 -3
  71. myokit/formats/latex/_ewriter.py +1 -4
  72. myokit/formats/latex/_exporter.py +3 -5
  73. myokit/formats/mathml/__init__.py +0 -3
  74. myokit/formats/mathml/_ewriter.py +2 -11
  75. myokit/formats/mathml/_parser.py +3 -5
  76. myokit/formats/matlab/__init__.py +0 -3
  77. myokit/formats/matlab/_ewriter.py +1 -4
  78. myokit/formats/matlab/_exporter.py +0 -3
  79. myokit/formats/opencl/__init__.py +0 -3
  80. myokit/formats/opencl/_ewriter.py +2 -4
  81. myokit/formats/opencl/_exporter.py +0 -3
  82. myokit/formats/python/__init__.py +0 -3
  83. myokit/formats/python/_ewriter.py +2 -5
  84. myokit/formats/python/_exporter.py +0 -3
  85. myokit/formats/python/template/sim.py +10 -10
  86. myokit/formats/sbml/__init__.py +0 -3
  87. myokit/formats/sbml/_api.py +17 -11
  88. myokit/formats/sbml/_importer.py +1 -4
  89. myokit/formats/sbml/_parser.py +2 -5
  90. myokit/formats/stan/__init__.py +0 -3
  91. myokit/formats/stan/_ewriter.py +2 -4
  92. myokit/formats/stan/_exporter.py +1 -4
  93. myokit/formats/sympy/__init__.py +0 -3
  94. myokit/formats/sympy/_ereader.py +1 -4
  95. myokit/formats/sympy/_ewriter.py +2 -5
  96. myokit/formats/wcp/__init__.py +0 -3
  97. myokit/formats/wcp/_wcp.py +1 -7
  98. myokit/formats/xml/__init__.py +0 -3
  99. myokit/formats/xml/_exporter.py +0 -3
  100. myokit/formats/xml/_split.py +0 -3
  101. myokit/gui/__init__.py +75 -247
  102. myokit/gui/datablock_viewer.py +100 -83
  103. myokit/gui/datalog_viewer.py +32 -44
  104. myokit/gui/explorer.py +15 -21
  105. myokit/gui/ide.py +105 -125
  106. myokit/gui/progress.py +9 -9
  107. myokit/gui/source.py +405 -374
  108. myokit/gui/vargrapher.py +2 -12
  109. myokit/lib/deps.py +7 -8
  110. myokit/lib/guess.py +1 -2
  111. myokit/lib/hh.py +5 -7
  112. myokit/lib/markov.py +9 -11
  113. myokit/lib/multi.py +1 -3
  114. myokit/lib/plots.py +1 -3
  115. myokit/pacing.py +0 -3
  116. myokit/pype.py +7 -18
  117. myokit/tests/__init__.py +3 -6
  118. myokit/tests/ansic_event_based_pacing.py +1 -4
  119. myokit/tests/ansic_fixed_form_pacing.py +1 -4
  120. myokit/tests/test_aux.py +9 -23
  121. myokit/tests/test_cellml_v1_api.py +1 -16
  122. myokit/tests/test_cellml_v1_parser.py +0 -15
  123. myokit/tests/test_cellml_v1_writer.py +0 -9
  124. myokit/tests/test_cellml_v2_api.py +1 -16
  125. myokit/tests/test_cellml_v2_parser.py +0 -15
  126. myokit/tests/test_cellml_v2_writer.py +0 -9
  127. myokit/tests/test_cmodel.py +0 -9
  128. myokit/tests/test_compiler_detection.py +1 -11
  129. myokit/tests/test_component.py +0 -10
  130. myokit/tests/test_config.py +33 -66
  131. myokit/tests/test_datablock.py +1 -9
  132. myokit/tests/test_datalog.py +4 -21
  133. myokit/tests/test_dependency_checking.py +8 -23
  134. myokit/tests/test_expressions.py +0 -9
  135. myokit/tests/test_float.py +1 -5
  136. myokit/tests/test_formats.py +0 -9
  137. myokit/tests/test_formats_axon.py +1 -9
  138. myokit/tests/test_formats_cellml.py +0 -15
  139. myokit/tests/test_formats_channelml.py +0 -15
  140. myokit/tests/test_formats_easyml.py +0 -14
  141. myokit/tests/test_formats_exporters.py +1 -16
  142. myokit/tests/test_formats_expression_writers.py +1 -17
  143. myokit/tests/test_formats_html.py +0 -3
  144. myokit/tests/test_formats_importers.py +1 -16
  145. myokit/tests/test_formats_mathml_content.py +0 -9
  146. myokit/tests/test_formats_mathml_presentation.py +0 -9
  147. myokit/tests/test_formats_opencl.py +0 -10
  148. myokit/tests/test_formats_sbml.py +0 -15
  149. myokit/tests/test_formats_sympy.py +0 -9
  150. myokit/tests/test_formats_wcp.py +1 -3
  151. myokit/tests/test_io.py +6 -14
  152. myokit/tests/test_jacobian_calculator.py +1 -9
  153. myokit/tests/test_jacobian_tracer.py +0 -9
  154. myokit/tests/test_lib_deps.py +0 -9
  155. myokit/tests/test_lib_guess.py +0 -9
  156. myokit/tests/test_lib_hh.py +1 -9
  157. myokit/tests/test_lib_markov.py +1 -9
  158. myokit/tests/test_lib_multi.py +0 -9
  159. myokit/tests/test_lib_plots.py +0 -3
  160. myokit/tests/test_meta.py +0 -3
  161. myokit/tests/test_model.py +0 -10
  162. myokit/tests/test_model_building.py +2 -17
  163. myokit/tests/test_opencl_info.py +5 -14
  164. myokit/tests/test_pacing_factory.py +0 -3
  165. myokit/tests/test_pacing_system_c.py +0 -9
  166. myokit/tests/test_pacing_system_py.py +0 -9
  167. myokit/tests/test_parsing.py +5 -20
  168. myokit/tests/test_progress_reporters.py +0 -3
  169. myokit/tests/test_protocol.py +0 -9
  170. myokit/tests/test_protocol_floating_point.py +0 -9
  171. myokit/tests/test_protocol_time_series.py +0 -10
  172. myokit/tests/test_pype.py +0 -9
  173. myokit/tests/test_quantity.py +0 -9
  174. myokit/tests/test_rhs_benchmarker.py +1 -9
  175. myokit/tests/test_sbml_api.py +0 -15
  176. myokit/tests/test_sbml_parser.py +0 -15
  177. myokit/tests/test_simulation_1d.py +1 -10
  178. myokit/tests/test_simulation_cvodes.py +8 -16
  179. myokit/tests/test_simulation_cvodes_from_disk.py +0 -3
  180. myokit/tests/test_simulation_fiber_tissue.py +1 -10
  181. myokit/tests/test_simulation_log_interval.py +0 -9
  182. myokit/tests/test_simulation_opencl.py +1 -10
  183. myokit/tests/test_simulation_opencl_log_interval.py +1 -3
  184. myokit/tests/test_simulation_opencl_vs_cvode.py +1 -10
  185. myokit/tests/test_simulation_opencl_vs_sim1d.py +1 -10
  186. myokit/tests/test_system_info.py +1 -11
  187. myokit/tests/test_tools.py +0 -9
  188. myokit/tests/test_unit.py +0 -9
  189. myokit/tests/test_user_functions.py +0 -10
  190. myokit/tests/test_variable.py +0 -10
  191. myokit/tools.py +5 -21
  192. myokit/units.py +0 -3
  193. {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/METADATA +7 -7
  194. {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/RECORD +198 -200
  195. myokit/_exec_new.py +0 -15
  196. myokit/_exec_old.py +0 -15
  197. {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/LICENSE.txt +0 -0
  198. {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/WHEEL +0 -0
  199. {myokit-1.34.0.dist-info → myokit-1.35.0.dist-info}/entry_points.txt +0 -0
  200. {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(), basestring)
19
+ self.assertIsInstance(myokit.Compiler.info(), str)
30
20
 
31
21
 
32
22
  if __name__ == '__main__':
@@ -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`.
@@ -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
- config_paths_1 = """
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._force_pyside = myokit.FORCE_PYSIDE
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.FORCE_PYSIDE = cls._force_pyside
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.FORCE_PYSIDE == cls._force_pyside
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.FORCE_PYSIDE = myokit.FORCE_PYSIDE2 = False
172
- myokit.FORCE_PYQT4 = myokit.FORCE_PYQT5 = False
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.FORCE_PYSIDE)
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(config_paths_1)
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=pyqt4\n')
208
+ f.write('[gui]\nbackend=pyqt6\n')
242
209
  self._config_module._load()
243
- self.assertFalse(myokit.FORCE_PYSIDE)
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.FORCE_PYSIDE)
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=pyside\n')
224
+ f.write('[gui]\nbackend=pyside6\n')
258
225
  self._config_module._load()
259
- self.assertTrue(myokit.FORCE_PYSIDE)
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.FORCE_PYSIDE)
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.FORCE_PYSIDE)
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:
@@ -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
  """
@@ -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 uopen(fname) as f:
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 uopen(fname) as f:
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 uopen(fname) as f:
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, basestring):
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, basestring):
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, basestring):
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, basestring):
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, basestring):
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, basestring):
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, basestring):
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, basestring):
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])))
@@ -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
@@ -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
- # Note: convert to str() to test in python 2 and 3.
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')
@@ -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(), basestring)
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, basestring)
32
+ self.assertIsInstance(e, str)
49
33
  e = myokit.formats.ewriter(e)
50
34
  self.assertTrue(isinstance(e, myokit.formats.ExpressionWriter))
51
35