33 renderables: Optional[Iterable[RenderableType]] =
None,
34 padding: PaddingDimensions = (0, 1),
36 width: Optional[int] =
None,
39 column_first: bool =
False,
40 right_to_left: bool =
False,
41 align: Optional[AlignMethod] =
None,
42 title: Optional[TextType] =
None,
51 self.align: Optional[AlignMethod] = align
63 self, console: Console, options: ConsoleOptions
67 render_str(renderable)
if isinstance(renderable, str)
else renderable
73 width_padding = max(left, right)
75 widths: Dict[int, int] = defaultdict(int)
76 column_count =
len(renderables)
81 for renderable
in renderables
84 renderable_widths = [max(renderable_widths)] *
len(renderable_widths)
88 ) -> Iterable[Tuple[int, Optional[RenderableType]]]:
89 item_count =
len(renderables)
91 width_renderables = list(
zip(renderable_widths, renderables))
93 column_lengths: List[int] = [item_count // column_count] * column_count
94 for col_no
in range(item_count % column_count):
95 column_lengths[col_no] += 1
97 row_count = (item_count + column_count - 1) // column_count
98 cells = [[-1] * column_count
for _
in range(row_count)]
100 for index
in range(item_count):
101 cells[row][col] = index
102 column_lengths[col] -= 1
103 if column_lengths[col]:
111 yield width_renderables[index]
113 yield from zip(renderable_widths, renderables)
115 if item_count % column_count:
116 for _
in range(column_count - (item_count % column_count)):
123 if self.
width is not None:
124 column_count = (max_width) // (self.
width + width_padding)
125 for _
in range(column_count):
128 while column_count > 1:
132 widths[column_no] = max(widths[column_no], renderable_width)
136 if total_width > max_width:
137 column_count =
len(widths) - 1
140 column_no = (column_no + 1) % column_count
144 get_renderable = itemgetter(1)
146 get_renderable(_renderable)
152 if renderable
is None
153 else Constrain(renderable, renderable_widths[0])
154 for renderable
in _renderables
160 None if renderable
is None else _Align(renderable, align)
161 for renderable
in _renderables
166 for start
in range(0,
len(_renderables), column_count):
167 row = _renderables[start : start + column_count]