Skip to content

Commit 3f1c63d

Browse files
authored
Merge pull request #35 from ISISComputingGroup/Ticket4896_convert_to_python_3
Ticket 4896: Convert to Python 3
2 parents 167625e + e8f4349 commit 3f1c63d

21 files changed

+134
-64
lines changed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ pipeline {
5353
goto ERROR
5454
)
5555
56-
C:/Instrument/Apps/Python/python.exe run_tests.py || echo "running tests failed."
56+
C:/Instrument/Apps/Python3/python.exe run_tests.py || echo "running tests failed."
5757
"""
5858
}
5959
}

block.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717
Classes for Blocks
1818
"""
1919

20+
from builtins import object
2021
from block_utils import format_block_value
2122

2223

23-
class Block:
24+
class Block(object):
2425
"""
2526
Class holding Block details. Used for displaying in dataweb
2627
"""

block_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def format_block_value(val, precision):
8686
assert small_number_threshold < big_number_threshold
8787

8888
# No precision specified = do not format.
89-
if precision is None or precision < 0:
89+
if precision is None or not isinstance(precision, int) or precision < 0:
9090
return u"{}".format(val)
9191
try:
9292
float_val = float(val)

external_webpage/data_source_reader.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ def read_config(self):
101101
"""
102102

103103
# read config
104-
page = requests.get('http://%s:%s/' % (self._host, PORT_CONFIG))
105-
corrected_page = page.content\
106-
.replace("'", '"')\
104+
page = requests.get('http://{}:{}/'.format(self._host, PORT_CONFIG))
105+
content = page.content.decode("utf-8")
106+
corrected_page = content.replace("'", '"')\
107107
.replace("None", "null")\
108108
.replace("True", "true")\
109109
.replace("False", "false")

external_webpage/instrument_information_collator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
Classes getting external resources from an instrument and formating them for the info page.
1818
"""
1919

20+
from builtins import str
21+
from builtins import object
2022
import logging
2123

2224
from block_utils import (format_blocks, set_rc_values_for_blocks)
@@ -87,7 +89,7 @@ def block_is_visible(self, block_name):
8789
return True
8890

8991

90-
class InstrumentInformationCollator:
92+
class InstrumentInformationCollator(object):
9193
"""
9294
Collect instrument information and summarise as a dictionary.
9395
"""

external_webpage/instrument_scapper.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from builtins import str
2+
from builtins import range
13
import logging
24
import traceback
35
from threading import Thread, Event, RLock

external_webpage/request_handler_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from builtins import str
12
import re
23
from collections import OrderedDict
34

external_webpage/web_page_parser.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
Classes for parsing web pages
1818
"""
1919

20+
from builtins import str
21+
from builtins import object
2022
import logging
2123

2224
import re
@@ -90,9 +92,9 @@ def _create_block_from_channel(self, channel):
9092
if connected:
9193
units = current_value.get("Units", "")
9294

93-
precision = unicode(current_value.get("Precision", ""))
95+
precision = str(current_value.get("Precision", ""))
9496

95-
value = unicode(current_value["Value"])
97+
value = str(current_value["Value"])
9698

9799
replaced = True
98100
while replaced:

external_webpage/web_scrapper_manager.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
"""
22
Relation to web scrapper management.
33
"""
4+
from __future__ import print_function
5+
from builtins import range
6+
from builtins import object
47
import json
58
import logging
69
import zlib
@@ -190,7 +193,7 @@ def _is_scrapper_in_inst_list(self, inst_list, scrapper):
190193
Returns: True if in; False otherwise
191194
192195
"""
193-
for name, host in inst_list.items():
196+
for name, host in list(inst_list.items()):
194197
if scrapper.is_instrument(name, host):
195198
return True
196199
return False
@@ -204,7 +207,7 @@ def _scrapper_to_start(self, instruments):
204207
Returns:
205208
206209
"""
207-
for name, host in instruments.items():
210+
for name, host in list(instruments.items()):
208211
for scrapper in self.scrappers:
209212
if scrapper.is_instrument(name, host):
210213
break

run_tests.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import print_function
12
# This file is part of the ISIS IBEX application.
23
# Copyright (C) 2017 Science & Technology Facilities Council.
34
# All rights reserved.
@@ -37,10 +38,10 @@
3738
test_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "tests"))
3839
test_suite = unittest.TestLoader().discover(test_dir, pattern="test_*.py")
3940

40-
print "\n\n------ BEGINNING JSON Bourne UNIT TESTS ------"
41+
print("\n\n------ BEGINNING JSON Bourne UNIT TESTS ------")
4142
ret_vals = list()
4243
ret_vals.append(xmlrunner.XMLTestRunner(output=xml_dir).run(test_suite))
43-
print "------ UNIT TESTS COMPLETE ------\n\n"
44+
print("------ UNIT TESTS COMPLETE ------\n\n")
4445

4546
# Return failure exit code if a test failed
4647
sys.exit(False in ret_vals)

tests/data_mother.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from builtins import object
12
class ArchiveMother(object):
23
"""
34
Data mother for JSON objects.
@@ -50,7 +51,7 @@ def create_channel(name=None, is_connected=True, value=u"0.000", alarm=u"", unit
5051
u'State': True}
5152

