StringTypes has gone
[plcapi.git] / PLC / Timestamp.py
index 149c6e5..faad925 100644 (file)
@@ -5,7 +5,6 @@
 # natively marshalled over xmlrpc
 #
 
-from types import StringTypes
 import time, calendar
 import datetime
 
@@ -59,12 +58,13 @@ class Timestamp:
         Returns a GMT timestamp string suitable to feed SQL.
         """
 
-        if not timezone: output_format = Timestamp.sql_format
-        else:            output_format = Timestamp.sql_format_utc
+        output_format = (Timestamp.sql_format_utc if timezone
+                         else Timestamp.sql_format)
 
-        if Timestamp.debug: print('sql_validate, in:',input, end=' ')
-        if isinstance(input, StringTypes):
-            sql=''
+        if Timestamp.debug:
+            print('sql_validate, in:', input, end=' ')
+        if isinstance(input, str):
+            sql = ''
             # calendar.timegm() is the inverse of time.gmtime()
             for time_format in Timestamp.input_formats:
                 try:
@@ -72,11 +72,12 @@ class Timestamp:
                     sql = time.strftime(output_format, time.gmtime(timestamp))
                     break
                 # wrong format: ignore
-                except ValueError: pass
+                except ValueError:
+                    pass
             # could not parse it
             if not sql:
                 raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input,Timestamp.input_formats))
-        elif isinstance (input,(int,float)):
+        elif isinstance(input, (int, float)):
             try:
                 timestamp = int(input)
                 sql = time.strftime(output_format, time.gmtime(timestamp))
@@ -98,7 +99,7 @@ class Timestamp:
 
 
     @staticmethod
-    def cast_long (input):
+    def cast_long(input):
         """
         Translates input timestamp as a unix timestamp.
 
@@ -106,20 +107,24 @@ class Timestamp:
         00:00:00 GMT), a string (in one of the supported input formats above).
 
         """
-        if Timestamp.debug: print('cast_long, in:',input, end=' ')
-        if isinstance(input, StringTypes):
-            timestamp=0
+        if Timestamp.debug:
+            print('cast_long, in:', input, end=' ')
+        if isinstance(input, str):
+            timestamp = 0
             for time_format in Timestamp.input_formats:
                 try:
-                    result=calendar.timegm(time.strptime(input, time_format))
-                    if Timestamp.debug: print('out:',result)
+                    result = calendar.timegm(time.strptime(input, time_format))
+                    if Timestamp.debug:
+                        print('out:', result)
                     return result
                 # wrong format: ignore
-                except ValueError: pass
-            raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input,Timestamp.input_formats))
-        elif isinstance (input,(int,float)):
-            result=int(input)
-            if Timestamp.debug: print('out:',result)
+                except ValueError:
+                    pass
+            raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input, Timestamp.input_formats))
+        elif isinstance(input, (int, float)):
+            result = int(input)
+            if Timestamp.debug:
+                print('out:',result)
             return result
         else:
             raise PLCInvalidArgument("Timestamp %r - unsupported type %r"%(input,type(input)))
@@ -136,11 +141,13 @@ class Duration:
     @staticmethod
     def to_string(duration):
         result=[]
-        left=duration
-        (days,left) = divmod(left,Duration.DAY)
-        if days:    result.append("%d d)"%td.days)
-        (hours,left) = divmod (left,Duration.HOUR)
-        if hours:   result.append("%d h"%hours)
+        left = duration
+        (days, left) = divmod(left, Duration.DAY)
+        if days:
+            result.append("%d d)"%td.days)
+        (hours, left) = divmod (left, Duration.HOUR)
+        if hours:
+            result.append("%d h"%hours)
         (minutes, seconds) = divmod (left, Duration.MINUTE)
         if minutes: result.append("%d m"%minutes)
         if seconds: result.append("%d s"%seconds)
@@ -151,6 +158,6 @@ class Duration:
     def validate (duration):
         # support seconds only for now, works for int/long/str
         try:
-            return int (duration)
+            return int(duration)
         except:
             raise PLCInvalidArgument("Could not parse duration %r"%duration)