コード例 #1
0
    def test_display_config_from_json_a(self) -> None:
        json_data = json.dumps(dict(type_show=False))
        dc = DisplayConfig.from_json(json_data)
        self.assertEqual(dc.type_show, False)

        # with a bad name, we filter out the key
        json_data = json.dumps(dict(show=False))
        dc = DisplayConfig.from_json(json_data)
        self.assertEqual(dc.type_show, True)
コード例 #2
0
    def test_display_type_color_markup_a(self) -> None:

        config1 = DisplayConfig(display_format=DisplayFormats.TERMINAL)
        post1 = Display.type_color_markup(DisplayTypeInt, config1)

        if terminal_ansi():
            self.assertEqual(post1, '\x1b[38;5;239m{}\x1b[0m')
        else:
            self.assertEqual(post1, '{}')

        config2 = DisplayConfig(display_format=DisplayFormats.HTML_TABLE)
        post2 = Display.type_color_markup(DisplayTypeInt, config2)
        self.assertEqual(post2, '<span style="color: #505050">{}</span>')
コード例 #3
0
ファイル: test_series.py プロジェクト: cxapython/static-frame
    def test_series_disply_a(self):

        s1 = Series((2, 3), index=list('ab'), name='alt')

        match = tuple(s1.display(DisplayConfig(type_color=False)))
        self.assertEqual(match, (['<Series: alt>'], ['<Index>', ''],
                                 ['a', '2'], ['b', '3'], ['<<U1>', '<int64>']))

        s2 = Series(('a', 'b'),
                    index=Index(('x', 'y'), name='bar'),
                    name='foo')

        match = tuple(s2.display(DisplayConfig(type_color=False)))

        self.assertEqual(match, (['<Series: foo>'], ['<Index: bar>', ''],
                                 ['x', 'a'], ['y', 'b'], ['<<U1>', '<<U1>']))
コード例 #4
0
    def test_display_include_index_a(self) -> None:

        f1 = Frame.from_element('b', index=range(3), columns=range(2))

        with self.assertRaises(RuntimeError):
            DisplayConfig(include_index=False, type_show=True)

        config1 = DisplayConfig(include_index=False, type_show=False)
        d1 = f1.display(config1)
        self.assertEqual(d1.to_rows(), ['0 1', 'b b', 'b b', 'b b'])

        config2 = DisplayConfig(include_index=False,
                                type_show=False,
                                include_columns=False)
        d2 = f1.display(config2)
        self.assertEqual(d2.to_rows(), ['b b', 'b b', 'b b'])
コード例 #5
0
    def test_hierarchy_display_a(self):

        idx1 = IndexHierarchy.from_product(list('ab'), list('xy'), name='q')

        match = tuple(idx1.display(DisplayConfig(type_color=False)))

        self.assertEqual(match,
                         (['<IndexHierarchy: q>', ''], ['a', 'x'], ['a', 'y'],
                          ['b', 'x'], ['b', 'y'], ['<<U1>', '<<U1>']))
コード例 #6
0
ファイル: test_series.py プロジェクト: cxapython/static-frame
    def test_series_to_html_a(self):

        s1 = Series((2, 3, 0, -1, 8, 6), index=list('abcdef'))

        post = s1.to_html(
            config=DisplayConfig(type_show=False, type_color=False))

        html = '''<table border="1"><thead><tr><th>&lt;Series&gt;</th><th></th></tr><tr><th>&lt;Index&gt;</th><th></th></tr></thead><tbody><tr><th>a</th><td>2</td></tr><tr><th>b</th><td>3</td></tr><tr><th>c</th><td>0</td></tr><tr><th>d</th><td>-1</td></tr><tr><th>e</th><td>8</td></tr><tr><th>f</th><td>6</td></tr></tbody></table>
        '''
        self.assertEqual(post.strip(), html.strip())
コード例 #7
0
ファイル: main.py プロジェクト: peacelovingng/static-frame
def main():

    options = get_arg_parser().parse_args()

    module_targets = []
    for module in options.modules:
        if module == 'core':
            from static_frame.performance import core
            module_targets.append(core)
        elif module == 'pydata_2018':
            from static_frame.performance import pydata_2018
            module_targets.append(pydata_2018)
        else:
            raise NotImplementedError()

    records = []

    for module in module_targets:
        module.SampleData.create()
        for pattern in options.patterns:
            for cls in sorted(yield_classes(module, pattern),
                              key=lambda c: c.__name__):
                print(cls.__name__)
                if options.performance:
                    records.append(performance(module, cls))
                if options.profile:
                    profile(cls)
    if records:

        from static_frame import DisplayConfig

        print(str(datetime.datetime.now()))

        pairs = []
        pairs.append(('python', sys.version.split(' ')[0]))
        for package in (np, pd, sf):
            pairs.append((package.__name__, package.__version__))
        print('|'.join(':'.join(pair) for pair in pairs))

        frame = sf.FrameGO.from_records(records)
        frame = frame.set_index('name', drop=True)
        frame['sf/pd'] = frame[PerfTest.SF_NAME] / frame[PerfTest.PD_NAME]

        config = DisplayConfig(cell_max_width=80,
                               type_show=False,
                               display_rows=200)
        present = frame.iter_element().apply(
            lambda v: v if not isinstance(v, float) else round(v, 4))
        print(present.display(config))

        print('mean: {}'.format(round(frame['sf/pd'].mean(), 6)))
        print('wins: {}/{}'.format((frame['sf/pd'] < 1.05).sum(), len(frame)))
コード例 #8
0
    def test_display_config_d(self) -> None:

        with temp_file('.json') as fp:

            dc1 = DisplayConfig()
            dc1.write(fp)  #type: ignore

            dc2 = DisplayConfig.from_file(fp)  #type: ignore
            self.assertTrue(dc1.to_dict() == dc2.to_dict())
コード例 #9
0
def main() -> None:

    options = get_arg_parser().parse_args()
    records: tp.List[PerformanceRecord] = []

    for pattern in options.patterns:
        for bundle, pattern_func in yield_classes(pattern):
            if options.performance:
                records.extend(performance(bundle, pattern_func))
            if options.profile:
                profile(bundle[Native], pattern_func) #type: ignore
            if options.graph:
                graph(bundle[Native], pattern_func) #type: ignore
            if options.instrument:
                instrument(bundle[Native], pattern_func) #type: ignore
            if options.line:
                line(bundle[Native], pattern_func) #type: ignore

    itemize = False # make CLI option maybe

    if records:

        from static_frame import DisplayConfig

        print(str(datetime.datetime.now()))

        pairs = []
        pairs.append(('python', sys.version.split(' ')[0]))
        for package in (np, pd, sf):
            pairs.append((package.__name__, package.__version__))
        print('|'.join(':'.join(pair) for pair in pairs))

        frame, display = performance_tables_from_records(records)

        config = DisplayConfig(
                cell_max_width_leftmost=np.inf,
                cell_max_width=np.inf,
                type_show=False,
                display_rows=200,
                include_index=False,
                )
        print(display.display(config))

        if itemize:
            alt = display.T
            for c in alt.columns:
                print(c)
                print(alt[c].sort_values().display(config))
コード例 #10
0
    def test_display_rows_b(self) -> None:
        # this isseu was found only with Frame, not with Series
        dc = DisplayConfig(display_rows=8, type_color=False)
        self.assertEqual(
            Frame(np.arange(7, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '3       3', '4       4',
                '5       5', '6       6', '<int64> <int64>'
            ])

        self.assertEqual(
            Frame(np.arange(8, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '3       3', '4       4',
                '5       5', '6       6', '7       7', '<int64> <int64>'
            ])

        self.assertEqual(
            Frame(np.arange(9, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '...     ...', '6       6',
                '7       7', '8       8', '<int64> <int64>'
            ])
コード例 #11
0
    def test_display_flatten_a(self) -> None:
        config = DisplayConfig.from_default(type_color=False)

        d1 = Display.from_values(np.array([1, 2, 3, 4], dtype=np.int64),
                                 'header',
                                 config=config)
        self.assertEqual(d1.flatten().to_rows(), ['header 1 2 3 4 <int64>'])

        d2 = Display.from_values(np.array([5, 6, 7, 8], dtype=np.int64),
                                 'header',
                                 config=config)

        # mutates in place
        d1.extend_display(d2)
        self.assertEqual(d1.to_rows(), [
            'header  header', '1       5', '2       6', '3       7',
            '4       8', '<int64> <int64>'
        ])

        self.assertEqual(d1.flatten().to_rows(),
                         ['header header 1 5 2 6 3 7 4 8 <int64> <int64>'])

        self.assertEqual(d1.transform().to_rows(),
                         ['header 1 2 3 4 <int64>', 'header 5 6 7 8 <int64>'])
コード例 #12
0
    def test_display_config_e(self) -> None:

        dc1 = DisplayConfig()
        self.assertTrue(str(dc1).startswith('<DisplayConfig'))
コード例 #13
0
 def test_display_config_a(self) -> None:
     config = DisplayConfig.from_default(type_color=False)
     d = Display.from_values(np.array([[1, 2], [3, 4]], dtype=np.int64),
                             'header',
                             config=config)
     self.assertEqual(d.to_rows(), ['header', '1 2', '3 4', '<int64>'])
コード例 #14
0
def main() -> None:

    options = get_arg_parser().parse_args()

    module_targets = []
    for module in options.modules:
        if module == 'core':
            from static_frame.performance import core
            module_targets.append(core)
        elif module == 'pydata_2018':
            from static_frame.performance import pydata_2018
            module_targets.append(pydata_2018)
        elif module == 'pydata_2019':
            from static_frame.performance import pydata_2019
            module_targets.append(pydata_2019)
        elif module == 'iter_group_perf':
            from static_frame.performance import iter_group_perf
            module_targets.append(iter_group_perf)
        else:
            raise NotImplementedError()

    records = []

    for module in module_targets:
        module.SampleData.create()
        for pattern in options.patterns:
            for cls in sorted(yield_classes(module, pattern),
                              key=lambda c: c.__name__):
                print(cls.__name__)
                if options.performance:
                    records.append(performance(module, cls))
                if options.profile:
                    profile(cls)
                if options.instrument:
                    instrument(cls)

    itemize = False  # make CLI option maybe

    if records:

        from static_frame import DisplayConfig

        print(str(datetime.datetime.now()))

        pairs = []
        pairs.append(('python', sys.version.split(' ')[0]))
        for package in (np, pd, sf):
            pairs.append((package.__name__, package.__version__))
        print('|'.join(':'.join(pair) for pair in pairs))

        frame, display = performance_tables_from_records(records)

        config = DisplayConfig(cell_max_width_leftmost=np.inf,
                               cell_max_width=np.inf,
                               type_show=False,
                               display_rows=200)
        print(display.display(config))

        if itemize:
            alt = display.T
            for c in alt.columns:
                print(c)
                print(alt[c].sort_values().display(config))

        # import ipdb; ipdb.set_trace()
        if 'sf/pd' in frame.columns:
            print('mean: {}'.format(round(frame['sf/pd'].mean(), 6)))
            print('wins: {}/{}'.format((frame['sf/pd'] < 1.05).sum(),
                                       len(frame)))