5253

53-
class ConfigMother():
54+
class ConfigMother(object):
5455

5556
@staticmethod
5657
def create_config(name="conf", blocks=None, groups=None):

tests/test_block_utils.py

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python
22
# -*- coding: utf-8 -*-
33

4+
from builtins import str
45
import os
56
import sys
67

@@ -114,7 +115,7 @@ def test_format_blocks_with_empty_dict(self):
114115
formatted_blocks = format_blocks(test_blocks)
115116

116117
#Assert
117-
self.assertEquals(formatted_blocks, expected_result)
118+
self.assertEqual(formatted_blocks, expected_result)
118119

119120
def test_GIVEN_dict_of_ordered_blocks_WHEN_formatted_blocks_called_THEN_return_same_block_order(self):
120121
#Arrange
@@ -130,7 +131,7 @@ def test_GIVEN_dict_of_ordered_blocks_WHEN_formatted_blocks_called_THEN_return_s
130131
formatted_blocks = format_blocks(test_blocks)
131132

132133
#Assert
133-
self.assertListEqual(expected_order_blocks.keys(), formatted_blocks.keys())
134+
self.assertSequenceEqual(expected_order_blocks.keys(), formatted_blocks.keys())
134135

135136

136137
def test_shorten_title_for_default_case(self):
@@ -141,7 +142,7 @@ def test_shorten_title_for_default_case(self):
141142
shortened_title = shorten_title(test_pv)
142143

143144
#Assert
144-
self.assertEquals(shortened_title, "COUNTRATE.VAL")
145+
self.assertEqual(shortened_title, "COUNTRATE.VAL")
145146

146147
def test_shorten_title_with_rc_in_range(self):
147148
#Arrange
@@ -151,7 +152,7 @@ def test_shorten_title_with_rc_in_range(self):
151152
shortened_title = shorten_title(test_pv)
152153

153154
#Assert
154-
self.assertEquals(shortened_title, "NEW_BLOCK:RC:INRANGE.VAL")
155+
self.assertEqual(shortened_title, "NEW_BLOCK:RC:INRANGE.VAL")
155156

156157
def test_shorten_title_with_rc_enabled(self):
157158
# Arrange
@@ -161,7 +162,7 @@ def test_shorten_title_with_rc_enabled(self):
161162
shortened_title = shorten_title(test_pv)
162163

163164
# Assert
164-
self.assertEquals(shortened_title, "NEW_BLOCK:RC:ENABLE.VAL")
165+
self.assertEqual(shortened_title, "NEW_BLOCK:RC:ENABLE.VAL")
165166

166167
def test_shorten_title_with_rc_in_range(self):
167168
# Arrange
@@ -171,7 +172,7 @@ def test_shorten_title_with_rc_in_range(self):
171172
shortened_title = shorten_title(test_pv)
172173

173174
# Assert
174-
self.assertEquals(shortened_title, "OLD_BLOCK:RC:INRANGE.VAL")
175+
self.assertEqual(shortened_title, "OLD_BLOCK:RC:INRANGE.VAL")
175176

176177
def test_shorten_title_with_empty_string(self):
177178
# Arrange
@@ -181,7 +182,7 @@ def test_shorten_title_with_empty_string(self):
181182
shortened_title = shorten_title(test_pv)
182183

183184
# Assert
184-
self.assertEquals(shortened_title, "")
185+
self.assertEqual(shortened_title, "")
185186

186187
def test_shorten_title_with_bad_rc_value(self):
187188
# Arrange
@@ -191,7 +192,7 @@ def test_shorten_title_with_bad_rc_value(self):
191192
shortened_title = shorten_title(test_pv)
192193

193194
# Assert
194-
self.assertEquals(shortened_title, "OUTRANGE.VAL")
195+
self.assertEqual(shortened_title, "OUTRANGE.VAL")
195196

