From fdeffd44b168e21f759da580a8b6e071d85c96a7 Mon Sep 17 00:00:00 2001
From: Lan Dam <ldam@passcal.nmt.edu>
Date: Fri, 25 Jan 2019 11:33:29 -0700
Subject: [PATCH] convert to py3, fix bugs in Endianess tab - Converting

---
 fixhdr/LibTrace.py | 513 ++++++++++++++++++++++++++-------------------
 fixhdr/fixhdr.py   |  84 ++++----
 2 files changed, 343 insertions(+), 254 deletions(-)

diff --git a/fixhdr/LibTrace.py b/fixhdr/LibTrace.py
index 39e6b30..eebf3db 100755
--- a/fixhdr/LibTrace.py
+++ b/fixhdr/LibTrace.py
@@ -114,11 +114,19 @@
 #
 # corrected typo from DHQaul to DHQual
 # added local variables to class Mseed
+################################################################
+#
+# modification
+# version: 2019.025
+# author: Lan Dam
+# convert to py3
+# Bug fix: In Writeblk200/201/300/310/320/390/395/500 when unpack inblk to
+#   variables with time (Year, Day, Hour, Min, Sec, junk, Micro)
 
 import os, string, sys, struct, time
 SPACE = " "
 
-#VERSION = "2008.204"
+#VERSION = "2019.025"
 
 class futils:
     """
@@ -307,7 +315,7 @@ class Mseed(futils):
     #            timeblock=self.TraceBuffer[seekval:seekval+10]
 
             #assume big endian
-            (Year, Day, Hour, Min, Sec, junk, Micro)=\
+            (Year, Day, Hour, Min, Sec, junk, Micro) = \
                     self.sunpack('>HHBBBBH',timeblock)
             #test if big endian read makes sense
             if 1950 <= Year <= 2050 and \
@@ -503,59 +511,61 @@ class Mseed(futils):
         Requires four tuples (see self.fixedhdr)
         """
 
-        #try:
-        self.infileseek(seekval)
-        fmtorderstr=self.setEndian(endianess)
-        #station info
-        #left justify values
-        #fmtstr0 = fmtorderstr + "6scc5s2s3s2s"
-
-        SeqNum = self.Pad(hdrlist[0][0], 6) #SeqNum
-        DQual = hdrlist[0][1] #DataQual
-        Res = hdrlist[0][2] #Reserved
-        Stat = self.Pad(hdrlist[0][3], 5).encode() #Stat
-        Loc = self.Pad(hdrlist[0][4], 2).encode() #Loc
-        Chan = self.Pad(hdrlist[0][5], 3).encode() #Chan
-        Net = self.Pad(hdrlist[0][6], 2).encode() #Net
-
-        #time info
-        #fmtstr1 = fmtorderstr + "HHBBBBH"
-        (Year, Day, Hour, Min, Sec, junk, Micro)=hdrlist[1]
-        Micro=int(Micro)
-
-        #sample info
-        #fmtstr2 = fmtorderstr + "Hhh"
-        (NumSamp, SampFact, SampMult) = hdrlist[2]
-
-        #misc info
-        #fmtstr3 = fmtorderstr + "BBBBlHH"
-        (actFlags, ioFlags, dqFlags, numblk, timecor, offsetData,
-         offsetBlktt)=hdrlist[3]
-        #convert flag string to integer
-        actFlags = self.FlagStrtoInt(actFlags)
-        ioFlags = self.FlagStrtoInt(ioFlags)
-        dqFlags = self.FlagStrtoInt(dqFlags)
-        print("SeqNum, DQual, Res, Stat, Loc, Chan, Net,Year, Day, Hour, Min, Sec, junk, Micro,NumSamp, SampFact, SampMult,actFlags, ioFlags, dqFlags,numblk, timecor, offsetData, offsetBlktt:",
-              SeqNum, DQual, Res, Stat, Loc, Chan, Net,
-              Year, Day, Hour, Min, Sec, junk, Micro,
-              NumSamp, SampFact, SampMult,actFlags, ioFlags, dqFlags,
-              numblk, timecor, offsetData, offsetBlktt)
-        #pack fields
-        fmtstr = fmtorderstr + "6scc5s2s3s2sHHBBBBHHhhBBBBlHH"
-        print("fmtstr")
-        pack_hdr = self.spack(
-            fmtstr,SeqNum, DQual, Res, Stat, Loc, Chan, Net,
-            Year, Day, Hour, Min, Sec, junk, Micro,
-            NumSamp, SampFact, SampMult,actFlags, ioFlags, dqFlags,
-            numblk, timecor, offsetData, offsetBlktt)
-
-        #write header
-        self.infilewrite(pack_hdr)
-
-        return 48
-        #except Exception as e:
-            #print("error writing fixed header")
-            #return 0
+        try:
+            self.infileseek(seekval)
+            fmtorderstr=self.setEndian(endianess)
+            #station info
+            #left justify values
+            #fmtstr0 = fmtorderstr + "6scc5s2s3s2s"
+    
+            SeqNum = self.Pad(hdrlist[0][0], 6) #SeqNum
+            DQual = hdrlist[0][1] #DataQual
+            Res = hdrlist[0][2] #Reserved
+            try:
+                Stat = self.Pad(hdrlist[0][3], 5).encode() #Stat
+                Loc = self.Pad(hdrlist[0][4], 2).encode() #Loc
+                Chan = self.Pad(hdrlist[0][5], 3).encode() #Chan
+                Net = self.Pad(hdrlist[0][6], 2).encode() #Net
+            except AttributeError:
+                Stat = self.Pad(hdrlist[0][3], 5) #Stat
+                Loc = self.Pad(hdrlist[0][4], 2) #Loc
+                Chan = self.Pad(hdrlist[0][5], 3) #Chan
+                Net = self.Pad(hdrlist[0][6], 2) #Net
+    
+            #time info
+            #fmtstr1 = fmtorderstr + "HHBBBBH"
+            (Year, Day, Hour, Min, Sec, junk, Micro)=hdrlist[1]
+            Micro=int(Micro)
+    
+            #sample info
+            #fmtstr2 = fmtorderstr + "Hhh"
+            (NumSamp, SampFact, SampMult) = hdrlist[2]
+    
+            #misc info
+            #fmtstr3 = fmtorderstr + "BBBBlHH"
+            (actFlags, ioFlags, dqFlags, numblk, timecor, offsetData,
+             offsetBlktt)=hdrlist[3]
+            #convert flag string to integer
+            actFlags = self.FlagStrtoInt(actFlags)
+            ioFlags = self.FlagStrtoInt(ioFlags)
+            dqFlags = self.FlagStrtoInt(dqFlags)
+    
+            #pack fields
+            fmtstr = fmtorderstr + "6scc5s2s3s2sHHBBBBHHhhBBBBlHH"
+    
+            pack_hdr = self.spack(
+                fmtstr,SeqNum, DQual, Res, Stat, Loc, Chan, Net,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                NumSamp, SampFact, SampMult,actFlags, ioFlags, dqFlags,
+                numblk, timecor, offsetData, offsetBlktt)
+    
+            #write header
+            self.infilewrite(pack_hdr)
+    
+            return 48
+        except Exception as e:
+            print("error writing fixed header")
+            return 0
 
 #########################################################
     def GetBlk(self, blknum, seekval=0):
