Module pandas_profiling.report.presentation.flavours.widget.sequence
Expand source code
from ipywidgets import widgets
from pandas_profiling.report.presentation.abstract.renderable import Renderable
from pandas_profiling.report.presentation.core.sequence import Sequence
def get_name(item: Renderable):
if hasattr(item, "name"):
return item.name
else:
return item.anchor_id
def get_tabs(items):
children = []
titles = []
for item in items:
children.append(item.render())
titles.append(get_name(item))
tab = widgets.Tab()
tab.children = children
for id, title in enumerate(titles):
tab.set_title(id, title)
return tab
def get_list(items):
return widgets.VBox(
[
widgets.VBox(
[
widgets.HTML("<strong>{name}</strong>".format(name=get_name(item))),
item.render(),
]
)
for item in items
]
)
def get_row(items):
if len(items) == 1:
layout = widgets.Layout(width="100%", grid_template_columns="100%")
elif len(items) == 2:
layout = widgets.Layout(width="100%", grid_template_columns="50% 50%")
elif len(items) == 3:
layout = widgets.Layout(width="100%", grid_template_columns="25% 25% 50%")
elif len(items) == 4:
layout = widgets.Layout(width="100%", grid_template_columns="25% 25% 25% 25%")
else:
raise ValueError("Layout undefined for this number of columns")
return widgets.GridBox([item.render() for item in items], layout=layout)
def get_accordion(items):
children = []
titles = []
for item in items:
children.append(item.render())
titles.append(get_name(item))
accordion = widgets.Accordion(children=children)
for id, title in enumerate(titles):
accordion.set_title(id, title)
return accordion
class WidgetSequence(Sequence):
def render(self):
if self.sequence_type == "list":
widget = get_list(self.content["items"])
elif self.sequence_type in ["tabs", "sections"]:
widget = get_tabs(self.content["items"])
elif self.sequence_type == "accordion":
widget = get_accordion(self.content["items"])
elif self.sequence_type == "grid":
widget = get_row(self.content["items"])
else:
raise ValueError("widget type not understood", self.sequence_type)
return widget
Functions
def get_accordion(items)
-
Expand source code
def get_accordion(items): children = [] titles = [] for item in items: children.append(item.render()) titles.append(get_name(item)) accordion = widgets.Accordion(children=children) for id, title in enumerate(titles): accordion.set_title(id, title) return accordion
def get_list(items)
-
Expand source code
def get_list(items): return widgets.VBox( [ widgets.VBox( [ widgets.HTML("<strong>{name}</strong>".format(name=get_name(item))), item.render(), ] ) for item in items ] )
def get_name(item)
-
Expand source code
def get_name(item: Renderable): if hasattr(item, "name"): return item.name else: return item.anchor_id
def get_row(items)
-
Expand source code
def get_row(items): if len(items) == 1: layout = widgets.Layout(width="100%", grid_template_columns="100%") elif len(items) == 2: layout = widgets.Layout(width="100%", grid_template_columns="50% 50%") elif len(items) == 3: layout = widgets.Layout(width="100%", grid_template_columns="25% 25% 50%") elif len(items) == 4: layout = widgets.Layout(width="100%", grid_template_columns="25% 25% 25% 25%") else: raise ValueError("Layout undefined for this number of columns") return widgets.GridBox([item.render() for item in items], layout=layout)
def get_tabs(items)
-
Expand source code
def get_tabs(items): children = [] titles = [] for item in items: children.append(item.render()) titles.append(get_name(item)) tab = widgets.Tab() tab.children = children for id, title in enumerate(titles): tab.set_title(id, title) return tab
Classes
class WidgetSequence (items, sequence_type, **kwargs)
-
Helper class that provides a standard way to create an ABC using inheritance.
Expand source code
class WidgetSequence(Sequence): def render(self): if self.sequence_type == "list": widget = get_list(self.content["items"]) elif self.sequence_type in ["tabs", "sections"]: widget = get_tabs(self.content["items"]) elif self.sequence_type == "accordion": widget = get_accordion(self.content["items"]) elif self.sequence_type == "grid": widget = get_row(self.content["items"]) else: raise ValueError("widget type not understood", self.sequence_type) return widget
Ancestors
- Sequence
- Renderable
- abc.ABC
Methods
def render(self)
-
Expand source code
def render(self): if self.sequence_type == "list": widget = get_list(self.content["items"]) elif self.sequence_type in ["tabs", "sections"]: widget = get_tabs(self.content["items"]) elif self.sequence_type == "accordion": widget = get_accordion(self.content["items"]) elif self.sequence_type == "grid": widget = get_row(self.content["items"]) else: raise ValueError("widget type not understood", self.sequence_type) return widget