]> git.parisson.com Git - timeside.git/commitdiff
timeside/analyzer/core.py: add AnalyzerResultContainer
authorPaul Brossier <piem@piem.org>
Sun, 14 Apr 2013 20:00:30 +0000 (15:00 -0500)
committerPaul Brossier <piem@piem.org>
Sun, 14 Apr 2013 20:00:30 +0000 (15:00 -0500)
tests/test_AnalyzerResult.py
timeside/analyzer/core.py

index b9e4be2c00bddb19d44fc756e1e4e3a048a881c0..40c1cec1101d8d4e354dad663335885e4b77948f 100755 (executable)
@@ -43,9 +43,9 @@ class TestAnalyzerResultNumpy(TestAnalyzerResult):
     """ test AnalyzerResult numpy serialize """
 
     def tearDown(self):
-        results = [self.result]
-        r_numpy = data_to_numpy(results, '/tmp/t.npy')
-        d_numpy = data_from_numpy('/tmp/t.npy')
+        results = AnalyzerResultContainer([self.result])
+        r_numpy = results.to_numpy('/tmp/t.npy')
+        d_numpy = results.from_numpy('/tmp/t.npy')
         if verbose:
             print '%15s' % 'from numpy:',
             print d_numpy
@@ -55,12 +55,12 @@ class TestAnalyzerResultNumpy(TestAnalyzerResult):
 class TestAnalyzerResultYaml(TestAnalyzerResult):
     """ test AnalyzerResult yaml serialize """
     def tearDown(self):
-        results = [self.result]
-        r_yaml = data_to_yaml(results)
+        results = AnalyzerResultContainer([self.result])
+        r_yaml = results.to_yaml()
         if verbose:
             print 'to yaml:'
             print r_yaml
-        d_yaml = data_from_yaml(r_yaml)
+        d_yaml = results.from_yaml(r_yaml)
         if verbose:
             print '%15s' % 'from yaml:',
             print d_yaml
@@ -70,13 +70,13 @@ class TestAnalyzerResultYaml(TestAnalyzerResult):
 class TestAnalyzerResultXml(TestAnalyzerResult):
     """ test AnalyzerResult xml serialize """
     def tearDown(self):
-        results = [self.result]
-        r_xml = data_to_xml(results)
+        results = AnalyzerResultContainer([self.result])
+        r_xml = results.to_xml()
         if verbose:
             print 'to xml:'
             print r_xml
 
-        d_xml = data_from_xml(r_xml)
+        d_xml = results.from_xml(r_xml)
         if verbose:
             print '%15s' % 'from xml:',
             print d_xml
@@ -87,13 +87,13 @@ class TestAnalyzerResultXml(TestAnalyzerResult):
 class TestAnalyzerResultJson(TestAnalyzerResult):
     """ test AnalyzerResult json serialize """
     def tearDown(self):
-        results = [self.result]
-        r_json = data_to_json(results)
+        results = AnalyzerResultContainer([self.result])
+        r_json = results.to_json()
         if verbose:
             print 'to json:'
             print r_json
 
-        d_json = data_from_json(r_json)
+        d_json = results.from_json(r_json)
         if verbose:
             print d_json
             print '%15s' % 'from yaml:',
index e0c1c45cbd09032ac67b6fbcca025cd418a85088..d8756044c063dba3b770f082bc85c22b2963e63c 100644 (file)
@@ -19,6 +19,7 @@
 
 # Authors:
 #   Guillaume Pellerin <yomguy at parisson.com>
+#   Paul Brossier <piem@piem.org>
 
 class AnalyzerResult(object):
 
@@ -43,72 +44,86 @@ class AnalyzerResult(object):
                 return False
         return True
 