@@ -563,7 +573,9 @@ class Mseed(futils):
         if not blknum in ValidBlk:
             return 0
         else:
-            callcmd = "blk=self.blk" + str(blknum) + "(" + str(seekval) + ")"
+            callcmd = "global blk; blk=self.blk%s(%s)" \
+                % (str(blknum), str(seekval))
+
             exec(callcmd)
             return blk
 #########################################################
@@ -575,8 +587,10 @@ class Mseed(futils):
         if not blknum in ValidBlk:
             return 0
         else:
-            callcmd = "bytes_written=self.Writeblk" + str(blknum) + \
-                "(indata" + "," + str(seekval) + ", endian)"
+            callcmd = "global bytes_written; "\
+                "bytes_written=self.Writeblk%s(indata, %s, endian)"\
+                % (str(blknum), str(seekval))
+
             exec(callcmd)
             return bytes_written
 #########################################################
@@ -594,9 +608,9 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHfb3B"
-        blk=self.sunpack(fmtstr, self.infileread(12))
+        blk = self.sunpack(fmtstr, self.infileread(12))
         scrblk = self.UbytetoStr(blk, 3)
-        blk=scrblk
+        blk = scrblk
         return blk
 
 #########################################################
@@ -611,8 +625,10 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfb3B"
             (blkette, nextblk, actrate, flags, res0, res1, res2) = inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, actrate, flags, res0, res1, res2)
+            flags = self.FlagStrtoInt(flags)
+
+            pack_blk = self.spack(fmtstr, blkette, nextblk, actrate, flags,
+                                  res0, res1, res2)
             self.infilewrite(pack_blk)
             return 12
         except Exception as e:
@@ -639,11 +655,11 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHfffBB"
-        blk1=self.sunpack(fmtstr, self.infileread(18))
+        blk1 = self.sunpack(fmtstr, self.infileread(18))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "24s"
-        blk2=self.sunpack(fmtstr, self.infileread(24))
+        blk2 = self.sunpack(fmtstr, self.infileread(24))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -668,11 +684,14 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfffBBHHBBBBH24s"
 
-            (blkette, nextblk, amp, period, bg, flags, \
-             Year, Day, Hour, Min, Sec, junk, Micro, charstr)=inblk
-            flags=FlagsStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, amp, period, bg, flags, \
-                                Year, Day, Hour, Min, Sec, junk, Micro, charstr)
+            (blkette, nextblk, amp, period, bg, flags,
+             (Year, Day, Hour, Min, Sec, junk, Micro), charstr) = inblk
+            flags = FlagsStrtoInt(flags)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, amp, period, bg, flags,
+                Year, Day, Hour, Min, Sec, junk, Micro, charstr)
+
             self.infilewrite(pack_blk)
             return 52
 
@@ -688,8 +707,8 @@ class Mseed(futils):
         Returns tuple
             blk
                 Blockette type (UWORD, 2)
-                Next blockette's byte offset relative to fixed section of header
-                    (UWORD, 2)
+                Next blockette's byte offset relative to fixed section of
+                  header (UWORD, 2)
                 Signal amplitude (FLOAT, 4)
                 Signal period (FLOAT,4)
                 Background estimate (FLOAT,4)
