Make the runfolder splitting patch a bit more python 2.4 compatible
authorDiane Trout <diane@caltech.edu>
Fri, 9 May 2008 03:51:30 +0000 (03:51 +0000)
committerDiane Trout <diane@caltech.edu>
Fri, 9 May 2008 03:51:30 +0000 (03:51 +0000)
Python2.4 doesn't have datetime.strptime, nor does it have
a built in copy of ElementTree in the xml.etree namespace,

gaworkflow/pipeline/bustard.py
gaworkflow/pipeline/firecrest.py
gaworkflow/pipeline/gerald.py
gaworkflow/pipeline/test/test_runfolder.py
gaworkflow/util/test/test_ethelp.py

index 221617e448c5e5bf908c53e1d4a4387da99c7e38..5a7a1f357bee1e42d74f1c5b8d87bbd8e955c982 100644 (file)
@@ -1,5 +1,5 @@
 
-from datetime import datetime
+from datetime import date
 from glob import glob
 import logging
 import os
@@ -66,7 +66,7 @@ class Bustard(object):
 
     def __init__(self, xml=None):
         self.version = None
-        self.date = datetime.now()
+        self.date = date.today()
         self.user = None
         self.phasing = {}
 
@@ -109,7 +109,7 @@ class Bustard(object):
             if element.tag == Bustard.SOFTWARE_VERSION:
                 self.version = element.text
             elif element.tag == Bustard.DATE:
-                self.date = datetime.fromtimestamp(float(element.text))
+                self.date = date.fromtimestamp(float(element.text))
             elif element.tag == Bustard.USER:
                 self.user = element.text
             elif element.tag == Bustard.PARAMETERS:
@@ -130,7 +130,8 @@ def bustard(pathname):
     groups = name.split("_")
     version = re.search(VERSION_RE, groups[0])
     b.version = version.group(1)
-    b.date = datetime.strptime(groups[1], EUROPEAN_STRPTIME)
+    t = time.strptime(groups[1], EUROPEAN_STRPTIME)
+    b.date = date(*t[0:3])
     b.user = groups[2]
     paramfiles = glob(os.path.join(pathname, "params?.xml"))
     for paramfile in paramfiles:
index a0a30b394709190bc1ce3cc89d060a45edc847a5..dd06aecb8d2a5f2f60660d3e52c983e4bcd22360 100644 (file)
@@ -7,7 +7,7 @@ fromxml - Firecrest factory function initalized from an xml dump from
           the Firecrest object.
 """
 
-from datetime import datetime
+from datetime import date
 import os
 import re
 import time
@@ -33,7 +33,7 @@ class Firecrest(object):
         self.start = None
         self.stop = None
         self.version = None
-        self.date = datetime.now()
+        self.date = date.today()
         self.user = None
         self.matrix = None
 
@@ -82,7 +82,7 @@ class Firecrest(object):
             elif element.tag == Firecrest.STOP:
                 self.stop = int(element.text)
             elif element.tag == Firecrest.DATE:
-                self.date = datetime.fromtimestamp(float(element.text))
+                self.date = date.fromtimestamp(float(element.text))
             elif element.tag == Firecrest.USER:
                 self.user = element.text
             elif element.tag == Firecrest.MATRIX:
@@ -107,7 +107,8 @@ def firecrest(pathname):
     version = re.search(VERSION_RE, groups[1])
     f.version = (version.group(1))
     # datetime
-    f.date = datetime.strptime(groups[2], EUROPEAN_STRPTIME)
+    t = time.strptime(groups[2], EUROPEAN_STRPTIME)
+    f.date = date(*t[0:3])
     # username
     f.user = groups[3]
 
index 1f15eea08a85620ec0e9578c12762ceec987bc80..990874ce1076bb65cfe44a79beff3f615e36fb4f 100644 (file)
@@ -102,7 +102,8 @@ class Gerald(object):
         if self.tree is None:
             return datetime.today()
         timestamp = self.tree.findtext('ChipWideRunParameters/TIME_STAMP')
-        return datetime.strptime(timestamp, '%c')
+        epochstamp = time.mktime(time.strptime(timestamp, '%c'))
+        return datetime.fromtimestamp(epochstamp)
     date = property(_get_date)
 
     def _get_time(self):
index d4c2fd0fe4bc5e371e311411a9aca7322ab3706a..5cd6ac5904339efb6ee862bbd7af11f363af1dfd 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from datetime import datetime
+from datetime import datetime, date
 import os
 import tempfile
 import shutil
@@ -408,7 +408,7 @@ class RunfolderTests(unittest.TestCase):
         self.failUnlessEqual(f.start, 1)
         self.failUnlessEqual(f.stop, 33)
         self.failUnlessEqual(f.user, 'diane')
-        self.failUnlessEqual(f.date, datetime(2008,4,12))
+        self.failUnlessEqual(f.date, date(2008,4,12))
 
         xml = f.get_elements()
         # just make sure that element tree can serialize the tree
@@ -427,7 +427,7 @@ class RunfolderTests(unittest.TestCase):
         """
         b = bustard.bustard(self.bustard_dir)
         self.failUnlessEqual(b.version, '1.8.28')
-        self.failUnlessEqual(b.date,    datetime(2008,4,12))
+        self.failUnlessEqual(b.date,    date(2008,4,12))
         self.failUnlessEqual(b.user,    'diane')
         self.failUnlessEqual(len(b.phasing), 8)
         self.failUnlessAlmostEqual(b.phasing[8].phasing, 0.0099)
index 46f81a1f6161774d507858e1d5ed4d189005592a..98df5184b79c4f46d5474657690fabf4af51a431 100644 (file)
@@ -1,7 +1,11 @@
 import os
 import unittest
 
-from xml.etree import ElementTree
+try:
+  from xml.etree import ElementTree
+except ImportError, e:
+  from elementtree import ElementTree
+
 from gaworkflow.util.ethelp import indent, flatten
 
 class testETHelper(unittest.TestCase):