196197
def test_shorten_title_with_malformed_input_end_of_title(self):
197198
# Arrange
@@ -201,7 +202,7 @@ def test_shorten_title_with_malformed_input_end_of_title(self):
201202
shortened_title = shorten_title(test_pv)
202203

203204
# Assert
204-
self.assertEquals(shortened_title, "INRANGE.VAL")
205+
self.assertEqual(shortened_title, "INRANGE.VAL")
205206

206207
def test_shorten_title_with_malformed_input_rc_value(self):
207208
# Arrange
@@ -211,7 +212,7 @@ def test_shorten_title_with_malformed_input_rc_value(self):
211212
shortened_title = shorten_title(test_pv)
212213

213214
# Assert
214-
self.assertEquals(shortened_title, "RC:INRANGE.VAL")
215+
self.assertEqual(shortened_title, "RC:INRANGE.VAL")
215216

216217
def test_shorten_title_rc_in_pv_doesnt_count(self):
217218
# Arrange
@@ -221,7 +222,7 @@ def test_shorten_title_rc_in_pv_doesnt_count(self):
221222
shortened_title = shorten_title(test_pv)
222223

223224
# Assert
224-
self.assertEquals(shortened_title, "RC.VAL")
225+
self.assertEqual(shortened_title, "RC.VAL")
225226

226227
def test_shorten_title_larmor_block_high_rc(self):
227228
# Arrange
@@ -231,7 +232,7 @@ def test_shorten_title_larmor_block_high_rc(self):
231232
shortened_title = shorten_title(test_pv)
232233

233234
# Assert
234-
self.assertEquals(shortened_title, "CJHCent:RC:HIGH.VAL")
235+
self.assertEqual(shortened_title, "CJHCent:RC:HIGH.VAL")
235236

236237
def test_shorten_title_larmor_block_low_rc(self):
237238
# Arrange
@@ -241,7 +242,7 @@ def test_shorten_title_larmor_block_low_rc(self):
241242
shortened_title = shorten_title(test_pv)
242243

243244
# Assert
244-
self.assertEquals(shortened_title, "Chi:RC:LOW.VAL")
245+
self.assertEqual(shortened_title, "Chi:RC:LOW.VAL")
245246

246247
def test_when_rc_values_given_block_description_contains_rc_values(self):
247248
# Arrange
@@ -254,12 +255,12 @@ def test_when_rc_values_given_block_description_contains_rc_values(self):
254255
description = test_block.get_description()
255256

256257
# Assert
257-
self.assertEquals(description["visibility"], "OFF")
258-
self.assertEquals(description["status"], "INVALID")
259-
self.assertEquals(description["alarm"], "UDF_ALARM")
260-
self.assertEquals(description["rc_low"], 0)
261-
self.assertEquals(description["rc_high"], 100)
262-
self.assertEquals(description["rc_inrange"], False)
258+
self.assertEqual(description["visibility"], "OFF")
259+
self.assertEqual(description["status"], "INVALID")
260+
self.assertEqual(description["alarm"], "UDF_ALARM")
261+
self.assertEqual(description["rc_low"], 0)
262+
self.assertEqual(description["rc_high"], 100)
263+
self.assertEqual(description["rc_inrange"], False)
263264