@@ -703,11 +722,11 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHfffBB"
-        blk1=self.sunpack(fmtstr, self.infileread(18))
+        blk1 = self.sunpack(fmtstr, self.infileread(18))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "6BBB24s"
-        blk2=self.sunpack(fmtstr, self.infileread(32))
+        blk2 = self.sunpack(fmtstr, self.infileread(32))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -723,21 +742,27 @@ class Mseed(futils):
         """
         writes Murdock Event Detection Blockette 201 (60 bytes)
         requires tuple inblk
-        inblk=(blkette, nextblk, amp, period, bg, flags, res, 
-                Year, Day, Hour, Min, Sec, junk, Micro, SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name)
+        inblk=(blkette, nextblk, amp, period, bg, flags, res,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name)
         """
 
         try:
             self.infileseek(seekval)
-            fmtorderstr=self.setEndian(endianess)
+            fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfffBBHHBBBBH6BBB24s"
-
-            (blkette, nextblk, amp, period, bg, flags, res, \
-             Year, Day, Hour, Min, Sec, junk, Micro, SN0, SN1, SN2, SN3, SN4, SN5, \
-             loop, algo, Name)=inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, amp, period, bg, flags, res, \
-                                Year, Day, Hour, Min, Sec, junk, Micro, SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name)
+    
+            (blkette, nextblk, amp, period, bg, flags, res,
+             (Year, Day, Hour, Min, Sec, junk, Micro),
+             SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name) = inblk
+    
+            flags = self.FlagStrtoInt(flags)
+    
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, amp, period, bg, flags, res,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name)
+    
             self.infilewrite(pack_blk)
             return 60
 
@@ -771,9 +796,9 @@ class Mseed(futils):
         fmtstr = self.fmt_order + "HH"
         blk1=self.sunpack(fmtstr, self.infileread(4))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "BBIIf3sBI12s12s"
-        blk2=self.sunpack(fmtstr, self.infileread(46))
+        blk2 = self.sunpack(fmtstr, self.infileread(46))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -789,7 +814,7 @@ class Mseed(futils):
         """
         writes Step Calibration Blockette 300 (60 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
+        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
             numst, flags, dur, interv, amp, chan, res, ref, couple, rolloff)
         """
 
@@ -798,11 +823,17 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIIf3sBI12s12s"
 
-            (blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-             numst, flags, dur, interv, amp, chan, res, ref, couple, rolloff)=inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-                                numst, flags, dur, interv, amp, chan, res, ref, couple, rolloff)
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             numst, flags, dur, interv, amp, chan, res, ref,
+             couple, rolloff) = inblk
+            flags = self.FlagStrtoInt(flags)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                numst, flags, dur, interv, amp, chan,
+                res, ref, couple, rolloff)
+
             self.infilewrite(pack_blk)
             return 60
 
@@ -834,11 +865,11 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HH"
-        blk1=self.sunpack(fmtstr, self.infileread(4))
+        blk1 = self.sunpack(fmtstr, self.infileread(4))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "BBIff3sBI12s12s"
-        blk2=self.sunpack(fmtstr, self.infileread(46))
+        blk2 = self.sunpack(fmtstr, self.infileread(46))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -854,7 +885,7 @@ class Mseed(futils):
         """
         writes Sine Calibration Blockette 310 (60 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
+        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
             res, flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)
         """
 
@@ -863,11 +894,16 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIff3sBI12s12s"
 
-            (blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-             res, flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)=inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-                                res, flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             res, flags, dura, per, ampsig, chan, res2,
+             refamp, coup, rolloff) = inblk
+            flags = self.FlagStrtoInt(flags)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                res, flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)
+
             self.infilewrite(pack_blk)
             return 60
 
@@ -898,11 +934,11 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HH"
-        blk1=self.sunpack(fmtstr, self.infileread(4))
+        blk1 = self.sunpack(fmtstr, self.infileread(4))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "BBIf3sBI12s12s8s"
-        blk2=self.sunpack(fmtstr, self.infileread(50))
+        blk2 = self.sunpack(fmtstr, self.infileread(50))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -918,7 +954,7 @@ class Mseed(futils):
         """
         writes Pseudo-random Calibraton Blockette 320 (64 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
+        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
             res, flags, dura,ptop,chan, res2,refamp,coup,rolloff,noise)
         """
 
@@ -927,11 +963,17 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIf3sBI12s12s8s"
 
-            (blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-             res, flags, dura,ptop,chan, res2,refamp,coup,rolloff,noise)=inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-                                res, flags, dura,ptop,chan, res2,refamp,coup,rolloff,noise)
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             res, flags, dura, ptop, chan, res2,
+             refamp, coup, rolloff, noise) = inblk
+
+            flags = self.FlagStrtoInt(flags)
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                res, flags, dura, ptop, chan, res2,
+                refamp, coup, rolloff, noise)
+
             self.infilewrite(pack_blk)
             return 64
 
@@ -958,11 +1000,11 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HH"
-        blk1=self.sunpack(fmtstr, self.infileread(4))
+        blk1 = self.sunpack(fmtstr, self.infileread(4))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr, self.infileread(10))
+        timeblk = self.sunpack(fmtstr, self.infileread(10))
         fmtstr = self.fmt_order + "BBIf3sB"
