<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>