forked from Textualize/rich
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtabulate.py
51 lines (45 loc) · 1.65 KB
/
tabulate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from collections.abc import Mapping
from typing import Any, Optional
import warnings
from rich.console import JustifyMethod
from . import box
from .highlighter import ReprHighlighter
from .pretty import Pretty
from .table import Table
def tabulate_mapping(
mapping: "Mapping[Any, Any]",
title: Optional[str] = None,
caption: Optional[str] = None,
title_justify: Optional[JustifyMethod] = None,
caption_justify: Optional[JustifyMethod] = None,
) -> Table:
"""Generate a simple table from a mapping.
Args:
mapping (Mapping): A mapping object (e.g. a dict);
title (str, optional): Optional title to be displayed over the table.
caption (str, optional): Optional caption to be displayed below the table.
title_justify (str, optional): Justify method for title. Defaults to None.
caption_justify (str, optional): Justify method for caption. Defaults to None.
Returns:
Table: A table instance which may be rendered by the Console.
"""
warnings.warn("tabulate_mapping will be deprecated in Rich v11", DeprecationWarning)
table = Table(
show_header=False,
title=title,
caption=caption,
box=box.ROUNDED,
border_style="blue",
)
table.title = title
table.caption = caption
if title_justify is not None:
table.title_justify = title_justify
if caption_justify is not None:
table.caption_justify = caption_justify
highlighter = ReprHighlighter()
for key, value in mapping.items():
table.add_row(
Pretty(key, highlighter=highlighter), Pretty(value, highlighter=highlighter)
)
return table