<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/16982">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Fix compatibility with Python 3: print() is a function<br><br>Change-Id: I5dd8e5daf420fc8667c5156bfacc8763d8895993<br>---<br>M README.md<br>M pySim-prog.py<br>M pySim-read.py<br>M pySim/card_handler.py<br>M pySim/transport/serial.py<br>5 files changed, 51 insertions(+), 51 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/README.md b/README.md</span><br><span>index 85b9a57..7074ffa 100644</span><br><span>--- a/README.md</span><br><span>+++ b/README.md</span><br><span>@@ -101,7 +101,7 @@</span><br><span> sl.wait_for_card()</span><br><span> </span><br><span> # Print IMSI</span><br><span style="color: hsl(0, 100%, 40%);">-print sc.read_binary(['3f00', '7f20', '6f07'])</span><br><span style="color: hsl(120, 100%, 40%);">+print(sc.read_binary(['3f00', '7f20', '6f07']))</span><br><span> </span><br><span> # Run A3/A8</span><br><span style="color: hsl(0, 100%, 40%);">-print sc.run_gsm('00112233445566778899aabbccddeeff')</span><br><span style="color: hsl(120, 100%, 40%);">+print(sc.run_gsm('00112233445566778899aabbccddeeff'))</span><br><span>diff --git a/pySim-prog.py b/pySim-prog.py</span><br><span>index b070c5e..bfb40b2 100755</span><br><span>--- a/pySim-prog.py</span><br><span>+++ b/pySim-prog.py</span><br><span>@@ -173,7 +173,7 @@</span><br><span> </span><br><span> if options.type == 'list':</span><br><span> for kls in _cards_classes:</span><br><span style="color: hsl(0, 100%, 40%);">- print kls.name</span><br><span style="color: hsl(120, 100%, 40%);">+ print(kls.name)</span><br><span> sys.exit(0)</span><br><span> </span><br><span> if options.probe:</span><br><span>@@ -560,7 +560,7 @@</span><br><span> </span><br><span> for k in BATCH_INCOMPATIBLE:</span><br><span> if getattr(opts, k):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Incompatible option with batch_state: %s" % (k,)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Incompatible option with batch_state: %s" % (k,))</span><br><span> sys.exit(-1)</span><br><span> </span><br><span> # Don't load state if there is none ...</span><br><span>@@ -568,7 +568,7 @@</span><br><span> return</span><br><span> </span><br><span> if not os.path.isfile(opts.batch_state):</span><br><span style="color: hsl(0, 100%, 40%);">- print "No state file yet"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("No state file yet")</span><br><span> return</span><br><span> </span><br><span> # Get stored data</span><br><span>@@ -601,12 +601,12 @@</span><br><span> for kls in _cards_classes:</span><br><span> card = kls.autodetect(scc)</span><br><span> if card:</span><br><span style="color: hsl(0, 100%, 40%);">- print "Autodetected card type: %s" % card.name</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Autodetected card type: %s" % card.name)</span><br><span> card.reset()</span><br><span> break</span><br><span> </span><br><span> if card is None:</span><br><span style="color: hsl(0, 100%, 40%);">- print "Autodetection failed"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Autodetection failed")</span><br><span> return</span><br><span> </span><br><span> if opts.type == "auto_once":</span><br><span>@@ -631,7 +631,7 @@</span><br><span> # Get card</span><br><span> card = card_detect(opts, scc)</span><br><span> if card is None:</span><br><span style="color: hsl(0, 100%, 40%);">- print "No card detected!"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("No card detected!")</span><br><span> return -1</span><br><span> </span><br><span> # Probe only</span><br><span>@@ -640,7 +640,7 @@</span><br><span> </span><br><span> # Erase if requested</span><br><span> if opts.erase:</span><br><span style="color: hsl(0, 100%, 40%);">- print "Formatting ..."</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Formatting ...")</span><br><span> card.erase()</span><br><span> card.reset()</span><br><span> </span><br><span>@@ -666,16 +666,16 @@</span><br><span> imsi = opts.imsi</span><br><span> cp = read_params_csv(opts, imsi=imsi, iccid=iccid)</span><br><span> if cp is None:</span><br><span style="color: hsl(0, 100%, 40%);">- print "Error reading parameters from CSV file!\n"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Error reading parameters from CSV file!\n")</span><br><span> return 2</span><br><span> print_parameters(cp)</span><br><span> </span><br><span> if opts.dry_run is False:</span><br><span> # Program the card</span><br><span style="color: hsl(0, 100%, 40%);">- print "Programming ..."</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Programming ...")</span><br><span> card.program(cp)</span><br><span> else:</span><br><span style="color: hsl(0, 100%, 40%);">- print "Dry Run: NOT PROGRAMMING!"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Dry Run: NOT PROGRAMMING!")</span><br><span> </span><br><span> # Write parameters permanently</span><br><span> write_parameters(opts, cp)</span><br><span>@@ -716,9 +716,9 @@</span><br><span> </span><br><span> # If we use a CSV file as data input, check if the CSV file exists.</span><br><span> if opts.source == 'csv':</span><br><span style="color: hsl(0, 100%, 40%);">- print "Using CSV file as data input: " + str(opts.read_csv)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Using CSV file as data input: " + str(opts.read_csv))</span><br><span> if not os.path.isfile(opts.read_csv):</span><br><span style="color: hsl(0, 100%, 40%);">- print "CSV file not found!"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("CSV file not found!")</span><br><span> sys.exit(1)</span><br><span> </span><br><span> # Batch mode init</span><br><span>@@ -737,18 +737,18 @@</span><br><span> try:</span><br><span> rc = process_card(opts, first, card_handler)</span><br><span> except (KeyboardInterrupt):</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(0, 100%, 40%);">- print "Terminated by user!"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Terminated by user!")</span><br><span> sys.exit(0)</span><br><span> except (SystemExit):</span><br><span> raise</span><br><span> except:</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(0, 100%, 40%);">- print "Card programming failed with an execption:"</span><br><span style="color: hsl(0, 100%, 40%);">- print "---------------------8<---------------------"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Card programming failed with an execption:")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("---------------------8<---------------------")</span><br><span> traceback.print_exc()</span><br><span style="color: hsl(0, 100%, 40%);">- print "---------------------8<---------------------"</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("---------------------8<---------------------")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span> rc = -1</span><br><span> </span><br><span> # Something did not work as well as expected, however, lets</span><br><span>diff --git a/pySim-read.py b/pySim-read.py</span><br><span>index 662ee54..b59b7f3 100755</span><br><span>--- a/pySim-read.py</span><br><span>+++ b/pySim-read.py</span><br><span>@@ -140,7 +140,7 @@</span><br><span> else:</span><br><span> print("PLMNsel: Can't read, response code = %s" % (sw,))</span><br><span> except Exception as e:</span><br><span style="color: hsl(0, 100%, 40%);">- print "HPLMNAcT: Can't read file -- " + str(e)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("HPLMNAcT: Can't read file -- " + str(e))</span><br><span> </span><br><span> # EF.PLMNwAcT</span><br><span> try:</span><br><span>@@ -150,7 +150,7 @@</span><br><span> else:</span><br><span> print("PLMNwAcT: Can't read, response code = %s" % (sw,))</span><br><span> except Exception as e:</span><br><span style="color: hsl(0, 100%, 40%);">- print "PLMNwAcT: Can't read file -- " + str(e)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("PLMNwAcT: Can't read file -- " + str(e))</span><br><span> </span><br><span> # EF.OPLMNwAcT</span><br><span> try:</span><br><span>@@ -160,7 +160,7 @@</span><br><span> else:</span><br><span> print("OPLMNwAcT: Can't read, response code = %s" % (sw,))</span><br><span> except Exception as e:</span><br><span style="color: hsl(0, 100%, 40%);">- print "OPLMNwAcT: Can't read file -- " + str(e)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("OPLMNwAcT: Can't read file -- " + str(e))</span><br><span> </span><br><span> # EF.HPLMNAcT</span><br><span> try:</span><br><span>@@ -170,7 +170,7 @@</span><br><span> else:</span><br><span> print("HPLMNAcT: Can't read, response code = %s" % (sw,))</span><br><span> except Exception as e:</span><br><span style="color: hsl(0, 100%, 40%);">- print "HPLMNAcT: Can't read file -- " + str(e)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("HPLMNAcT: Can't read file -- " + str(e))</span><br><span> </span><br><span> # EF.ACC</span><br><span> (res, sw) = scc.read_binary(['3f00', '7f20', '6f78'])</span><br><span>@@ -191,7 +191,7 @@</span><br><span> else:</span><br><span> print("MSISDN: Can't read, response code = %s" % (sw,))</span><br><span> except Exception as e:</span><br><span style="color: hsl(0, 100%, 40%);">- print "MSISDN: Can't read file -- " + str(e)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("MSISDN: Can't read file -- " + str(e))</span><br><span> </span><br><span> # EF.AD</span><br><span> (res, sw) = scc.read_binary(['3f00', '7f20', '6fad'])</span><br><span>@@ -201,4 +201,4 @@</span><br><span> print("AD: Can't read, response code = %s" % (sw,))</span><br><span> </span><br><span> # Done for this card and maybe for everything ?</span><br><span style="color: hsl(0, 100%, 40%);">- print "Done !\n"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Done !\n")</span><br><span>diff --git a/pySim/card_handler.py b/pySim/card_handler.py</span><br><span>index 46ec93e..bb33833 100644</span><br><span>--- a/pySim/card_handler.py</span><br><span>+++ b/pySim/card_handler.py</span><br><span>@@ -36,16 +36,16 @@</span><br><span> self.sl = sl</span><br><span> </span><br><span> def get(self, first = False):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Ready for Programming: Insert card now (or CTRL-C to cancel)"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Ready for Programming: Insert card now (or CTRL-C to cancel)")</span><br><span> self.sl.wait_for_card(newcardonly=not first)</span><br><span> </span><br><span> def error(self):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Programming failed: Remove card from reader"</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Programming failed: Remove card from reader")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span> </span><br><span> def done(self):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Programming successful: Remove card from reader"</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Programming successful: Remove card from reader")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span> </span><br><span> # Automatic card handler: A machine is used to handle the cards.</span><br><span> class card_handler_auto:</span><br><span>@@ -55,7 +55,7 @@</span><br><span> verbose = True</span><br><span> </span><br><span> def __init__(self, sl, config_file):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Card handler Config-file: " + str(config_file)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Card handler Config-file: " + str(config_file))</span><br><span> self.sl = sl</span><br><span> with open(config_file) as cfg:</span><br><span> self.cmds = yaml.load(cfg, Loader=yaml.FullLoader)</span><br><span>@@ -63,22 +63,22 @@</span><br><span> self.verbose = (self.cmds.get('verbose') == True)</span><br><span> </span><br><span> def __print_outout(self,out):</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(0, 100%, 40%);">- print "Card handler output:"</span><br><span style="color: hsl(0, 100%, 40%);">- print "---------------------8<---------------------"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Card handler output:")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("---------------------8<---------------------")</span><br><span> stdout = out[0].strip()</span><br><span> if len(stdout) > 0:</span><br><span style="color: hsl(0, 100%, 40%);">- print "stdout:"</span><br><span style="color: hsl(0, 100%, 40%);">- print stdout</span><br><span style="color: hsl(120, 100%, 40%);">+ print("stdout:")</span><br><span style="color: hsl(120, 100%, 40%);">+ print(stdout)</span><br><span> stderr = out[1].strip()</span><br><span> if len(stderr) > 0:</span><br><span style="color: hsl(0, 100%, 40%);">- print "stderr:"</span><br><span style="color: hsl(0, 100%, 40%);">- print stderr</span><br><span style="color: hsl(0, 100%, 40%);">- print "---------------------8<---------------------"</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("stderr:")</span><br><span style="color: hsl(120, 100%, 40%);">+ print(stderr)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("---------------------8<---------------------")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span> </span><br><span> def __exec_cmd(self, command):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Card handler Commandline: " + str(command)</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Card handler Commandline: " + str(command))</span><br><span> </span><br><span> proc = subprocess.Popen([command], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)</span><br><span> out = proc.communicate()</span><br><span>@@ -88,21 +88,21 @@</span><br><span> self.__print_outout(out)</span><br><span> </span><br><span> if rc != 0:</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(0, 100%, 40%);">- print "Error: Card handler failure! (rc=" + str(rc) + ")"</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Error: Card handler failure! (rc=" + str(rc) + ")")</span><br><span> sys.exit(rc)</span><br><span> </span><br><span> def get(self, first = False):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Ready for Programming: Transporting card into the reader-bay..."</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Ready for Programming: Transporting card into the reader-bay...")</span><br><span> self.__exec_cmd(self.cmds['get'])</span><br><span> self.sl.connect()</span><br><span> </span><br><span> def error(self):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Programming failed: Transporting card to the error-bin..."</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Programming failed: Transporting card to the error-bin...")</span><br><span> self.__exec_cmd(self.cmds['error'])</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span> </span><br><span> def done(self):</span><br><span style="color: hsl(0, 100%, 40%);">- print "Programming successful: Transporting card into the collector bin..."</span><br><span style="color: hsl(120, 100%, 40%);">+ print("Programming successful: Transporting card into the collector bin...")</span><br><span> self.__exec_cmd(self.cmds['done'])</span><br><span style="color: hsl(0, 100%, 40%);">- print ""</span><br><span style="color: hsl(120, 100%, 40%);">+ print("")</span><br><span>diff --git a/pySim/transport/serial.py b/pySim/transport/serial.py</span><br><span>index 7a2bfd3..f672be2 100644</span><br><span>--- a/pySim/transport/serial.py</span><br><span>+++ b/pySim/transport/serial.py</span><br><span>@@ -162,7 +162,7 @@</span><br><span> </span><br><span> def _dbg_print(self, s):</span><br><span> if self._debug:</span><br><span style="color: hsl(0, 100%, 40%);">- print s</span><br><span style="color: hsl(120, 100%, 40%);">+ print(s)</span><br><span> </span><br><span> def _tx_byte(self, b):</span><br><span> self._sl.write(b)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/16982">change 16982</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/16982"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I5dd8e5daf420fc8667c5156bfacc8763d8895993 </div>
<div style="display:none"> Gerrit-Change-Number: 16982 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>