Use specific time formatting instead of locale '%c'
[htsworkflow.git] / htsworkflow / pipelines / gerald.py
index eb37cc4c853af8f4d13bbadc102d4b1a8c700436..03c7d10e4b15ad9c859387d214361b4bb88d8171 100644 (file)
@@ -104,7 +104,7 @@ class Gerald(Alignment):
 
         timestamp = self.tree.findtext('ChipWideRunParameters/TIME_STAMP')
         if timestamp is not None:
-            epochstamp = time.mktime(time.strptime(timestamp, '%c'))
+            epochstamp = time.mktime(time.strptime(timestamp))
             return datetime.fromtimestamp(epochstamp)
         return super(Gerald, self)._get_date()
     date = property(_get_date)
@@ -187,7 +187,10 @@ class CASAVA(Alignment):
             return None
         time_element = self.tree.xpath('TIME_STAMP')
         if len(time_element) == 1:
-            return datetime.strptime(time_element[0].text, '%c')
+           timetuple = time.strptime(
+               time_element[0].text.strip(),
+               "%a %d %b %Y %I:%M:%S %p")
+           return datetime(*timetuple[:6])
         return super(CASAVA, self)._get_date()
     date = property(_get_date)
 
@@ -439,7 +442,10 @@ class LaneSpecificRunParameters(collections.MutableMapping):
             if k.matches(lookup_key):
                 results.append(k)
         if len(results) > 1:
-            raise ValueError("More than one key matched query %s" % (str(lookup_key),))
+            errmsg = "Key %s matched multiple keys: %s"
+            raise ValueError(errmsg % (str(lookup_key),
+                                       ",".join((str(x) for x in results))))
+
         elif len(results) == 1:
             return results[0]
         else: