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>')
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>']))
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'])
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>']))
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())
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><Series></th><th></th></tr><tr><th><Index></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())
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)))
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))
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>' ])
def test_display_config_e(self) -> None: dc1 = DisplayConfig() self.assertTrue(str(dc1).startswith('<DisplayConfig'))
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)))