264265
def test_when_rc_values_not_given_block_description_do_not_contain_rc_values(self):
265266
# Arrange
@@ -269,9 +270,9 @@ def test_when_rc_values_not_given_block_description_do_not_contain_rc_values(sel
269270
description = test_block.get_description()
270271

271272
# Assert
272-
self.assertEquals(description["visibility"], "OFF")
273-
self.assertEquals(description["status"], "INVALID")
274-
self.assertEquals(description["alarm"], "UDF_ALARM")
273+
self.assertEqual(description["visibility"], "OFF")
274+
self.assertEqual(description["status"], "INVALID")
275+
self.assertEqual(description["alarm"], "UDF_ALARM")
275276
self.assertTrue("rc_low" not in description)
276277
self.assertTrue("rc_high" not in description)
277278
self.assertTrue("rc_inrange" not in description)
@@ -290,7 +291,7 @@ def test_set_rc_low_value_for_block_based_on_pv(self):
290291
set_rc_values_for_blocks(blocks, runcontrol)
291292

292293
# Assert
293-
self.assertEquals(blocks[block_name].get_rc_low(), expected_value)
294+
self.assertEqual(blocks[block_name].get_rc_low(), expected_value)
294295

295296
def test_set_rc_high_value_for_block_based_on_pv(self):
296297
# Arrange
@@ -306,8 +307,8 @@ def test_set_rc_high_value_for_block_based_on_pv(self):
306307
set_rc_values_for_blocks(blocks, runcontrol)
307308

308309
# Assert
309-
self.assertEquals(blocks[block_name].get_rc_low(), 10)
310-
self.assertEquals(blocks[block_name].get_rc_high(), 100)
310+
self.assertEqual(blocks[block_name].get_rc_low(), 10)
311+
self.assertEqual(blocks[block_name].get_rc_high(), 100)
311312

312313
def test_set_rc_inrange_value_for_block_based_on_pv(self):
313314
# Arrange
@@ -324,9 +325,9 @@ def test_set_rc_inrange_value_for_block_based_on_pv(self):
324325
set_rc_values_for_blocks(blocks, runcontrol)
325326

326327
# Assert
327-
self.assertEquals(blocks[block_name].get_rc_low(), 10)
328-
self.assertEquals(blocks[block_name].get_rc_high(), 100)
329-
self.assertEquals(blocks[block_name].get_rc_inrange(), False)
328+
self.assertEqual(blocks[block_name].get_rc_low(), 10)
329+
self.assertEqual(blocks[block_name].get_rc_high(), 100)
330+
self.assertEqual(blocks[block_name].get_rc_inrange(), False)
330331

331332
def test_set_rc_not_low_value_for_block_based_on_pv(self):
332333
# Arrange
@@ -341,7 +342,7 @@ def test_set_rc_not_low_value_for_block_based_on_pv(self):
341342
set_rc_values_for_blocks(blocks, runcontrol)
342343

343344
# Assert
344-
self.assertEquals(blocks[block_name].get_rc_low(), None)
345+
self.assertEqual(blocks[block_name].get_rc_low(), None)
345346

346347
def test_set_rc_values_for_two_blocks_based_on_pv(self):
347348
# Arrange
@@ -358,8 +359,8 @@ def test_set_rc_values_for_two_blocks_based_on_pv(self):
358359
set_rc_values_for_blocks(blocks, runcontrol)
359360

360361
# Assert
361-
self.assertEquals(blocks[new_block_name].get_rc_low(), 10)
362-
self.assertEquals(blocks[not_new_block_name].get_rc_low(), 100)
362+
self.assertEqual(blocks[new_block_name].get_rc_low(), 10)
363+
self.assertEqual(blocks[not_new_block_name].get_rc_low(), 100)
363364

364365
def test_set_rc_values_for_one_blocks_based_on_pv_leaves_other_unchanged(self):
365366
# Arrange
@@ -375,8 +376,8 @@ def test_set_rc_values_for_one_blocks_based_on_pv_leaves_other_unchanged(self):
375376
set_rc_values_for_blocks(blocks, runcontrol)
376377

377378
# Assert
378-
self.assertEquals(blocks[new_block_name].get_rc_low(), 10)
379-
self.assertEquals(blocks[not_new_block_name].get_rc_low(), None)
379+
self.assertEqual(blocks[new_block_name].get_rc_low(), 10)
380+
self.assertEqual(blocks[not_new_block_name].get_rc_low(), None)
380381

381382
def test_set_rc_values_for_leaves_both_unchanged(self):
382383
# Arrange
@@ -392,14 +393,14 @@ def test_set_rc_values_for_leaves_both_unchanged(self):
392393
set_rc_values_for_blocks(blocks, {})
393394

394395
# Assert
395-
self.assertEquals(blocks[block1_name].get_rc_low(), None)
396-
self.assertEquals(blocks[block2_name].get_rc_low(), None)
396+
self.assertEqual(blocks[block1_name].get_rc_low(), None)
397+
self.assertEqual(blocks[block2_name].get_rc_low(), None)
397398

398399
def test_set_rc_values_with_empty_block_list(self):
399400
# Act
400401
try:
401402
set_rc_values_for_blocks({}, {})
402-
except Exception, e:
403+
except Exception as e:
403404
self.fail("set_rc_values_for_blocks should handle empty block list")
404405

405406
def _assert_blocks(self, actual_blocks, expected_blocks):
@@ -540,6 +541,5 @@ def test_GIVEN_nonsense_precision_containing_unicode_WHEN_formatting_THEN_origin
540541
self.assertEqual(format_block_value(value, precision), value)
541542

542543

543-
544544
if __name__ == '__main__':
545545
unittest.main()

0 commit comments

Comments
 (0)