Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.assertRowNames(new_table, ['a', None])
def test_chain_select_where(self):
table = Table(self.rows, self.column_names, self.column_types)
new_table = table.select(('one', 'two')).where(lambda r: r['two'] == 3)
self.assertIsNot(new_table, table)
self.assertColumnNames(new_table, self.column_names[:2])
self.assertColumnTypes(new_table, [Number, Number])
self.assertRows(new_table, [
self.rows[1][:2],
])
class TestCSV(AgateTestCase):
def setUp(self):
self.rows = (
(1, 'a', True, '11/4/2015', '11/4/2015 12:22 PM', '4:15'),
(2, u'👍', False, '11/5/2015', '11/4/2015 12:45 PM', '6:18'),
(None, 'b', None, None, None, None)
)
self.column_names = [
'number', 'text', 'boolean', 'date', 'datetime', 'timedelta'
]
self.column_types = [
Number(), Text(), Boolean(), Date(), DateTime(), TimeDelta()
]
def test_from_csv(self):
#!/usr/bin/env python
# -*- coding: utf8 -*-
import six
from agate import Table
from agate.data_types import *
from agate.testcase import AgateTestCase
class TestPrintTable(AgateTestCase):
def setUp(self):
self.rows = (
('1.7', 2000, 'a'),
('11.18', None, None),
('0', 1, 'c')
)
self.number_type = Number()
self.international_number_type = Number(locale='de_DE')
self.text_type = Text()
self.column_names = ['one', 'two', 'three']
self.column_types = [
self.number_type,
self.international_number_type,
self.text_type
return [chr(ord('a') + c) for c in range(count)]
homogenized = table.homogenize(['one', 'three'], zip(range(3), column_two(3)), default_row)
rows = (
(0, 4, 'a'),
(1, 3, 'b'),
(None, 2, 'c'),
(2, 4, 'c')
)
self.assertColumnNames(homogenized, self.column_names)
self.assertColumnTypes(homogenized, [Number, Number, Text])
self.assertRows(homogenized, rows)
class TestMerge(AgateTestCase):
def setUp(self):
self.rows = (
(1, 4, 'a'),
(2, 3, 'b'),
(None, 2, 'c')
)
self.number_type = Number()
self.text_type = Text()
self.column_names = ['one', 'two', 'three']
self.column_types = [self.number_type, self.number_type, self.text_type]
def test_merge(self):
table_a = Table(self.rows, self.column_names, self.column_types)
table_b = Table(self.rows, self.column_names)
self.assertEqual(self.table.aggregate(Count()), 3)
def test_sum(self):
self.assertEqual(self.table.aggregate(Sum('two')), 9)
def test_multiple(self):
self.assertSequenceEqual(
self.table.aggregate([
Count(),
Sum('two')
]),
[3, 9]
)
class TestCompute(AgateTestCase):
def setUp(self):
self.rows = (
('a', 2, 3, 4),
(None, 3, 5, None),
('a', 2, 4, None),
('b', 3, 6, None)
)
self.number_type = Number()
self.text_type = Text()
self.column_names = [
'one', 'two', 'three', 'four'
]
self.column_types = [
self.text_type, self.number_type, self.number_type, self.number_type
self.assertEqual(tableset.key_name, 'group')
self.assertIn(True, tableset.keys())
self.assertIn(False, tableset.keys())
self.assertSequenceEqual(tableset[True].columns['one'], ('a', 'a', 'b'))
self.assertSequenceEqual(tableset[False].columns['one'], (None,))
def test_group_by_bad_column(self):
table = Table(self.rows, self.column_names, self.column_types)
with self.assertRaises(KeyError):
table.group_by('bad')
class TestAggregate(AgateTestCase):
def setUp(self):
self.rows = (
(1, 4, 'a'),
(2, 3, 'b'),
(None, 2, u'👍')
)
self.number_type = Number()
self.text_type = Text()
self.column_names = ['one', 'two', 'three']
self.column_types = [self.number_type, self.number_type, self.text_type]
self.table = Table(self.rows, self.column_names, self.column_types)
def test_count(self):
pivot_table = table.pivot('gender', 'color', computation=Percent('Count', total=8))
pivot_table.print_table(output=sys.stdout)
pivot_rows = (
('male', Decimal(3) / Decimal(8) * Decimal(100), 0),
('female', Decimal(1) / Decimal(8) * Decimal(100), Decimal(2) / Decimal(8) * Decimal(100)),
)
self.assertColumnNames(pivot_table, ['gender', 'blue', 'green'])
self.assertColumnTypes(pivot_table, [Text, Number, Number])
self.assertRows(pivot_table, pivot_rows)
class TestNormalize(AgateTestCase):
def setUp(self):
self.rows = (
(1, 'c', 4, 'a'),
(2, 'e', 3, 'b'),
(None, 'g', 2, 'c')
)
self.number_type = Number()
self.text_type = Text()
self.column_names = ['one', 'two', 'three', 'four']
self.column_types = [self.number_type, self.text_type, self.number_type, self.text_type]
def test_normalize(self):
table = Table(self.rows, self.column_names, self.column_types)
def test_denormalize_column_type_tester(self):
table = Table(self.rows, self.column_names, self.column_types)
normalized_table = table.denormalize(None, 'property', 'value', column_types=TypeTester(force={'gender': Text()}))
# NB: value has been overwritten
normal_rows = (
('male', 24),
)
self.assertRows(normalized_table, normal_rows)
self.assertColumnNames(normalized_table, ['gender', 'age'])
self.assertColumnTypes(normalized_table, [Text, Number])
class TestData(AgateTestCase):
def setUp(self):
self.rows = (
(1, 4, 'a'),
(2, 3, 'b'),
(None, 2, 'c')
)
self.number_type = Number()
self.text_type = Text()
self.column_names = ['one', 'two', 'three']
self.column_types = [self.number_type, self.number_type, self.text_type]
def test_data_immutable(self):
rows = [
[1, 4, 'a'],
#!/usr/bin/env python
# -*- coding: utf8 -*-
try:
from cdecimal import Decimal
except ImportError: # pragma: no cover
from decimal import Decimal
from agate import Table
from agate.data_types import *
from agate.testcase import AgateTestCase
class TestBins(AgateTestCase):
def setUp(self):
self.number_type = Number()
self.column_names = ['number']
self.column_types = [self.number_type]
def test_bins(self):
rows = []
for i in range(0, 100):
rows.append([i]),
new_table = Table(rows, self.column_names, self.column_types).bins('number')
self.assertColumnNames(new_table, ['number', 'Count'])
self.assertColumnTypes(new_table, [Text, Number])
c_rows = (
(1, 4, 'a'),
(2, 3, 'b'),
(None, 2, 'c'),
(None, 4, 'd'),
(None, 3, 'e'),
(None, 2, 'f')
)
table_b = Table(b_rows, ['a', 'two', 'three'], self.column_types, row_names='three')
table_c = Table.merge([table_a, table_b], column_names=table_a.column_names)
self.assertRows(table_c, c_rows)
class TestPivot(AgateTestCase):
def setUp(self):
self.rows = (
('joe', 'white', 'male', 20, 'blue'),
('jane', 'white', 'female', 20, 'blue'),
('josh', 'black', 'male', 20, 'blue'),
('jim', 'latino', 'male', 25, 'blue'),
('julia', 'white', 'female', 25, 'green'),
('joan', 'asian', 'female', 25, 'green')
)
self.number_type = Number()
self.text_type = Text()
self.column_names = ['name', 'race', 'gender', 'age', 'color']
self.column_types = [self.text_type, self.text_type, self.text_type, self.number_type, self.text_type]
#!/usr/bin/env python
# -*- coding: utf8 -*-
import io
import warnings
import six
from agate import Table
from agate.testcase import AgateTestCase
from agate.data_types import *
from agate.type_tester import TypeTester
class TestFromCSV(AgateTestCase):
def setUp(self):
self.rows = (
(1, 'a', True, '11/4/2015', '11/4/2015 12:22 PM', '4:15'),
(2, u'👍', False, '11/5/2015', '11/4/2015 12:45 PM', '6:18'),
(None, 'b', None, None, None, None)
)
self.column_names = [
'number', 'text', 'boolean', 'date', 'datetime', 'timedelta'
]
self.column_types = [
Number(), Text(), Boolean(), Date(), DateTime(), TimeDelta()
]
def test_from_csv(self):