From e150f87924f8d29549221d3c1fb781c7e0a11646 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Fri, 9 May 2008 03:51:30 +0000 Subject: [PATCH] Make the runfolder splitting patch a bit more python 2.4 compatible 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 | 9 +++++---- gaworkflow/pipeline/firecrest.py | 9 +++++---- gaworkflow/pipeline/gerald.py | 3 ++- gaworkflow/pipeline/test/test_runfolder.py | 6 +++--- gaworkflow/util/test/test_ethelp.py | 6 +++++- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gaworkflow/pipeline/bustard.py b/gaworkflow/pipeline/bustard.py index 221617e..5a7a1f3 100644 --- a/gaworkflow/pipeline/bustard.py +++ b/gaworkflow/pipeline/bustard.py @@ -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: diff --git a/gaworkflow/pipeline/firecrest.py b/gaworkflow/pipeline/firecrest.py index a0a30b3..dd06aec 100644 --- a/gaworkflow/pipeline/firecrest.py +++ b/gaworkflow/pipeline/firecrest.py @@ -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] diff --git a/gaworkflow/pipeline/gerald.py b/gaworkflow/pipeline/gerald.py index 1f15eea..990874c 100644 --- a/gaworkflow/pipeline/gerald.py +++ b/gaworkflow/pipeline/gerald.py @@ -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): diff --git a/gaworkflow/pipeline/test/test_runfolder.py b/gaworkflow/pipeline/test/test_runfolder.py index d4c2fd0..5cd6ac5 100644 --- a/gaworkflow/pipeline/test/test_runfolder.py +++ b/gaworkflow/pipeline/test/test_runfolder.py @@ -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) diff --git a/gaworkflow/util/test/test_ethelp.py b/gaworkflow/util/test/test_ethelp.py index 46f81a1..98df518 100644 --- a/gaworkflow/util/test/test_ethelp.py +++ b/gaworkflow/util/test/test_ethelp.py @@ -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): -- 2.30.2