def get_table(datarows, types, titles): try: table = journalism.Table(datarows, types, titles) return table except: logging.exception('problem loading table') return None
def test_create_table(self): table = journalism.Table(self.rows, self.column_types, self.column_names) self.assertEqual(len(table.rows), 3) self.assertEqual(table.rows[0], [1, 4, 'a']) self.assertEqual(table.rows[1], [2, 3, 'b']) self.assertEqual(table.rows[2], [None, 2, 'c'])
def test_reject(self): table = journalism.Table(self.rows, self.column_types, self.column_names) new_table = table.reject('one', [2, None]) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 1) self.assertEqual(new_table.rows[0], [1, 4, 'a'])
def test_filter(self): table = journalism.Table(self.rows, self.column_types, self.column_names) new_table = table.filter('one', [2, None]) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 2) self.assertEqual(new_table.rows[0], [2, 3, 'b'])
def test_sort_by_reverse(self): table = journalism.Table(self.rows, self.column_types, self.column_names) new_table = table.sort_by('two', reverse=True) self.assertEqual(len(new_table.rows), 3) self.assertEqual(new_table.rows[0], [1, 4, 'a']) self.assertEqual(new_table.rows[1], [2, 3, 'b']) self.assertEqual(new_table.rows[2], [None, 2, 'c'])
def test_create_table_header(self): rows = [['one', 'two', 'three']] rows.extend(self.rows) table = journalism.Table(rows, self.column_types) self.assertEqual(table.rows[0], [1, 4, 'a']) self.assertEqual(table.rows[1], [2, 3, 'b']) self.assertEqual(table.rows[2], [None, 2, 'c'])
def test_where(self): table = journalism.Table(self.rows, self.column_types, self.column_names) new_table = table.where('one', lambda x: x is not None) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 2) self.assertEqual(new_table.rows[0], [1, 4, 'a']) self.assertEqual(new_table.rows[1], [2, 3, 'b'])
def setUp(self): self.rows = [[1, 2, 'a'], [1, 1, 3, 'b'], [None, 4, 'c'], [2, 1, 'c']] self.column_names = ['one', 'two', 'three'] self.column_types = [ journalism.IntColumn, journalism.IntColumn, journalism.TextColumn ] self.table = journalism.Table(self.rows, self.column_types, self.column_names)
def test_count(self): rows = self.rows rows.append(rows[0]) rows.append(rows[0]) table = journalism.Table(rows, self.column_types, self.column_names) self.assertEqual(table.columns['one'].count(1), 3) self.assertEqual(table.columns['one'].count(4), 0) self.assertEqual(table.columns['one'].count(None), 1)
def test_aggregate_sum_two_columns(self): table = journalism.Table(self.rows, self.column_types) new_table = table.aggregate('one', [('two', 'sum'), ('four', 'sum')]) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertEqual(new_table._column_names, ['one', 'two', 'four']) self.assertEqual(new_table.rows[0], ['a', 4, 4]) self.assertEqual(new_table.rows[1], [None, 3, 0]) self.assertEqual(new_table.rows[2], ['b', 3, 0])
def load_data(): """ Load the initial table data from a CSV. """ with open('simple.csv') as f: reader = csv.reader(f) next(reader) table = journalism.Table(reader, COLUMN_TYPES, COLUMN_NAMES) return table
def setUp(self): self.rows = [[1.1, 2.19, 'a'], [2.7, 3.42, 'b'], [None, 4.1, 'c'], [2.7, 1, 'c']] self.column_names = ['one', 'two', 'three'] self.column_types = [ journalism.FloatColumn, journalism.FloatColumn, journalism.TextColumn ] self.table = journalism.Table(self.rows, self.column_types, self.column_names)
def setUp(self): self.rows = [ ['one', 'two', 'three', 'four'], ['a', 2, 3, 4], [None, 3, 5, None], ['a', 2, 4, None], ['b', 3, 4, None] ] self.column_types = [journalism.TextColumn, journalism.IntColumn, journalism.IntColumn, journalism.IntColumn] self.table = journalism.Table(self.rows, self.column_types)
def test_sort_by_cmp(self): table = journalism.Table(self.rows, self.column_types, self.column_names) def func(a, b): return -cmp(a, b) new_table = table.sort_by('two', cmp=func) self.assertEqual(len(new_table.rows), 3) self.assertEqual(new_table.rows[0], [1, 4, 'a']) self.assertEqual(new_table.rows[1], [2, 3, 'b']) self.assertEqual(new_table.rows[2], [None, 2, 'c'])
def test_sort_by(self): table = journalism.Table(self.rows, self.column_types, self.column_names) new_table = table.sort_by('two') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertEqual(new_table.rows[0], [None, 2, 'c']) self.assertEqual(new_table.rows[1], [2, 3, 'b']) self.assertEqual(new_table.rows[2], [1, 4, 'a']) # Verify old table not changed self.assertEqual(table.rows[0], [1, 4, 'a']) self.assertEqual(table.rows[1], [2, 3, 'b']) self.assertEqual(table.rows[2], [None, 2, 'c'])
def test_counts(self): rows = self.rows rows.append(rows[0]) rows.append(rows[0]) table = journalism.Table(rows, self.column_types, self.column_names) new_table = table.columns['one'].counts() self.assertIsNot(new_table, table) self.assertEqual(len(new_table.columns), 2) self.assertEqual(len(new_table.rows), 3) self.assertEqual(new_table.rows[0], [1, 3]) self.assertEqual(new_table.rows[1], [2, 1]) self.assertEqual(new_table.rows[2], [None, 1]) self.assertEqual(new_table.columns['one'], [1, 2, None]) self.assertEqual(new_table.columns['count'], [3, 1, 1])
def test_validate_table_fails(self): column_types = [journalism.IntColumn, journalism.IntColumn, journalism.IntColumn] with self.assertRaises(journalism.ColumnValidationError): journalism.Table(self.rows, column_types, self.column_names, validate=True)
def get_table(new_arr, types, titles): try: table = journalism.Table(new_arr, types, titles) return table except Exception as e: print e
for v in example_row: value_type = ctype_text[v.ctype] if value_type == 'text': types.append(text_type) elif value_type == 'number': types.append(number_type) elif value_type == 'xldate': types.append(date_type) else: types.append(text_type) columns = zip(titles, types) columns try: table = journalism.Table(country_rows, types, titles) #Throws error for conversion except: pass cleaned_rows = [] def float_to_str(val): if isinstance(val, float): return str(val) elif isinstance(val, (str, unicode)): print 'unicode is', val.encode('utf-8') return val.encode('ascii', errors='replace').strip() return val
def test_aggregate_sum_invalid(self): table = journalism.Table(self.rows, self.column_types) with self.assertRaises(journalism.UnsupportedOperationError): table.aggregate('two', [('one', 'sum')])
def test_validate_table(self): journalism.Table(self.rows, self.column_types, self.column_names, validate=True)