-        blk2=self.sunpack(fmtstr, self.infileread(14))
+        blk2 = self.sunpack(fmtstr, self.infileread(14))
 
         # incorporate timeblk tuple into blk list
         tmpblk = list(blk1)
@@ -978,7 +1020,7 @@ class Mseed(futils):
         """
         writes Generic Calibraton Blockette 390 (28 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
+        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
             res, flags, dura,amp,chan, res2)
         """
 
@@ -987,11 +1029,15 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIf3sB"
 
-            (blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-             res, flags, dura,amp,chan, res2)=inblk
-            flags=self.FlagStrtoInt(flags)
-            pack_blk=self.spack(fmtstr, blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, \
-                                res, flags, dura,amp,chan, res2)
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             res, flags, dura, amp, chan, res2) = inblk
+            flags = self.FlagStrtoInt(flags)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                res, flags, dura,amp,chan, res2)
+
             self.infilewrite(pack_blk)
             return 28
 
@@ -1013,7 +1059,7 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHHHBBBBH2s"
-        blk=self.sunpack(fmtstr, self.infileread(16))
+        blk = self.sunpack(fmtstr, self.infileread(16))
         return list(blk)
 
 #########################################################
@@ -1029,8 +1075,13 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBH2s"
 
-            (blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, res)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, res)
+            (blkette, nextblk,
+             (Year, Day, Hour, Min, Sec, junk, Micro), res) = inblk
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro, res)
+
             self.infilewrite(pack_blk)
             return 16
 
@@ -1067,11 +1118,14 @@ class Mseed(futils):
 
         try:
             self.infileseek(seekval)
-            fmtorderstr=self.setEndian(endianess)
+            fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHffH2B"
 
-            (blkette, nextblk, baz,bslw,bconf,res0,res1)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, baz,bslw,bconf,res0,res1)
+            (blkette, nextblk, baz, bslw, bconf, res0, res1) = inblk
+
+            pack_blk=self.spack(
+                fmtstr, blkette, nextblk, baz, bslw, bconf, res0, res1)
+
             self.infilewrite(pack_blk)
             return 16
 
@@ -1108,8 +1162,10 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHH"
 
-            (blkette, nextblk, delay)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, delay)
+            (blkette, nextblk, delay) = inblk
+
+            pack_blk = self.spack(fmtstr, blkette, nextblk, delay)
+
             self.infilewrite(pack_blk)
             return 6
 
@@ -1137,9 +1193,9 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHf"
-        blk1=self.sunpack(fmtstr, self.infileread(8))
+        blk1 = self.sunpack(fmtstr, self.infileread(8))
         fmtstr = self.fmt_order + "HHBBBBH"
-        timeblk=self.sunpack(fmtstr,self.infileread(10))
+        timeblk = self.sunpack(fmtstr,self.infileread(10))
         fmtstr = self.fmt_order + "BBI16s32s128s"
         blk2=self.sunpack(fmtstr, self.infileread(182))
 
@@ -1155,8 +1211,8 @@ class Mseed(futils):
         """
         writes Timing Blockette 500 (200 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, vcocorr,Year, Day, Hour, Min, Sec, junk, Micro, Micro2, \
-            qual,cnt,type,mod,stat)
+        inblk=(blkette, nextblk, vcocorr,Year, Day, Hour, Min, Sec, junk,
+            Micro, Micro2, qual,cnt,type,mod,stat)
         """
 
         try:
@@ -1164,10 +1220,15 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfHHBBBBHBBI16s32s128s"
 
-            (blkette, nextblk, vcocorr,Year, Day, Hour, Min, Sec, junk, Micro, Micro2, \
-             qual,cnt,type,mod,stat)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, vcocorr,Year, Day, Hour, Min, Sec, junk, Micro, Micro2, \
-                                qual,cnt,type,mod,stat)
+            (blkette, nextblk, vcocorr,
+             (Year, Day, Hour, Min, Sec, junk, Micro), Micro2,
+             qual, cnt, type, mod, stat) = inblk
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, vcocorr,
+                Year, Day, Hour, Min, Sec, junk, Micro, Micro2,
+                qual, cnt, type, mod, stat)
+
             self.infilewrite(pack_blk)
             return 200
 
@@ -1182,8 +1243,8 @@ class Mseed(futils):
         Returns tuple
             blk
                 Blockette type (UWORD, 2)
-                Next blockette's byte offset relative to fixed section of header
-                    (UWORD, 2)
+                Next blockette's byte offset relative to fixed section of
+                    header (UWORD, 2)
                 Encoding Format (BYTE, 1)
                 Word Order (UBYTE, 1)
                 Data Record Length (UBYTE, 1)
@@ -1191,7 +1252,8 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHbBBB"
-        blk=self.sunpack(fmtstr, self.infileread(8))
+
+        blk = self.sunpack(fmtstr, self.infileread(8))
         return list(blk)
 
 #########################################################
@@ -1204,11 +1266,14 @@ class Mseed(futils):
 
         try:
             self.infileseek(seekval)
-            fmtorderstr=self.setEndian(endianess)
+            fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHbBBB"
 
-            (blkette, nextblk, fmt,order,length,res)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, fmt,order,length,res)
+            (blkette, nextblk, fmt,order,length,res) = inblk
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, fmt,order,length,res)
+
             self.infilewrite(pack_blk)
             return 8
 