-def data_to_xml(data_list):
-    import xml.dom.minidom
-    doc = xml.dom.minidom.Document()
-    root = doc.createElement('telemeta')
-    doc.appendChild(root)
-    for data in data_list:
-        node = doc.createElement('data')
-        node.setAttribute('name', data.name)
-        node.setAttribute('id', data.id)
-        node.setAttribute('unit', data.unit)
-        node.setAttribute('value', str(data.value))
-        if type(data.value) != type(str()) and type(data.value) != type(unicode()):
-            node.setAttribute('str', '0')
-        root.appendChild(node)
-    return xml.dom.minidom.Document.toprettyxml(doc)
-
-def data_from_xml(xml_string):
-    import xml.dom.minidom
-    doc = xml.dom.minidom.parseString(xml_string)
-    root = doc.getElementsByTagName('telemeta')[0]
-    results = []
-    for child in root.childNodes:
-        if child.nodeType != child.ELEMENT_NODE: continue
-        child_dict = {}
-        for a in ['name', 'id', 'unit', 'value']:
-            child_dict[a] = str(child.getAttribute(a))
-        if child.getAttribute('str') == '0':
-            try:
-                child_dict['value'] = eval(child_dict['value'])
-            except Exception, e:
-                print e
-        results.append(child_dict)
-    return results
-
-def data_to_json(data_list):
-    import simplejson as json
-    data_strings = []
-    for data in data_list:
-        data_dict = {}
-        for a in ['name', 'id', 'unit', 'value']:
-            data_dict[a] = getattr(data,a)
-        data_strings.append(data_dict)
-    return json.dumps(data_strings)
-
-def data_from_json(json_str):
-    import simplejson as json
-    return json.loads(json_str)
-
-def data_to_yaml(data_list):
-    import yaml
-    data_strings = []
-    for f in data_list:
-        f_dict = {}
-        for a in ['name', 'id', 'unit', 'value']:
-            f_dict[a] = getattr(f,a)
-        data_strings.append(f_dict)
-    return yaml.dump(data_strings, default_flow_style=False)
-
-def data_from_yaml(yaml_str):
-    import yaml
-    return yaml.load(yaml_str)
-
-def data_to_numpy(data_list, output_file = None):
-    import numpy
-    numpy.save(output_file, data_list)
-
-def data_from_numpy(input_file):
-    import numpy
-    return numpy.load(input_file)
+class AnalyzerResultContainer(object):
+
+    def __init__(self, analyzer_results):
+        self.results = analyzer_results
+
+    def __getitem__(self, i):
+        return self.results[i]
+
+    def __len__(self):
+        return len(self.results)
+
+    def to_xml(self, data_list = None):
+        if data_list == None: data_list = self.results
+        import xml.dom.minidom
+        doc = xml.dom.minidom.Document()
+        root = doc.createElement('telemeta')
+        doc.appendChild(root)
+        for data in data_list:
+            node = doc.createElement('data')
+            node.setAttribute('name', data.name)
+            node.setAttribute('id', data.id)
+            node.setAttribute('unit', data.unit)
+            node.setAttribute('value', str(data.value))
+            if type(data.value) != type(str()) and type(data.value) != type(unicode()):
+                node.setAttribute('str', '0')
+            root.appendChild(node)
+        return xml.dom.minidom.Document.toprettyxml(doc)
+
+    def from_xml(self, xml_string):
+        import xml.dom.minidom
+        doc = xml.dom.minidom.parseString(xml_string)
+        root = doc.getElementsByTagName('telemeta')[0]
+        results = []
+        for child in root.childNodes:
+            if child.nodeType != child.ELEMENT_NODE: continue
+            child_dict = {}
+            for a in ['name', 'id', 'unit', 'value']:
+                child_dict[a] = str(child.getAttribute(a))
+            if child.getAttribute('str') == '0':
+                try:
+                    child_dict['value'] = eval(child_dict['value'])
+                except Exception, e:
+                    print e
+            results.append(child_dict)
+        return results
+
+    def to_json(self, data_list = None):
+        if data_list == None: data_list = self.results
+        import simplejson as json
+        data_strings = []
+        for data in data_list:
+            data_dict = {}
+            for a in ['name', 'id', 'unit', 'value']:
+                data_dict[a] = getattr(data,a)
+            data_strings.append(data_dict)
+        return json.dumps(data_strings)
+
+    def from_json(self, json_str):
+        import simplejson as json
+        return json.loads(json_str)
+
+    def to_yaml(self, data_list = None):
+        if data_list == None: data_list = self.results
+        import yaml
+        data_strings = []
+        for f in data_list:
+            f_dict = {}
+            for a in ['name', 'id', 'unit', 'value']:
+                f_dict[a] = getattr(f,a)
+            data_strings.append(f_dict)
+        return yaml.dump(data_strings, default_flow_style=False)
+
+    def from_yaml(self, yaml_str):
+        import yaml
+        return yaml.load(yaml_str)
+
+    def to_numpy(data_list, output_file = None):
+        import numpy
+        numpy.save(output_file, data_list)
+
+    def from_numpy(self, input_file):
+        import numpy
+        return numpy.load(input_file)