diff --git a/imgs/features.png b/imgs/features.png index fc3deff3..12c941e1 100644 Binary files a/imgs/features.png and b/imgs/features.png differ diff --git a/rich/__main__.py b/rich/__main__.py index 81e522cc..5688477f 100644 --- a/rich/__main__.py +++ b/rich/__main__.py @@ -40,7 +40,7 @@ def make_test_card() -> Table: """Get a renderable that demonstrates a number of features.""" table = Table.grid(padding=1, pad_edge=True) table.title = "Rich features" - table.add_column("Feature", no_wrap=True, justify="right", style="bold red") + table.add_column("Feature", no_wrap=True, justify="center", style="bold red") table.add_column("Demonstration") color_table = Table( @@ -95,38 +95,14 @@ def make_test_card() -> Table: table.add_row(renderable1, renderable2) return table - cjk_table = Table.grid() - cjk_table.add_column(ratio=1) - cjk_table.add_column(ratio=2) - cjk_table.add_column(ratio=3) - cjk_table.add_row( - Panel( - Text("该库支持中文,日文和韩文文本!", overflow="fold"), - expand=False, - border_style="red", - box=box.DOUBLE_EDGE, - ), - Panel( - Text("ライブラリは中国語、日本語、韓国語のテキストをサポートしています", overflow="fold"), - expand=False, - border_style="Red", - box=box.DOUBLE_EDGE, - ), - Panel( - Text("이 라이브러리는 중국어, 일본어 및 한국어 텍스트를 지원합니다", overflow="fold"), - expand=False, - border_style="Red", - box=box.DOUBLE_EDGE, - ), - ) table.add_row( "Asian languages", ":flag_for_china: 该库支持中文,日文和韩文文本!\n:flag_for_japan: ライブラリは中国語、日本語、韓国語のテキストをサポートしています\n:flag_for_south_korea: 이 라이브러리는 중국어, 일본어 및 한국어 텍스트를 지원합니다", ) markup_example = ( - "[bold magenta]Rich[/] supports a simple [i]bbcode[/i] like [b]markup[/b] for [yellow]color[/] and [underline]style[/]. " - "Also renders emoji code: :+1: :apple: :ant: :bear: :baguette_bread: :bus: " + "[bold magenta]Rich[/] supports a simple [i]bbcode[/i] like [b]markup[/b] for [yellow]color[/], [underline]style[/], and emoji! " + ":+1: :apple: :ant: :bear: :baguette_bread: :bus: " ) table.add_row("Console markup", markup_example) @@ -203,7 +179,7 @@ def iter_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: "atomic": (False, True, None), } table.add_row( - "Syntax highlighting\n&\nPretty printing", + "Syntax\nhighlighting\n&\npretty\nprinting", comparison( Syntax(code, "python3", line_numbers=True, indent_guides=True), Pretty(pretty_data, indent_guides=True), diff --git a/tests/_card_render.py b/tests/_card_render.py index 4da6bf06..f70e2315 100644 --- a/tests/_card_render.py +++ b/tests/_card_render.py @@ -1 +1 @@ -expected = "\x1b[3m Rich features \x1b[0m\n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Colors\x1b[0m\x1b[1;31m \x1b[0m✓ \x1b[1;32m4-bit color\x1b[0m \x1b[38;2;51;0;0m█\x1b[0m\x1b[38;2;51;6;0m█\x1b[0m\x1b[38;2;51;12;0m█\x1b[0m\x1b[38;2;51;19;0m█\x1b[0m\x1b[38;2;51;25;0m█\x1b[0m\x1b[38;2;51;31;0m█\x1b[0m\x1b[38;2;51;38;0m█\x1b[0m\x1b[38;2;51;44;0m█\x1b[0m\x1b[38;2;50;51;0m█\x1b[0m\x1b[38;2;44;51;0m█\x1b[0m\x1b[38;2;38;51;0m█\x1b[0m\x1b[38;2;31;51;0m█\x1b[0m\x1b[38;2;25;51;0m█\x1b[0m\x1b[38;2;19;51;0m█\x1b[0m\x1b[38;2;12;51;0m█\x1b[0m\x1b[38;2;6;51;0m█\x1b[0m\x1b[38;2;0;51;0m█\x1b[0m\x1b[38;2;0;51;6m█\x1b[0m\x1b[38;2;0;51;12m█\x1b[0m\x1b[38;2;0;51;19m█\x1b[0m\x1b[38;2;0;51;25m█\x1b[0m\x1b[38;2;0;51;31m█\x1b[0m\x1b[38;2;0;51;38m█\x1b[0m\x1b[38;2;0;51;44m█\x1b[0m\x1b[38;2;0;50;51m█\x1b[0m\x1b[38;2;0;44;51m█\x1b[0m\x1b[38;2;0;38;51m█\x1b[0m\x1b[38;2;0;31;51m█\x1b[0m\x1b[38;2;0;25;51m█\x1b[0m\x1b[38;2;0;19;51m█\x1b[0m\x1b[38;2;0;12;51m█\x1b[0m\x1b[38;2;0;6;51m█\x1b[0m\x1b[38;2;0;0;51m█\x1b[0m\x1b[38;2;6;0;51m█\x1b[0m\x1b[38;2;12;0;51m█\x1b[0m\x1b[38;2;19;0;51m█\x1b[0m\x1b[38;2;25;0;51m█\x1b[0m\x1b[38;2;31;0;51m█\x1b[0m\x1b[38;2;38;0;51m█\x1b[0m\x1b[38;2;44;0;51m█\x1b[0m\x1b[38;2;51;0;50m█\x1b[0m\x1b[38;2;51;0;44m█\x1b[0m\x1b[38;2;51;0;38m█\x1b[0m\x1b[38;2;51;0;31m█\x1b[0m\x1b[38;2;51;0;25m█\x1b[0m\x1b[38;2;51;0;19m█\x1b[0m\x1b[38;2;51;0;12m█\x1b[0m\x1b[38;2;51;0;6m█\x1b[0m \n ✓ \x1b[1;34m8-bit color\x1b[0m \x1b[38;2;122;0;0m█\x1b[0m\x1b[38;2;122;15;0m█\x1b[0m\x1b[38;2;122;30;0m█\x1b[0m\x1b[38;2;122;45;0m█\x1b[0m\x1b[38;2;122;61;0m█\x1b[0m\x1b[38;2;122;76;0m█\x1b[0m\x1b[38;2;122;91;0m█\x1b[0m\x1b[38;2;122;107;0m█\x1b[0m\x1b[38;2;122;122;0m█\x1b[0m\x1b[38;2;107;122;0m█\x1b[0m\x1b[38;2;91;122;0m█\x1b[0m\x1b[38;2;76;122;0m█\x1b[0m\x1b[38;2;61;122;0m█\x1b[0m\x1b[38;2;45;122;0m█\x1b[0m\x1b[38;2;30;122;0m█\x1b[0m\x1b[38;2;15;122;0m█\x1b[0m\x1b[38;2;0;122;0m█\x1b[0m\x1b[38;2;0;122;15m█\x1b[0m\x1b[38;2;0;122;30m█\x1b[0m\x1b[38;2;0;122;45m█\x1b[0m\x1b[38;2;0;122;61m█\x1b[0m\x1b[38;2;0;122;76m█\x1b[0m\x1b[38;2;0;122;91m█\x1b[0m\x1b[38;2;0;122;107m█\x1b[0m\x1b[38;2;0;122;122m█\x1b[0m\x1b[38;2;0;107;122m█\x1b[0m\x1b[38;2;0;91;122m█\x1b[0m\x1b[38;2;0;76;122m█\x1b[0m\x1b[38;2;0;61;122m█\x1b[0m\x1b[38;2;0;45;122m█\x1b[0m\x1b[38;2;0;30;122m█\x1b[0m\x1b[38;2;0;15;122m█\x1b[0m\x1b[38;2;0;0;122m█\x1b[0m\x1b[38;2;15;0;122m█\x1b[0m\x1b[38;2;30;0;122m█\x1b[0m\x1b[38;2;45;0;122m█\x1b[0m\x1b[38;2;61;0;122m█\x1b[0m\x1b[38;2;76;0;122m█\x1b[0m\x1b[38;2;91;0;122m█\x1b[0m\x1b[38;2;107;0;122m█\x1b[0m\x1b[38;2;122;0;122m█\x1b[0m\x1b[38;2;122;0;107m█\x1b[0m\x1b[38;2;122;0;91m█\x1b[0m\x1b[38;2;122;0;76m█\x1b[0m\x1b[38;2;122;0;61m█\x1b[0m\x1b[38;2;122;0;45m█\x1b[0m\x1b[38;2;122;0;30m█\x1b[0m\x1b[38;2;122;0;15m█\x1b[0m \n ✓ \x1b[1;35mTruecolor (16.7 million)\x1b[0m \x1b[38;2;193;0;0m█\x1b[0m\x1b[38;2;193;24;0m█\x1b[0m\x1b[38;2;193;48;0m█\x1b[0m\x1b[38;2;193;72;0m█\x1b[0m\x1b[38;2;193;96;0m█\x1b[0m\x1b[38;2;193;121;0m█\x1b[0m\x1b[38;2;193;145;0m█\x1b[0m\x1b[38;2;193;169;0m█\x1b[0m\x1b[38;2;193;193;0m█\x1b[0m\x1b[38;2;169;193;0m█\x1b[0m\x1b[38;2;145;193;0m█\x1b[0m\x1b[38;2;121;193;0m█\x1b[0m\x1b[38;2;96;193;0m█\x1b[0m\x1b[38;2;72;193;0m█\x1b[0m\x1b[38;2;48;193;0m█\x1b[0m\x1b[38;2;24;193;0m█\x1b[0m\x1b[38;2;0;193;0m█\x1b[0m\x1b[38;2;0;193;24m█\x1b[0m\x1b[38;2;0;193;48m█\x1b[0m\x1b[38;2;0;193;72m█\x1b[0m\x1b[38;2;0;193;96m█\x1b[0m\x1b[38;2;0;193;121m█\x1b[0m\x1b[38;2;0;193;145m█\x1b[0m\x1b[38;2;0;193;169m█\x1b[0m\x1b[38;2;0;193;193m█\x1b[0m\x1b[38;2;0;169;193m█\x1b[0m\x1b[38;2;0;145;193m█\x1b[0m\x1b[38;2;0;121;193m█\x1b[0m\x1b[38;2;0;96;193m█\x1b[0m\x1b[38;2;0;72;193m█\x1b[0m\x1b[38;2;0;48;193m█\x1b[0m\x1b[38;2;0;24;193m█\x1b[0m\x1b[38;2;0;0;193m█\x1b[0m\x1b[38;2;24;0;193m█\x1b[0m\x1b[38;2;48;0;193m█\x1b[0m\x1b[38;2;72;0;193m█\x1b[0m\x1b[38;2;96;0;193m█\x1b[0m\x1b[38;2;121;0;193m█\x1b[0m\x1b[38;2;145;0;193m█\x1b[0m\x1b[38;2;169;0;193m█\x1b[0m\x1b[38;2;193;0;193m█\x1b[0m\x1b[38;2;193;0;169m█\x1b[0m\x1b[38;2;193;0;145m█\x1b[0m\x1b[38;2;193;0;121m█\x1b[0m\x1b[38;2;193;0;96m█\x1b[0m\x1b[38;2;193;0;72m█\x1b[0m\x1b[38;2;193;0;48m█\x1b[0m\x1b[38;2;193;0;24m█\x1b[0m \n ✓ \x1b[1;33mDumb terminals\x1b[0m \x1b[38;2;255;10;10m█\x1b[0m\x1b[38;2;255;40;10m█\x1b[0m\x1b[38;2;255;71;10m█\x1b[0m\x1b[38;2;255;102;10m█\x1b[0m\x1b[38;2;255;132;10m█\x1b[0m\x1b[38;2;255;163;10m█\x1b[0m\x1b[38;2;255;193;10m█\x1b[0m\x1b[38;2;255;224;10m█\x1b[0m\x1b[38;2;254;255;10m█\x1b[0m\x1b[38;2;224;255;10m█\x1b[0m\x1b[38;2;193;255;10m█\x1b[0m\x1b[38;2;163;255;10m█\x1b[0m\x1b[38;2;132;255;10m█\x1b[0m\x1b[38;2;102;255;10m█\x1b[0m\x1b[38;2;71;255;10m█\x1b[0m\x1b[38;2;40;255;10m█\x1b[0m\x1b[38;2;10;255;10m█\x1b[0m\x1b[38;2;10;255;40m█\x1b[0m\x1b[38;2;10;255;71m█\x1b[0m\x1b[38;2;10;255;102m█\x1b[0m\x1b[38;2;10;255;132m█\x1b[0m\x1b[38;2;10;255;163m█\x1b[0m\x1b[38;2;10;255;193m█\x1b[0m\x1b[38;2;10;255;224m█\x1b[0m\x1b[38;2;10;254;255m█\x1b[0m\x1b[38;2;10;224;255m█\x1b[0m\x1b[38;2;10;193;255m█\x1b[0m\x1b[38;2;10;163;255m█\x1b[0m\x1b[38;2;10;132;255m█\x1b[0m\x1b[38;2;10;102;255m█\x1b[0m\x1b[38;2;10;71;255m█\x1b[0m\x1b[38;2;10;40;255m█\x1b[0m\x1b[38;2;10;10;255m█\x1b[0m\x1b[38;2;40;10;255m█\x1b[0m\x1b[38;2;71;10;255m█\x1b[0m\x1b[38;2;102;10;255m█\x1b[0m\x1b[38;2;132;10;255m█\x1b[0m\x1b[38;2;163;10;255m█\x1b[0m\x1b[38;2;193;10;255m█\x1b[0m\x1b[38;2;224;10;255m█\x1b[0m\x1b[38;2;255;10;254m█\x1b[0m\x1b[38;2;255;10;224m█\x1b[0m\x1b[38;2;255;10;193m█\x1b[0m\x1b[38;2;255;10;163m█\x1b[0m\x1b[38;2;255;10;132m█\x1b[0m\x1b[38;2;255;10;101m█\x1b[0m\x1b[38;2;255;10;71m█\x1b[0m\x1b[38;2;255;10;40m█\x1b[0m \n ✓ \x1b[1;36mAutomatic color conversion\x1b[0m \x1b[38;2;255;81;81m█\x1b[0m\x1b[38;2;255;103;81m█\x1b[0m\x1b[38;2;255;124;81m█\x1b[0m\x1b[38;2;255;146;81m█\x1b[0m\x1b[38;2;255;168;81m█\x1b[0m\x1b[38;2;255;189;81m█\x1b[0m\x1b[38;2;255;211;81m█\x1b[0m\x1b[38;2;255;233;81m█\x1b[0m\x1b[38;2;254;255;81m█\x1b[0m\x1b[38;2;233;255;81m█\x1b[0m\x1b[38;2;211;255;81m█\x1b[0m\x1b[38;2;189;255;81m█\x1b[0m\x1b[38;2;168;255;81m█\x1b[0m\x1b[38;2;146;255;81m█\x1b[0m\x1b[38;2;124;255;81m█\x1b[0m\x1b[38;2;103;255;81m█\x1b[0m\x1b[38;2;81;255;81m█\x1b[0m\x1b[38;2;81;255;103m█\x1b[0m\x1b[38;2;81;255;124m█\x1b[0m\x1b[38;2;81;255;146m█\x1b[0m\x1b[38;2;81;255;168m█\x1b[0m\x1b[38;2;81;255;189m█\x1b[0m\x1b[38;2;81;255;211m█\x1b[0m\x1b[38;2;81;255;233m█\x1b[0m\x1b[38;2;81;254;255m█\x1b[0m\x1b[38;2;81;233;255m█\x1b[0m\x1b[38;2;81;211;255m█\x1b[0m\x1b[38;2;81;189;255m█\x1b[0m\x1b[38;2;81;168;255m█\x1b[0m\x1b[38;2;81;146;255m█\x1b[0m\x1b[38;2;81;124;255m█\x1b[0m\x1b[38;2;81;103;255m█\x1b[0m\x1b[38;2;81;81;255m█\x1b[0m\x1b[38;2;103;81;255m█\x1b[0m\x1b[38;2;124;81;255m█\x1b[0m\x1b[38;2;146;81;255m█\x1b[0m\x1b[38;2;168;81;255m█\x1b[0m\x1b[38;2;189;81;255m█\x1b[0m\x1b[38;2;211;81;255m█\x1b[0m\x1b[38;2;233;81;255m█\x1b[0m\x1b[38;2;255;81;254m█\x1b[0m\x1b[38;2;255;81;233m█\x1b[0m\x1b[38;2;255;81;211m█\x1b[0m\x1b[38;2;255;81;189m█\x1b[0m\x1b[38;2;255;81;168m█\x1b[0m\x1b[38;2;255;81;146m█\x1b[0m\x1b[38;2;255;81;124m█\x1b[0m\x1b[38;2;255;81;103m█\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Styles\x1b[0m\x1b[1;31m \x1b[0mAll ansi styles: \x1b[1mbold\x1b[0m, \x1b[2mdim\x1b[0m, \x1b[3mitalic\x1b[0m, \x1b[4munderline\x1b[0m, \x1b[9mstrikethrough\x1b[0m, \x1b[7mreverse\x1b[0m, and \n even \x1b[5mblink\x1b[0m. \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Text\x1b[0m\x1b[1;31m \x1b[0mWord wrap text. Justify \x1b[32mleft\x1b[0m, \x1b[33mcenter\x1b[0m, \x1b[34mright\x1b[0m or \x1b[31mfull\x1b[0m. \n \n \x1b[32mLorem ipsum dolor \x1b[0m \x1b[33mLorem ipsum dolor \x1b[0m \x1b[34m Lorem ipsum dolor\x1b[0m \x1b[31mLorem\x1b[0m\x1b[31m \x1b[0m\x1b[31mipsum\x1b[0m\x1b[31m \x1b[0m\x1b[31mdolor\x1b[0m \n \x1b[32msit amet, \x1b[0m \x1b[33m sit amet, \x1b[0m \x1b[34m sit amet,\x1b[0m \x1b[31msit\x1b[0m\x1b[31m \x1b[0m\x1b[31mamet,\x1b[0m \n \x1b[32mconsectetur \x1b[0m \x1b[33m consectetur \x1b[0m \x1b[34m consectetur\x1b[0m \x1b[31mconsectetur\x1b[0m \n \x1b[32madipiscing elit. \x1b[0m \x1b[33m adipiscing elit. \x1b[0m \x1b[34m adipiscing elit.\x1b[0m \x1b[31madipiscing\x1b[0m\x1b[31m \x1b[0m\x1b[31melit.\x1b[0m \n \x1b[32mQuisque in metus \x1b[0m \x1b[33m Quisque in metus \x1b[0m \x1b[34m Quisque in metus\x1b[0m \x1b[31mQuisque\x1b[0m\x1b[31m \x1b[0m\x1b[31min\x1b[0m\x1b[31m \x1b[0m\x1b[31mmetus\x1b[0m \n \x1b[32msed sapien \x1b[0m \x1b[33m sed sapien \x1b[0m \x1b[34m sed sapien\x1b[0m \x1b[31msed\x1b[0m\x1b[31m \x1b[0m\x1b[31msapien\x1b[0m \n \x1b[32multricies pretium a\x1b[0m \x1b[33multricies pretium \x1b[0m \x1b[34multricies pretium a\x1b[0m \x1b[31multricies\x1b[0m\x1b[31m \x1b[0m\x1b[31mpretium\x1b[0m\x1b[31m \x1b[0m\x1b[31ma\x1b[0m \n \x1b[32mat justo. Maecenas \x1b[0m \x1b[33m a at justo. \x1b[0m \x1b[34m at justo. Maecenas\x1b[0m \x1b[31mat\x1b[0m\x1b[31m \x1b[0m\x1b[31mjusto.\x1b[0m\x1b[31m \x1b[0m\x1b[31mMaecenas\x1b[0m \n \x1b[32mluctus velit et \x1b[0m \x1b[33m Maecenas luctus \x1b[0m \x1b[34m luctus velit et\x1b[0m \x1b[31mluctus\x1b[0m\x1b[31m \x1b[0m\x1b[31mvelit\x1b[0m\x1b[31m \x1b[0m\x1b[31met\x1b[0m \n \x1b[32mauctor maximus. \x1b[0m \x1b[33m velit et auctor \x1b[0m \x1b[34m auctor maximus.\x1b[0m \x1b[31mauctor maximus.\x1b[0m \n \x1b[33m maximus. \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Asian languages\x1b[0m\x1b[1;31m \x1b[0m🇨🇳 该库支持中文,日文和韩文文本! \n 🇯🇵 ライブラリは中国語、日本語、韓国語のテキストをサポートしています \n 🇰🇷 도서관은 중국어, 일본어 및 한국어 텍스트를 지원합니다 \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Console markup\x1b[0m\x1b[1;31m \x1b[0m\x1b[1;35mRich\x1b[0m supports a simple \x1b[3mbbcode\x1b[0m like \x1b[1mmarkup\x1b[0m for \x1b[33mcolor\x1b[0m and \x1b[4mstyle\x1b[0m. Also renders \n emoji code: 👍 🍎 🐜 🐻 🥖 🚌 \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Tables\x1b[0m\x1b[1;31m \x1b[0m\x1b[1m \x1b[0m\x1b[1;32mDate\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;34mTitle\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;36mProduction Budget\x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1m \x1b[0m\x1b[1;35mBox Office\x1b[0m\x1b[1m \x1b[0m \n ────────────────────────────────────────────────────────────────────────────── \n \x1b[32m \x1b[0m\x1b[32mDec 20, 2019\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars: The Rise of \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $275,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[35m $375,126,118\x1b[0m\x1b[35m \x1b[0m \n \x1b[34m \x1b[0m\x1b[34mSkywalker \x1b[0m\x1b[34m \x1b[0m \n \x1b[2;32m \x1b[0m\x1b[2;32mMay 25, 2018\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[1;2;34mSolo\x1b[0m\x1b[2;34m: A Star Wars Story \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $275,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m $393,151,347\x1b[0m\x1b[2;35m \x1b[0m \n \x1b[32m \x1b[0m\x1b[32mDec 15, 2017\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars Ep. VIII: The \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $262,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[1;35m$1,332,539,889\x1b[0m\x1b[35m \x1b[0m \n \x1b[34m \x1b[0m\x1b[34mLast Jedi \x1b[0m\x1b[34m \x1b[0m \n \x1b[2;32m \x1b[0m\x1b[2;32mMay 19, 1999\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[2;34mStar Wars Ep. \x1b[0m\x1b[1;2;34mI\x1b[0m\x1b[2;34m: \x1b[0m\x1b[2;3;34mThe \x1b[0m\x1b[2;34m \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $115,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m$1,027,044,677\x1b[0m\x1b[2;35m \x1b[0m \n \x1b[2;34m \x1b[0m\x1b[2;3;34mphantom Menace\x1b[0m\x1b[2;34m \x1b[0m\x1b[2;34m \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31mSyntax highlighting\x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34miter_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m \x1b[1m{\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m &\x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m\"\"\"Iterate and generate a tup\x1b[0m \x1b[2;32m│ \x1b[0m\x1b[32m'foo'\x1b[0m: \x1b[1m[\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Pretty printing\x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1;34m3.1427\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1m(\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mite\x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Paul Atriedies'\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Vladimir Harkonnen'\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Thufir Haway'\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1m)\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_val\x1b[0m \x1b[2;32m│ \x1b[0m\x1b[1m]\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ \x1b[0m\x1b[32m'atomic'\x1b[0m: \x1b[1m(\x1b[0m\x1b[3;91mFalse\x1b[0m, \x1b[3;92mTrue\x1b[0m, \x1b[3;35mNone\x1b[0m\x1b[1m)\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[1m}\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Markdown\x1b[0m\x1b[1;31m \x1b[0m\x1b[36m# Markdown\x1b[0m ╔════════════════════════════════════╗ \n ║ \x1b[1mMarkdown\x1b[0m ║ \n \x1b[36mSupports much of the *markdown*, \x1b[0m ╚════════════════════════════════════╝ \n \x1b[36m__syntax__!\x1b[0m \n Supports much of the \x1b[3mmarkdown\x1b[0m, \x1b[1msyntax\x1b[0m! \n \x1b[36m- Headers\x1b[0m \n \x1b[36m- Basic formatting: **bold**, \x1b[0m \x1b[1;33m • \x1b[0mHeaders \n \x1b[36m*italic*, `code`\x1b[0m \x1b[1;33m • \x1b[0mBasic formatting: \x1b[1mbold\x1b[0m, \x1b[3mitalic\x1b[0m, \n \x1b[36m- Block quotes\x1b[0m \x1b[1;33m \x1b[0m\x1b[97;40mcode\x1b[0m \n \x1b[36m- Lists, and more...\x1b[0m \x1b[1;33m • \x1b[0mBlock quotes \n \x1b[36m \x1b[0m \x1b[1;33m • \x1b[0mLists, and more... \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m And more\x1b[0m\x1b[1;31m \x1b[0mProgress bars, columns, styled logging handler, tracebacks, etc... \n\x1b[1;31m \x1b[0m \n" +expected = "\x1b[3m Rich features \x1b[0m\n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Colors \x1b[0m\x1b[1;31m \x1b[0m✓ \x1b[1;32m4-bit color\x1b[0m \x1b[38;2;51;0;0m█\x1b[0m\x1b[38;2;51;5;0m█\x1b[0m\x1b[38;2;51;11;0m█\x1b[0m\x1b[38;2;51;17;0m█\x1b[0m\x1b[38;2;51;23;0m█\x1b[0m\x1b[38;2;51;29;0m█\x1b[0m\x1b[38;2;51;35;0m█\x1b[0m\x1b[38;2;51;41;0m█\x1b[0m\x1b[38;2;51;47;0m█\x1b[0m\x1b[38;2;49;51;0m█\x1b[0m\x1b[38;2;43;51;0m█\x1b[0m\x1b[38;2;37;51;0m█\x1b[0m\x1b[38;2;31;51;0m█\x1b[0m\x1b[38;2;25;51;0m█\x1b[0m\x1b[38;2;19;51;0m█\x1b[0m\x1b[38;2;13;51;0m█\x1b[0m\x1b[38;2;7;51;0m█\x1b[0m\x1b[38;2;1;51;0m█\x1b[0m\x1b[38;2;0;51;3m█\x1b[0m\x1b[38;2;0;51;9m█\x1b[0m\x1b[38;2;0;51;15m█\x1b[0m\x1b[38;2;0;51;21m█\x1b[0m\x1b[38;2;0;51;27m█\x1b[0m\x1b[38;2;0;51;33m█\x1b[0m\x1b[38;2;0;51;39m█\x1b[0m\x1b[38;2;0;51;45m█\x1b[0m\x1b[38;2;0;50;51m█\x1b[0m\x1b[38;2;0;45;51m█\x1b[0m\x1b[38;2;0;39;51m█\x1b[0m\x1b[38;2;0;33;51m█\x1b[0m\x1b[38;2;0;27;51m█\x1b[0m\x1b[38;2;0;21;51m█\x1b[0m\x1b[38;2;0;15;51m█\x1b[0m\x1b[38;2;0;9;51m█\x1b[0m\x1b[38;2;0;3;51m█\x1b[0m\x1b[38;2;1;0;51m█\x1b[0m\x1b[38;2;7;0;51m█\x1b[0m\x1b[38;2;13;0;51m█\x1b[0m\x1b[38;2;19;0;51m█\x1b[0m\x1b[38;2;25;0;51m█\x1b[0m\x1b[38;2;31;0;51m█\x1b[0m\x1b[38;2;37;0;51m█\x1b[0m\x1b[38;2;43;0;51m█\x1b[0m\x1b[38;2;49;0;51m█\x1b[0m\x1b[38;2;51;0;47m█\x1b[0m\x1b[38;2;51;0;41m█\x1b[0m\x1b[38;2;51;0;35m█\x1b[0m\x1b[38;2;51;0;29m█\x1b[0m\x1b[38;2;51;0;23m█\x1b[0m\x1b[38;2;51;0;17m█\x1b[0m\x1b[38;2;51;0;11m█\x1b[0m\x1b[38;2;51;0;5m█\x1b[0m \n ✓ \x1b[1;34m8-bit color\x1b[0m \x1b[38;2;122;0;0m█\x1b[0m\x1b[38;2;122;14;0m█\x1b[0m\x1b[38;2;122;28;0m█\x1b[0m\x1b[38;2;122;42;0m█\x1b[0m\x1b[38;2;122;56;0m█\x1b[0m\x1b[38;2;122;70;0m█\x1b[0m\x1b[38;2;122;84;0m█\x1b[0m\x1b[38;2;122;98;0m█\x1b[0m\x1b[38;2;122;112;0m█\x1b[0m\x1b[38;2;117;122;0m█\x1b[0m\x1b[38;2;103;122;0m█\x1b[0m\x1b[38;2;89;122;0m█\x1b[0m\x1b[38;2;75;122;0m█\x1b[0m\x1b[38;2;61;122;0m█\x1b[0m\x1b[38;2;47;122;0m█\x1b[0m\x1b[38;2;32;122;0m█\x1b[0m\x1b[38;2;18;122;0m█\x1b[0m\x1b[38;2;4;122;0m█\x1b[0m\x1b[38;2;0;122;9m█\x1b[0m\x1b[38;2;0;122;23m█\x1b[0m\x1b[38;2;0;122;37m█\x1b[0m\x1b[38;2;0;122;51m█\x1b[0m\x1b[38;2;0;122;65m█\x1b[0m\x1b[38;2;0;122;80m█\x1b[0m\x1b[38;2;0;122;94m█\x1b[0m\x1b[38;2;0;122;108m█\x1b[0m\x1b[38;2;0;122;122m█\x1b[0m\x1b[38;2;0;108;122m█\x1b[0m\x1b[38;2;0;94;122m█\x1b[0m\x1b[38;2;0;80;122m█\x1b[0m\x1b[38;2;0;65;122m█\x1b[0m\x1b[38;2;0;51;122m█\x1b[0m\x1b[38;2;0;37;122m█\x1b[0m\x1b[38;2;0;23;122m█\x1b[0m\x1b[38;2;0;9;122m█\x1b[0m\x1b[38;2;4;0;122m█\x1b[0m\x1b[38;2;18;0;122m█\x1b[0m\x1b[38;2;32;0;122m█\x1b[0m\x1b[38;2;47;0;122m█\x1b[0m\x1b[38;2;61;0;122m█\x1b[0m\x1b[38;2;75;0;122m█\x1b[0m\x1b[38;2;89;0;122m█\x1b[0m\x1b[38;2;103;0;122m█\x1b[0m\x1b[38;2;117;0;122m█\x1b[0m\x1b[38;2;122;0;112m█\x1b[0m\x1b[38;2;122;0;98m█\x1b[0m\x1b[38;2;122;0;84m█\x1b[0m\x1b[38;2;122;0;70m█\x1b[0m\x1b[38;2;122;0;56m█\x1b[0m\x1b[38;2;122;0;42m█\x1b[0m\x1b[38;2;122;0;28m█\x1b[0m\x1b[38;2;122;0;14m█\x1b[0m \n ✓ \x1b[1;35mTruecolor (16.7 million)\x1b[0m \x1b[38;2;193;0;0m█\x1b[0m\x1b[38;2;193;22;0m█\x1b[0m\x1b[38;2;193;44;0m█\x1b[0m\x1b[38;2;193;67;0m█\x1b[0m\x1b[38;2;193;89;0m█\x1b[0m\x1b[38;2;193;111;0m█\x1b[0m\x1b[38;2;193;134;0m█\x1b[0m\x1b[38;2;193;156;0m█\x1b[0m\x1b[38;2;193;178;0m█\x1b[0m\x1b[38;2;186;193;0m█\x1b[0m\x1b[38;2;163;193;0m█\x1b[0m\x1b[38;2;141;193;0m█\x1b[0m\x1b[38;2;119;193;0m█\x1b[0m\x1b[38;2;96;193;0m█\x1b[0m\x1b[38;2;74;193;0m█\x1b[0m\x1b[38;2;52;193;0m█\x1b[0m\x1b[38;2;29;193;0m█\x1b[0m\x1b[38;2;7;193;0m█\x1b[0m\x1b[38;2;0;193;14m█\x1b[0m\x1b[38;2;0;193;37m█\x1b[0m\x1b[38;2;0;193;59m█\x1b[0m\x1b[38;2;0;193;81m█\x1b[0m\x1b[38;2;0;193;104m█\x1b[0m\x1b[38;2;0;193;126m█\x1b[0m\x1b[38;2;0;193;149m█\x1b[0m\x1b[38;2;0;193;171m█\x1b[0m\x1b[38;2;0;193;193m█\x1b[0m\x1b[38;2;0;171;193m█\x1b[0m\x1b[38;2;0;149;193m█\x1b[0m\x1b[38;2;0;126;193m█\x1b[0m\x1b[38;2;0;104;193m█\x1b[0m\x1b[38;2;0;81;193m█\x1b[0m\x1b[38;2;0;59;193m█\x1b[0m\x1b[38;2;0;37;193m█\x1b[0m\x1b[38;2;0;14;193m█\x1b[0m\x1b[38;2;7;0;193m█\x1b[0m\x1b[38;2;29;0;193m█\x1b[0m\x1b[38;2;52;0;193m█\x1b[0m\x1b[38;2;74;0;193m█\x1b[0m\x1b[38;2;96;0;193m█\x1b[0m\x1b[38;2;119;0;193m█\x1b[0m\x1b[38;2;141;0;193m█\x1b[0m\x1b[38;2;163;0;193m█\x1b[0m\x1b[38;2;186;0;193m█\x1b[0m\x1b[38;2;193;0;178m█\x1b[0m\x1b[38;2;193;0;156m█\x1b[0m\x1b[38;2;193;0;134m█\x1b[0m\x1b[38;2;193;0;111m█\x1b[0m\x1b[38;2;193;0;89m█\x1b[0m\x1b[38;2;193;0;67m█\x1b[0m\x1b[38;2;193;0;44m█\x1b[0m\x1b[38;2;193;0;22m█\x1b[0m \n ✓ \x1b[1;33mDumb terminals\x1b[0m \x1b[38;2;255;10;10m█\x1b[0m\x1b[38;2;255;38;10m█\x1b[0m\x1b[38;2;255;66;10m█\x1b[0m\x1b[38;2;255;94;10m█\x1b[0m\x1b[38;2;255;123;10m█\x1b[0m\x1b[38;2;255;151;10m█\x1b[0m\x1b[38;2;255;179;10m█\x1b[0m\x1b[38;2;255;207;10m█\x1b[0m\x1b[38;2;255;236;10m█\x1b[0m\x1b[38;2;245;255;10m█\x1b[0m\x1b[38;2;217;255;10m█\x1b[0m\x1b[38;2;189;255;10m█\x1b[0m\x1b[38;2;160;255;10m█\x1b[0m\x1b[38;2;132;255;10m█\x1b[0m\x1b[38;2;104;255;10m█\x1b[0m\x1b[38;2;76;255;10m█\x1b[0m\x1b[38;2;47;255;10m█\x1b[0m\x1b[38;2;19;255;10m█\x1b[0m\x1b[38;2;10;255;29m█\x1b[0m\x1b[38;2;10;255;57m█\x1b[0m\x1b[38;2;10;255;85m█\x1b[0m\x1b[38;2;10;255;113m█\x1b[0m\x1b[38;2;10;255;142m█\x1b[0m\x1b[38;2;10;255;170m█\x1b[0m\x1b[38;2;10;255;198m█\x1b[0m\x1b[38;2;10;255;226m█\x1b[0m\x1b[38;2;10;254;255m█\x1b[0m\x1b[38;2;10;226;255m█\x1b[0m\x1b[38;2;10;198;255m█\x1b[0m\x1b[38;2;10;170;255m█\x1b[0m\x1b[38;2;10;142;255m█\x1b[0m\x1b[38;2;10;113;255m█\x1b[0m\x1b[38;2;10;85;255m█\x1b[0m\x1b[38;2;10;57;255m█\x1b[0m\x1b[38;2;10;29;255m█\x1b[0m\x1b[38;2;19;10;255m█\x1b[0m\x1b[38;2;47;10;255m█\x1b[0m\x1b[38;2;76;10;255m█\x1b[0m\x1b[38;2;104;10;255m█\x1b[0m\x1b[38;2;132;10;255m█\x1b[0m\x1b[38;2;160;10;255m█\x1b[0m\x1b[38;2;189;10;255m█\x1b[0m\x1b[38;2;217;10;255m█\x1b[0m\x1b[38;2;245;10;255m█\x1b[0m\x1b[38;2;255;10;236m█\x1b[0m\x1b[38;2;255;10;207m█\x1b[0m\x1b[38;2;255;10;179m█\x1b[0m\x1b[38;2;255;10;151m█\x1b[0m\x1b[38;2;255;10;123m█\x1b[0m\x1b[38;2;255;10;94m█\x1b[0m\x1b[38;2;255;10;66m█\x1b[0m\x1b[38;2;255;10;38m█\x1b[0m \n ✓ \x1b[1;36mAutomatic color conversion\x1b[0m \x1b[38;2;255;81;81m█\x1b[0m\x1b[38;2;255;101;81m█\x1b[0m\x1b[38;2;255;121;81m█\x1b[0m\x1b[38;2;255;141;81m█\x1b[0m\x1b[38;2;255;161;81m█\x1b[0m\x1b[38;2;255;181;81m█\x1b[0m\x1b[38;2;255;201;81m█\x1b[0m\x1b[38;2;255;221;81m█\x1b[0m\x1b[38;2;255;241;81m█\x1b[0m\x1b[38;2;248;255;81m█\x1b[0m\x1b[38;2;228;255;81m█\x1b[0m\x1b[38;2;208;255;81m█\x1b[0m\x1b[38;2;188;255;81m█\x1b[0m\x1b[38;2;168;255;81m█\x1b[0m\x1b[38;2;148;255;81m█\x1b[0m\x1b[38;2;128;255;81m█\x1b[0m\x1b[38;2;108;255;81m█\x1b[0m\x1b[38;2;88;255;81m█\x1b[0m\x1b[38;2;81;255;94m█\x1b[0m\x1b[38;2;81;255;114m█\x1b[0m\x1b[38;2;81;255;134m█\x1b[0m\x1b[38;2;81;255;154m█\x1b[0m\x1b[38;2;81;255;174m█\x1b[0m\x1b[38;2;81;255;194m█\x1b[0m\x1b[38;2;81;255;214m█\x1b[0m\x1b[38;2;81;255;234m█\x1b[0m\x1b[38;2;81;254;255m█\x1b[0m\x1b[38;2;81;234;255m█\x1b[0m\x1b[38;2;81;214;255m█\x1b[0m\x1b[38;2;81;194;255m█\x1b[0m\x1b[38;2;81;174;255m█\x1b[0m\x1b[38;2;81;154;255m█\x1b[0m\x1b[38;2;81;134;255m█\x1b[0m\x1b[38;2;81;114;255m█\x1b[0m\x1b[38;2;81;94;255m█\x1b[0m\x1b[38;2;88;81;255m█\x1b[0m\x1b[38;2;108;81;255m█\x1b[0m\x1b[38;2;128;81;255m█\x1b[0m\x1b[38;2;148;81;255m█\x1b[0m\x1b[38;2;168;81;255m█\x1b[0m\x1b[38;2;188;81;255m█\x1b[0m\x1b[38;2;208;81;255m█\x1b[0m\x1b[38;2;228;81;255m█\x1b[0m\x1b[38;2;248;81;255m█\x1b[0m\x1b[38;2;255;81;241m█\x1b[0m\x1b[38;2;255;81;221m█\x1b[0m\x1b[38;2;255;81;201m█\x1b[0m\x1b[38;2;255;81;181m█\x1b[0m\x1b[38;2;255;81;161m█\x1b[0m\x1b[38;2;255;81;141m█\x1b[0m\x1b[38;2;255;81;121m█\x1b[0m\x1b[38;2;255;81;101m█\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Styles \x1b[0m\x1b[1;31m \x1b[0mAll ansi styles: \x1b[1mbold\x1b[0m, \x1b[2mdim\x1b[0m, \x1b[3mitalic\x1b[0m, \x1b[4munderline\x1b[0m, \x1b[9mstrikethrough\x1b[0m, \x1b[7mreverse\x1b[0m, and even \n \x1b[5mblink\x1b[0m. \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Text \x1b[0m\x1b[1;31m \x1b[0mWord wrap text. Justify \x1b[32mleft\x1b[0m, \x1b[33mcenter\x1b[0m, \x1b[34mright\x1b[0m or \x1b[31mfull\x1b[0m. \n \n \x1b[32mLorem ipsum dolor \x1b[0m \x1b[33m Lorem ipsum dolor \x1b[0m \x1b[34m Lorem ipsum dolor\x1b[0m \x1b[31mLorem\x1b[0m\x1b[31m \x1b[0m\x1b[31mipsum\x1b[0m\x1b[31m \x1b[0m\x1b[31mdolor\x1b[0m\x1b[31m \x1b[0m\x1b[31msit\x1b[0m \n \x1b[32msit amet, \x1b[0m \x1b[33m sit amet, \x1b[0m \x1b[34m sit amet,\x1b[0m \x1b[31mamet,\x1b[0m\x1b[31m \x1b[0m\x1b[31mconsectetur\x1b[0m \n \x1b[32mconsectetur \x1b[0m \x1b[33m consectetur \x1b[0m \x1b[34m consectetur\x1b[0m \x1b[31madipiscing\x1b[0m\x1b[31m \x1b[0m\x1b[31melit.\x1b[0m \n \x1b[32madipiscing elit. \x1b[0m \x1b[33m adipiscing elit. \x1b[0m \x1b[34m adipiscing elit.\x1b[0m \x1b[31mQuisque\x1b[0m\x1b[31m \x1b[0m\x1b[31min\x1b[0m\x1b[31m \x1b[0m\x1b[31mmetus\x1b[0m\x1b[31m \x1b[0m\x1b[31msed\x1b[0m \n \x1b[32mQuisque in metus \x1b[0m \x1b[33mQuisque in metus sed\x1b[0m \x1b[34m Quisque in metus\x1b[0m \x1b[31msapien\x1b[0m\x1b[31m \x1b[0m\x1b[31multricies\x1b[0m \n \x1b[32msed sapien \x1b[0m \x1b[33m sapien ultricies \x1b[0m \x1b[34m sed sapien\x1b[0m \x1b[31mpretium\x1b[0m\x1b[31m \x1b[0m\x1b[31ma\x1b[0m\x1b[31m \x1b[0m\x1b[31mat\x1b[0m\x1b[31m \x1b[0m\x1b[31mjusto.\x1b[0m \n \x1b[32multricies pretium a\x1b[0m \x1b[33mpretium a at justo. \x1b[0m \x1b[34multricies pretium a\x1b[0m \x1b[31mMaecenas\x1b[0m\x1b[31m \x1b[0m\x1b[31mluctus\x1b[0m\x1b[31m \x1b[0m\x1b[31mvelit\x1b[0m \n \x1b[32mat justo. Maecenas \x1b[0m \x1b[33m Maecenas luctus \x1b[0m \x1b[34m at justo. Maecenas\x1b[0m \x1b[31met auctor maximus.\x1b[0m \n \x1b[32mluctus velit et \x1b[0m \x1b[33m velit et auctor \x1b[0m \x1b[34m luctus velit et\x1b[0m \n \x1b[32mauctor maximus. \x1b[0m \x1b[33m maximus. \x1b[0m \x1b[34m auctor maximus.\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31mAsian languages\x1b[0m\x1b[1;31m \x1b[0m🇨🇳 该库支持中文,日文和韩文文本! \n 🇯🇵 ライブラリは中国語、日本語、韓国語のテキストをサポートしています \n 🇰🇷 이 라이브러리는 중국어, 일본어 및 한국어 텍스트를 지원합니다 \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31mConsole markup \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;35mRich\x1b[0m supports a simple \x1b[3mbbcode\x1b[0m like \x1b[1mmarkup\x1b[0m for \x1b[33mcolor\x1b[0m, \x1b[4mstyle\x1b[0m, and emoji! 👍 🍎 🐜 … \n 🥖 🚌 \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Tables \x1b[0m\x1b[1;31m \x1b[0m\x1b[1m \x1b[0m\x1b[1;32mDate\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;34mTitle\x1b[0m\x1b[1m \x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1;36mProduction Budget\x1b[0m\x1b[1m \x1b[0m \x1b[1m \x1b[0m\x1b[1m \x1b[0m\x1b[1;35mBox Office\x1b[0m\x1b[1m \x1b[0m \n ────────────────────────────────────────────────────────────────────────────────── \n \x1b[32m \x1b[0m\x1b[32mDec 20, 2019\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars: The Rise of \x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $275,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[35m $375,126,118\x1b[0m\x1b[35m \x1b[0m \n \x1b[34m \x1b[0m\x1b[34mSkywalker \x1b[0m\x1b[34m \x1b[0m \n \x1b[2;32m \x1b[0m\x1b[2;32mMay 25, 2018\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[1;2;34mSolo\x1b[0m\x1b[2;34m: A Star Wars Story \x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $275,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m $393,151,347\x1b[0m\x1b[2;35m \x1b[0m \n \x1b[32m \x1b[0m\x1b[32mDec 15, 2017\x1b[0m\x1b[32m \x1b[0m \x1b[34m \x1b[0m\x1b[34mStar Wars Ep. VIII: The Last\x1b[0m\x1b[34m \x1b[0m \x1b[36m \x1b[0m\x1b[36m $262,000,000\x1b[0m\x1b[36m \x1b[0m \x1b[35m \x1b[0m\x1b[1;35m$1,332,539,889\x1b[0m\x1b[35m \x1b[0m \n \x1b[34m \x1b[0m\x1b[34mJedi \x1b[0m\x1b[34m \x1b[0m \n \x1b[2;32m \x1b[0m\x1b[2;32mMay 19, 1999\x1b[0m\x1b[2;32m \x1b[0m \x1b[2;34m \x1b[0m\x1b[2;34mStar Wars Ep. \x1b[0m\x1b[1;2;34mI\x1b[0m\x1b[2;34m: \x1b[0m\x1b[2;3;34mThe phantom\x1b[0m\x1b[2;34m \x1b[0m \x1b[2;36m \x1b[0m\x1b[2;36m $115,000,000\x1b[0m\x1b[2;36m \x1b[0m \x1b[2;35m \x1b[0m\x1b[2;35m$1,027,044,677\x1b[0m\x1b[2;35m \x1b[0m \n \x1b[2;34m \x1b[0m\x1b[2;3;34mMenace\x1b[0m\x1b[2;34m \x1b[0m\x1b[2;34m \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Syntax \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 1 \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mdef\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34miter_last\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mIterable\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m[\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mT\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m]\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m \x1b[1m{\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m highlighting \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 2 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;230;219;116;48;2;39;40;34m\"\"\"Iterate and generate a tuple\x1b[0m \x1b[2;32m│ \x1b[0m\x1b[32m'foo'\x1b[0m: \x1b[1m[\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m & \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 3 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalues\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m)\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1;34m3.1427\x1b[0m, \n\x1b[1;31m \x1b[0m\x1b[1;31m pretty \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 4 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mtry\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1m(\x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m printing \x1b[0m\x1b[1;31m \x1b[0m\x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 5 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mnext\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m(\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_\x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Paul Atriedies'\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 6 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mexcept\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;166;226;46;48;2;39;40;34mStopIteration\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Vladimir Harkonnen'\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 7 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mreturn\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ │ \x1b[0m\x1b[32m'Thufir Haway'\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 8 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mfor\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34min\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34miter_values\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m:\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ │ \x1b[0m\x1b[1m)\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m 9 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mFalse\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m \x1b[2;32m│ \x1b[0m\x1b[1m]\x1b[0m, \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m10 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ │ \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;249;38;114;48;2;39;40;34m=\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mvalue\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[2;32m│ \x1b[0m\x1b[32m'atomic'\x1b[0m: \x1b[1m(\x1b[0m\x1b[3;91mFalse\x1b[0m, \x1b[3;92mTrue\x1b[0m, \x1b[3;35mNone\x1b[0m\x1b[1m)\x1b[0m \n \x1b[1;38;2;227;227;221;48;2;39;40;34m \x1b[0m\x1b[38;2;101;102;96;48;2;39;40;34m11 \x1b[0m\x1b[2;38;2;117;113;94;48;2;39;40;34m│ \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34myield\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;102;217;239;48;2;39;40;34mTrue\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m,\x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34m \x1b[0m\x1b[38;2;248;248;242;48;2;39;40;34mprevious_value\x1b[0m\x1b[48;2;39;40;34m \x1b[0m \x1b[1m}\x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m Markdown \x1b[0m\x1b[1;31m \x1b[0m\x1b[36m# Markdown\x1b[0m ╔══════════════════════════════════════╗ \n ║ \x1b[1mMarkdown\x1b[0m ║ \n \x1b[36mSupports much of the *markdown*, \x1b[0m ╚══════════════════════════════════════╝ \n \x1b[36m__syntax__!\x1b[0m \n Supports much of the \x1b[3mmarkdown\x1b[0m, \x1b[1msyntax\x1b[0m! \n \x1b[36m- Headers\x1b[0m \n \x1b[36m- Basic formatting: **bold**, *italic*, \x1b[0m \x1b[1;33m • \x1b[0mHeaders \n \x1b[36m`code`\x1b[0m \x1b[1;33m • \x1b[0mBasic formatting: \x1b[1mbold\x1b[0m, \x1b[3mitalic\x1b[0m, \x1b[97;40mcode\x1b[0m \n \x1b[36m- Block quotes\x1b[0m \x1b[1;33m • \x1b[0mBlock quotes \n \x1b[36m- Lists, and more...\x1b[0m \x1b[1;33m • \x1b[0mLists, and more... \n \x1b[36m \x1b[0m \n\x1b[1;31m \x1b[0m \n\x1b[1;31m \x1b[0m\x1b[1;31m And more \x1b[0m\x1b[1;31m \x1b[0mProgress bars, columns, styled logging handler, tracebacks, etc... \n\x1b[1;31m \x1b[0m \n"