示例#1
0
def printDataGroupedByProjects(data):

    if not data.has_key("issue"):
        print "data doesn't have key issue"

    project = {}

    p = Table(
        # ['project' , ('issue_id',int) , 'issue_subject','issue']
        ['project', 'tracker', ('issue_id', int),
         'issue_status', 'issue_subject', 'issue_description']
    )

    for issue in data['issue']:
        project_name = issue["project"]["@name"]
        issue_id = issue["id"]
        issue_status = issue["status"]["@name"]
        issue_subject = str((issue["subject"])).strip()
        tracker = issue["tracker"]["@name"]
        issue_description = issue["description"]
        # p.append([project_name,issue_id,issue_subject,issue["description"]])
        p.append([project_name, tracker, issue_id, issue_status,
                  issue_subject, issue_description])

    p.to_csv(open("issues.csv", "w"))
示例#2
0
class TestExport(unittest.TestCase, TableTestMixin):

    def setUp(self):
        self.s = [
            ('A', int),
            ('B', float),
            ('C', str),
        ]
        self.t = Table(self.s)

        self.t.extend([
            [1, 0.0, 'x'],
            [2, 5.0, 'y'],
            [3, 10.0, 'z'],
        ])

    def test_export_csv(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file)
        output_file.seek(0)
        reader = csv.DictReader(output_file)
        row = next(reader)
        self.assertEqual(row, {"A":"1", "B":"0.0", "C":"x"})

    def test_export_csv_with_dialect(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file, dialect="excel")
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel")
        row = next(reader)
        self.assertEqual(row, {"A":"1", "B":"0.0", "C":"x"})

    def test_export_csv_with_dialect_types(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file, dialect="excel", descriptions=True)
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel")

        self.assertEqual(next(reader), {"A (int)":"1", "B (float)":"0.0", "C (str)":"x"})

    def test_simple_expand(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C)
        )
        self.assertEqual(list(t.D), [1, 1, 1])


    def test_derived_columns_are_iterable(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C)
        )
        for _ in t.D:
            pass

    def test_derived_columns_can_be_printed(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C)
        )
        str(t.D)
        repr(t.D)

    def test_derived_columns_have_descriptions(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C)
        )
        self.assertEqual(t.D.description, "D (int)")

    def test_that_float_columns_have_descriptions(self):
        t = self.t.expand(
            name='D',
            input_columns=['A', 'B', 'C'],
            fn=lambda a,b,c: float(len(c) + a + b),
            col_type=float
        )
        self.assertEqual(t.D.description, "D (float)")

    def test_simple_expand_and_materialize(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C) + 1
        ).copy()

    def test_export_csv_with_dialect_tab(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file, dialect="excel-tab")
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel-tab")
        row = next(reader)
        self.assertEqual(row, {"A":"1", "B":"0.0", "C":"x"})


    def test_simple_expand_and_slice(self):
        t = self.t.expand(
            name='D',
            col_type=int,
            input_columns=['C'],
            fn=lambda C: len(C) + 1
        )[1:2]

        expected = [
            (2, 5.0, 'y', 2),
        ]

        self.assertEqual(list(t), expected)
示例#3
0
class TestExport(unittest.TestCase, TableTestMixin):
    def setUp(self):
        self.s = [
            ('A', int),
            ('B', float),
            ('C', str),
        ]
        self.t = Table(self.s)

        self.t.extend([
            [1, 0.0, 'x'],
            [2, 5.0, 'y'],
            [3, 10.0, 'z'],
        ])

    def test_export_csv(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file)
        output_file.seek(0)
        reader = csv.DictReader(output_file)
        row = next(reader)
        self.assertEqual(row, {"A": "1", "B": "0.0", "C": "x"})

    def test_export_csv_with_dialect(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file, dialect="excel")
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel")
        row = next(reader)
        self.assertEqual(row, {"A": "1", "B": "0.0", "C": "x"})

    def test_export_csv_with_dialect_types(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file,
                      dialect="excel",
                      descriptions=True)
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel")

        self.assertEqual(next(reader), {
            "A (int)": "1",
            "B (float)": "0.0",
            "C (str)": "x"
        })

    def test_simple_expand(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C))
        self.assertEqual(list(t.D), [1, 1, 1])

    def test_derived_columns_are_iterable(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C))
        for _ in t.D:
            pass

    def test_derived_columns_can_be_printed(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C))
        str(t.D)
        repr(t.D)

    def test_derived_columns_have_descriptions(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C))
        self.assertEqual(t.D.description, "D (int)")

    def test_that_float_columns_have_descriptions(self):
        t = self.t.expand(name='D',
                          input_columns=['A', 'B', 'C'],
                          fn=lambda a, b, c: float(len(c) + a + b),
                          col_type=float)
        self.assertEqual(t.D.description, "D (float)")

    def test_simple_expand_and_materialize(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C) + 1).copy()

    def test_export_csv_with_dialect_tab(self):
        output_file = StringIO()
        self.t.to_csv(output_file=output_file, dialect="excel-tab")
        output_file.seek(0)
        reader = csv.DictReader(output_file, dialect="excel-tab")
        row = next(reader)
        self.assertEqual(row, {"A": "1", "B": "0.0", "C": "x"})

    def test_simple_expand_and_slice(self):
        t = self.t.expand(name='D',
                          col_type=int,
                          input_columns=['C'],
                          fn=lambda C: len(C) + 1)[1:2]

        expected = [
            (2, 5.0, 'y', 2),
        ]

        self.assertEqual(list(t), expected)