@@ -1223,8 +1288,8 @@ class Mseed(futils):
         Returns tuple
             blk
                 Blockette type (UWORD, 2)
-                Next blockette's byte offset relative to fixed section of header
-                    (UWORD, 2)
+                Next blockette's byte offset relative to fixed section of
+                    header (UWORD, 2)
                 Timing Quality (UBYTE, 1)
                 microsec (UBYTE, 1)
                 Reserved (UBYTE, 1)
@@ -1232,7 +1297,7 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHBBBB"
-        blk=self.sunpack(fmtstr, self.infileread(8))
+        blk = self.sunpack(fmtstr, self.infileread(8))
         return list(blk)
 #########################################################
     def Writeblk1001(self, inblk, seekval=0, endianess=""):
@@ -1247,8 +1312,11 @@ class Mseed(futils):
             fmtorderstr=self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHBBBB"
 
-            (blkette, nextblk, tqual,micro,res,fcnt)=inblk
-            pack_blk=self.spack(fmtstr, blkette, nextblk, tqual,micro,res,fcnt)
+            (blkette, nextblk, tqual, micro, res, fcnt) = inblk
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, tqual, micro, res, fcnt)
+
             self.infilewrite(pack_blk)
             return 8
 
@@ -1261,50 +1329,53 @@ class Mseed(futils):
         """
         Variable Length Opaque Data Blockette
         Returns two tuples
-            blk, opaque
-                Blockette type (UWORD, 2)
-                Next blockette's byte offset relative to fixed section of header. Use 0 if no
-                    more blockettes will follow. (UWORD, 2)
-                Total Blockette length kin Bytes (UWORD, 2)
-                Offset to Opaque Data (UWORD, 2)
-                Record number (ULONG, 4)
-                Data Word order (UBYTE, 1)
-                    0 = little endian (VAX or 80x86 byte order).
-                    1 = big endian (68000 or SPARC byte order).
-                Opaque Data flags (UBYTE, 1)
-                    [bit 0] Opaque blockette orientation.
-                        0 = record oriented.
-                        1 = stream oriented.
-                    [bit 1] Packaging bit.
-                        0 = Blockette 2000s from multiple SEED data records with different timetags
-                        may be packaged into a single SEED data record. The exact original
-                        timetag in each SEED Fixed Data Header is not required for each
-                        blockette 2000.
-                        1= Blockette 2000s from multiple SEED data records with differing timetags
-                        may NOT be repackaged into a single SEED data record. Set this bit
-                        if the timetag in the SEED Fixed Data Header is required to properly
-                        interpret the opaque data.
-                    [bits 2-3] Opaque blockette fragmentation flags.
-                        00 = opaque record identified by record number is completely contained in
-                        this opaque blockette.
-                        01 = first opaque blockette for record spanning multiple blockettes.
-                        11 = continuation blockette 2...N-1 of record spanning N blockettes.
-                        10 = final blockette for record spanning N blockettes.
-                    [bits 4-5] File blockette information.
-                        00 = not file oriented.
-                        01 = first blockette of file.
-                        10 = continuation of file.
-                        11 = last blockette of file.
-                Number of Opaque Header fields (UBYTE, 1)
-                Opaque Data Header fields (VAR)
-                    a Record type
-                    b Vendor type
-                    c Model type
-                    d Software
-                    e Firmware
-                Opaque Data Opaque - bytes of opaque data. Total length of opaque data 
-                    in bytes is blockette_length-15-length (opaque_data_header_string)
-                    (Opaque)
+          blk, opaque
+            Blockette type (UWORD, 2)
+            Next blockette's byte offset relative to fixed section of header.
+              Use 0 if no more blockettes will follow.(UWORD, 2)
+            Total Blockette length kin Bytes (UWORD, 2)
+            Offset to Opaque Data (UWORD, 2)
+            Record number (ULONG, 4)
+            Data Word order (UBYTE, 1)
+              0 = little endian (VAX or 80x86 byte order).
+              1 = big endian (68000 or SPARC byte order).
+            Opaque Data flags (UBYTE, 1)
+              [bit 0] Opaque blockette orientation.
+                0 = record oriented.
+                1 = stream oriented.
+              [bit 1] Packaging bit.
+                0 = Blockette 2000s from multiple SEED data records with
+                  different timetags may be packaged into a single SEED data
+                  record. The exact original timetag in each SEED Fixed Data
+                  Header is not required for each blockette 2000.
+                1= Blockette 2000s from multiple SEED data records with
+                  differing timetags may NOT be repackaged into a single SEED
+                  data record. Set this bit if the timetag in the SEED Fixed
+                  Data Header is required to properly interpret the opaque
+                  data.
+              [bits 2-3] Opaque blockette fragmentation flags.
+                00 = opaque record identified by record number is completely
+                  contained in this opaque blockette.
+                01 = first opaque blockette for record spanning multiple
+                  blockettes.
+                11 = continuation blockette 2...N-1 of record spanning N
+                  blockettes.
+                10 = final blockette for record spanning N blockettes.
+              [bits 4-5] File blockette information.
+                00 = not file oriented.
+                01 = first blockette of file.
+                10 = continuation of file.
+                11 = last blockette of file.
+            Number of Opaque Header fields (UBYTE, 1)
+            Opaque Data Header fields (VAR)
+              a Record type
+              b Vendor type
+              c Model type
+              d Software
+              e Firmware
+            Opaque Data Opaque - bytes of opaque data. Total length of opaque
+              data in bytes is blockette_length-15-length
+              (opaque_data_header_string) (Opaque)
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHHHIBBB"
@@ -1314,15 +1385,15 @@ class Mseed(futils):
         blk=tmpblk #recast blk as list
 
     #Now decipher Opaque Header
-        charlist=[]
-        char=""
+        charlist = []
+        char = ""
         length_data_string = 0
         NumOpaqueHeaders=int(blk[7])
         fmtstr = self.fmt_order + "s"
         for i in range(NumOpaqueHeaders):
-            tmpchar=""
+            tmpchar = ""
             while tmpchar != "~":
-                tupchar=self.sunpack(fmtstr, self.infileread(1))
+                tupchar = self.sunpack(fmtstr, self.infileread(1))
                 tmpchar = str(tupchar[0])
                 if tmpchar != "~":
                     char = char + tmpchar
@@ -1365,12 +1436,12 @@ class Mseed(futils):
         """
         converts Flag String to Integer
         """
-        flagint=0
-        n=len(flagstr) - 1
+        flagint = 0
+        n = len(flagstr) - 1
         for a in flagstr:
             if int(a):
                 flagint = flagint + 2**n
-            n-=1
+            n -= 1
         return flagint
 
 #########################################################
@@ -1383,8 +1454,8 @@ class Mseed(futils):
         if varlength == num:
             return var
         elif varlength < num:
-            pad=num-varlength
-            newvar= var + SPACE*pad
+            pad = num-varlength
+            newvar = var + SPACE*pad
             return newvar
 
 
@@ -1393,14 +1464,15 @@ class Mseed(futils):
 #########################################################
 class Segy(futils):
     def __init__(self, infile):
-        self.type=self.serial=self.chan=self.time=self.rate=None
+        self.type = self.serial = self.chan = self.time = self.rate = None
         futils.__init__(self,infile)
         # self.byteorder: byte order of input file. 
         #    "big"
         #    "little"
         #    or "unknown"
         self.byteorder = self.ByteOrder()
-        # self.fmt_order: companion to self.byteorder. Format string for stuct.pack
+        # self.fmt_order: companion to self.byteorder.
+        # Format string for struct.pack
         #    ">" big endian
         #    "<" little endian
 
@@ -1456,25 +1528,25 @@ class Segy(futils):
             fmtstr = self.fmt_order + "L"
 #            chan = struct.unpack(fmtstr, self.infile.read(4))[0]
 #            print chan
-            chan=struct.unpack(fmtstr, SH[12:16])[0]
+            chan = struct.unpack(fmtstr, SH[12:16])[0]
 
 #             self.infile.seek(156)
 #             timeblock=self.infile.read(10)
             fmtstr = self.fmt_order + "HHHHH"
 #            (year,day,hour,min,sec)=struct.unpack(fmtstr, timeblock)
-            (year,day,hour,min,sec)=struct.unpack(fmtstr, SH[156:166])
+            (year, day, hour, min, sec) = struct.unpack(fmtstr, SH[156:166])
 
 #            self.infile.seek(200)
             fmtstr = self.fmt_order + "L"
 #            samp=struct.unpack(fmtstr, self.infile.read(4))[0]
 #            print samp
-            samp=struct.unpack(fmtstr, SH[200:204])[0]
+            samp = struct.unpack(fmtstr, SH[200:204])[0]
             rate = int(1/(samp/1e6))
 
 #            self.infile.seek(224)
             fmtstr = self.fmt_order + "H"
 #            serial = struct.unpack(fmtstr, self.infile.read(2))[0]
-            serial=struct.unpack(fmtstr, SH[224:226])[0]
+            serial = struct.unpack(fmtstr, SH[224:226])[0]
 
             return serial, chan, rate, year, day, hour, min, sec
 
@@ -1555,12 +1627,12 @@ if __name__ == "__main__" :
     def GetTrace(DataDir) :
         global filecnt
         stack = []
-        rwError=0
+        rwError = 0
         for k in range(len(DataDir)) :
             stack.append(DataDir[k])
         files = []
         file_list = {}
-        errcnt=0
+        errcnt = 0
         while stack :
             directory = stack.pop()
             if not os.path.isdir(directory):
@@ -1582,7 +1654,9 @@ if __name__ == "__main__" :
                             (type, serial, chan, time, rate) = newfile.idhdr()
                             length = newfile.tracelength()
     #                        length = "NULL"
-                            file_list[fullname] = (type, serial, chan, time, rate, length, newfile.ByteOrder())
+                            file_list[fullname] = (
+                                type, serial, chan, time, rate, length,
+                                newfile.ByteOrder())
                         newfile.close()
                     except Exception as e:
                         rwError+=1
@@ -1593,14 +1667,15 @@ if __name__ == "__main__" :
                             if newfile.isMseed():
                                 try:
                                     #simple test to determine if correct size file
-                                    filesize=newfile.filesize
-                                    blksize=newfile.blksize
-                                    (numblocks, odd_size)=divmod(filesize, blksize)
+                                    filesize = newfile.filesize
+                                    blksize = newfile.blksize
+                                    (numblocks, odd_size) = \
+                                        divmod(filesize, blksize)
                                     if odd_size:
-                                        rwError+=1
+                                        rwError += 1
                                         continue
                                 except Exception as e:
-                                    rwError+=1
+                                    rwError += 1
                                     continue
 
                                 type = newfile.type
@@ -1612,13 +1687,17 @@ if __name__ == "__main__" :
                                 rate = newfile.rate
                                 length = newfile.tracelength()
         #                            length = "NULL"
-                                file_list[fullname] = (type, serial, chan, time, rate, length, newfile.ByteOrder())
+                                file_list[fullname] = (
+                                    type, serial, chan, time, rate, length,
+                                    newfile.ByteOrder())
                                 newfile.close()
                         except Exception as e:
                             rwError+=1
                             pass
     #            if os.path.isdir(fullname) and not os.path.islink(fullname) :
-                if os.path.isdir(fullname) or (os.path.islink(fullname) and not os.path.isfile(fullname)):
+                if os.path.isdir(fullname) or \
+                   (os.path.islink(fullname) \
+                    and not os.path.isfile(fullname)):
                     stack.append(fullname)
         return file_list, rwError
 
@@ -1637,7 +1716,7 @@ if __name__ == "__main__" :
 #    Dirs.append(",")
     Dirs.append(".")
 #    Dirs.append("/Users/bruce/data/uniq")
-    (file_list,rwError) = GetTrace(Dirs)        
+    (file_list,rwError) = GetTrace(Dirs)
     for file in file_list :
         file_type = file_list[file][0]
         if file_type == "segy" :
diff --git a/fixhdr/fixhdr.py b/fixhdr/fixhdr.py
index 157ddc2..437db44 100755
--- a/fixhdr/fixhdr.py
+++ b/fixhdr/fixhdr.py
@@ -245,8 +245,15 @@
 # author: Derick Hess
 # Updated cookiecutter version, added call to main(), etc.
 
-# VERSION = "2018.176"
-VERSION = "Py3 version"
+################################################################
+#
+# modification
+# version: 2019.025
+# author: Lan Dam
+# convert to py3
+# bug fix: In GetStartEnd when no "Stat:Loc:Net" selected (timeid="")
+
+VERSION = "2019.025"
 
 import os, sys, string, time
 import Pmw
@@ -1629,18 +1636,18 @@ class MainWindow:
                     except StopIteration:
                         break
                     #for subkey in self.UpdateHdrDict[key].keys() :
-                    value=self.UpdateHdrDict[key][subkey]
+                    value = self.UpdateHdrDict[key][subkey]
                     if subkey == "Station_Name":
-                        Stat=value
+                        Stat = value
                         self.SetHdrDict[key][subkey]=1
                     if subkey == "Channel":
-                        Chan=value
+                        Chan = value
                         self.SetHdrDict[key][subkey]=1
                     if subkey == "Location_Code":
-                        Loc=value
+                        Loc = value
                         self.SetHdrDict[key][subkey]=1
                     if subkey == "Network_Code":
-                        Net=value
+                        Net = value
                         self.SetHdrDict[key][subkey]=1
                 ifilelist=(ifile for ifile in self.TraceDict[key])
                     #for infile in self.TraceDict[key] :
@@ -2022,7 +2029,8 @@ class MainWindow:
         err_cnt = 0
         skip_cnt = 0
 
-        for key in self.UpdateTimeDict:
+        UpdateTimeDictKeys = list(self.UpdateTimeDict.keys())
+        for key in UpdateTimeDictKeys:
             if key not in self.TraceTimeDict:
                 continue
             #capture cancel
@@ -2273,13 +2281,13 @@ class MainWindow:
             # more test just incase, this will fail if headers have been
             # change w/o updating the db
             (SeqNum, DHQual, res, Stat, Loc, Chan, Net)=hdrs[0]
-            Stat = Stat.strip().decode()
+            Stat = Stat.strip()
             if self.WildLoc.get():
                 Loc = "*"
             else:
-                Loc = Loc.strip().decode()
-            Net = Net.strip().decode()
-            key = Stat + ":" + Loc + ":" + Net
+                Loc = Loc.strip()
+            Net = Net.strip()
+            key = Stat.decode() + ":" + Loc.decode() + ":" + Net.decode()
             if key != self.TimeShiftName.get():
                 blk_err += 1
                 n += 1
@@ -2294,7 +2302,7 @@ class MainWindow:
             if startEpoch <= blkEpoch and blkEpoch <= endEpoch:
                 pass
             else:
-                n+=1
+                n += 1
                 continue
 
             oldshift = hdrs[3][4] * 0.0001
@@ -2305,14 +2313,14 @@ class MainWindow:
                 # if an old shift exists and is applied
                 if shift_applied and oldshift:
                     blkEpoch = blkEpoch + self.TSShift.get() - oldshift
-                    newshift=self.TSShift.get()
+                    newshift = self.TSShift.get()
                 # if an old shift  shift exists and is not applied
                 elif not shift_applied and oldshift:
                     blkEpoch = blkEpoch + self.TSShift.get()
                     newshift = self.TSShift.get()
                 else:
                     blkEpoch = blkEpoch + self.TSShift.get()
-                    newshift=self.TSShift.get()
+                    newshift = self.TSShift.get()
             else:
                 # if type=add (i.e. 0), apply new shift to Epoch
                 # shift value in header equals old + new shift
@@ -2510,6 +2518,9 @@ class MainWindow:
         """
 #                self.WildButton.configure(state="disabled")
         timeid = self.TimeShiftName.get()
