mpkato/mobileclick

View on GitHub
mobileclick/iunit.py

Summary

Maintainability
D
2 days
Test Coverage
# -*- coding: utf-8 -*-
import csv
from .measurable import Measurable
from xml.etree.ElementTree import Element

class Iunit(Measurable):

    def __init__(self, qid, uid, body):
        self.qid = qid
        self.uid = uid
        self.body = body

    def output(self):
        '''
        Output format for submission
        '''
        return '\t'.join((self.qid, self.uid))

    def to_xml(self):
        return Element('iunit', uid=self.uid)

    @classmethod
    def read(cls, filepath):
        '''
        Read iUnits from a tsv file
        '''
        result = []
        with open(filepath, 'rb') as f:
            reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
            for row in reader:
                iunit = Iunit.load(row)
                result.append(iunit)
        return result

    @classmethod
    def load(cls, row):
        '''
        Load an iUnit from a tuple
        '''
        if len(row) != 3:
            raise Exception("Invalid line: %s" % str(row))
        qid, uid, body = row
        return Iunit(qid, uid, body)