+        if not timeid:
+            self.addTextInfoBar("No Sta:Loc:Net selected", 'orange')
+            return        
 
         # don't spend time here if time is already calculated
         # and Traces loaded
@@ -2532,11 +2543,11 @@ class MainWindow:
             if keystat == stat and keynet == net and \
                (keyloc == loc or keyloc == "*"):
                 for infile in self.TraceDict[key] :
-                    cnt+=1
+                    cnt += 1
                     if mod(cnt, 10):
                         pass
                     else:
-                        textstr="Key: " + timeid + " Examining Trace: "
+                        textstr = "Key: " + timeid + " Examining Trace: "
                         self.wait(textstr, cnt)
 
                     # at this point all files in TraceDict should be mseed
@@ -2764,15 +2775,15 @@ class MainWindow:
 
             msfile=Mseed(ifile)
             #local variables'
-            fixedhdr=msfile.fixedhdr
-            WriteFixedHdr=msfile.WriteFixedHdr
-            typenxt=msfile.typenxt
-            GetBlk=msfile.GetBlk
-            PutBlk=msfile.PutBlk
-
-            filesize=msfile.filesize
-            blksize=msfile.blksize
-            (numblocks, odd_size)=divmod(filesize, blksize)
+            fixedhdr = msfile.fixedhdr
+            WriteFixedHdr = msfile.WriteFixedHdr
+            typenxt = msfile.typenxt
+            GetBlk = msfile.GetBlk
+            PutBlk = msfile.PutBlk
+
+            filesize = msfile.filesize
+            blksize = msfile.blksize
+            (numblocks, odd_size) = divmod(filesize, blksize)
             outlist.append(ifile)
 
             blk_err=0
@@ -2788,7 +2799,7 @@ class MainWindow:
                 # block n
                 while b < numblk:
                     seekval = (n*blksize)+addseek
-                    (blktype, next)=typenxt(seekval)
+                    (blktype, next) = typenxt(seekval)
                     blklist = GetBlk(blktype, seekval)
                     if not blklist:
                         # if blockette error encountered bail and undo endian
@@ -3006,9 +3017,10 @@ class MainWindow:
 
             if c :
                 self.TimeCorListText.insert("end", """%s\n""" % key, "odd")
-                addtext = 4*SPACE + "Block Start Time" + 6*SPACE + "Cor(s)" + \
-                    8*SPACE + "Status" + 14*SPACE + "Timing Questionable"
-                self.TimeCorListText.insert("end", """%s\n""" % addtext, "odd")
+                addtext = 4*SPACE + "Block Start Time" + 6*SPACE + "Cor(s)" \
+                    + 8*SPACE + "Status" + 14*SPACE + "Timing Questionable"
+                self.TimeCorListText.insert(
+                    "end", """%s\n""" % addtext, "odd")
                 for tup in TimeDict[key]:
                     addtext = 4*SPACE + str(tup[0])
                     splen = 26 - len(addtext)
@@ -3022,8 +3034,8 @@ class MainWindow:
                 c = 0
             else :
                 self.TimeCorListText.insert("end", """%s\n""" % key)
-                addtext = 4*SPACE + "Block Start Time" + 6*SPACE + "Cor(s)" + \
-                    8*SPACE + "Status" + 14*SPACE + "Timing Questionable"
+                addtext = 4*SPACE + "Block Start Time" + 6*SPACE + "Cor(s)" \
+                    + 8*SPACE + "Status" + 14*SPACE + "Timing Questionable"
                 self.TimeCorListText.insert("end", """%s\n""" % addtext)
                 for tup in TimeDict[key]:
                     addtext = 4*SPACE + str(tup[0])
@@ -3085,7 +3097,7 @@ class MainWindow:
                             hdrs[3]
                         # has time correction been applied
                         if int(act[6]):
-                            corr="applied"
+                            corr = "applied"
                         else:
                             corr="not applied"
                         # is timing questionable flag set
@@ -3124,8 +3136,6 @@ class MainWindow:
             newvar = "0"*pad + var
             return newvar
 
-
-
 #########################################################
     def DumpUpdateDicts(self, type=""):
         """
@@ -3738,7 +3748,7 @@ command= Command(self.KillCancelTL, runvar)
                 #make sure current entries are included
                 self.UpdateHdr(self.StationName.get())
                 if self.UpdateHdrDict or self.UpdateTimeDict:
-                    outfile=open(file.get(), "w")
+                    outfile = open(file.get(), "w")
                     if self.UpdateHdrDict:
                         outfile.write("%s\n" % "# Header Changes")
                         outfile.write(
@@ -3860,7 +3870,7 @@ command= Command(self.KillCancelTL, runvar)
                 #err = "You must build a Trace db before loading template"
                 #self.addTextInfoBar(err, 'red')
                 #return
-            selection = tkFileDialog.askopenfilename\
+            selection = askopenfilename\
                 (filetypes = [("All", "*")])
         if selection:
             try:
-- 
GitLab