Readme bahasa Inggris • 简体中文 readme • 正體中文 readme • Lengua española readme • Deutsche readme • Läs på svenska • 日本語 readme • 한국어 readme • Français readme • Schwizerdütsch readme • हिन्दी readme • Português brasileiro readme • Italian readme • Русский readme • Indonesia readme • فارسی readme • Türkçe readme • Polskie readme
Rich adalah pustaka Python untuk teks kaya dan pemformatan indah di terminal.
Rich API memudahkan penambahan warna dan gaya pada keluaran terminal. Rich juga dapat merender tabel cantik, bilah kemajuan, penurunan harga, kode sumber yang disorot sintaksis, penelusuran balik, dan banyak lagi — langsung dari kotaknya.
Untuk video pengenalan Kaya, lihat calmcode.io oleh @fishnets88.
Lihat apa kata orang tentang Kaya.
Kaya bekerja dengan Linux, macOS dan Windows. Warna asli / emoji berfungsi dengan Terminal Windows baru, terminal klasik dibatasi hingga 16 warna. Kaya membutuhkan Python 3.8 atau lebih baru.
Rich berfungsi dengan notebook Jupyter tanpa memerlukan konfigurasi tambahan.
Instal dengan pip
atau manajer paket PyPI favorit Anda.
python -m pip install rich
Jalankan perintah berikut untuk menguji keluaran Kaya di terminal Anda:
python -m rich
Untuk menambahkan keluaran kaya ke aplikasi Anda dengan mudah, Anda dapat mengimpor metode pencetakan kaya, yang memiliki tanda tangan yang sama dengan fungsi bawaan Python. Coba ini:
from rich import print
print ( "Hello, [bold magenta]World[/bold magenta]!" , ":vampire:" , locals ())
Rich dapat diinstal di Python REPL, sehingga struktur data apa pun akan dicetak dan disorot dengan baik.
>> > from rich import pretty
>> > pretty . install ()
Untuk kontrol lebih besar atas konten terminal yang kaya, impor dan buat objek Konsol.
from rich . console import Console
console = Console ()
Objek Konsol memiliki metode print
yang sengaja dibuat serupa dengan fungsi print
bawaan. Berikut ini contoh penggunaannya:
console . print ( "Hello" , "World!" )
Seperti yang Anda duga, ini akan mencetak "Hello World!"
ke terminal. Perhatikan bahwa tidak seperti fungsi print
bawaan, Rich akan membungkus teks Anda agar sesuai dengan lebar terminal.
Ada beberapa cara untuk menambahkan warna dan gaya pada keluaran Anda. Anda dapat mengatur gaya untuk keseluruhan keluaran dengan menambahkan argumen kata kunci style
. Berikut ini contohnya:
console . print ( "Hello" , "World!" , style = "bold red" )
Outputnya akan seperti berikut:
Itu bagus untuk menata satu baris teks sekaligus. Untuk gaya yang lebih halus, Rich merender markup khusus yang sintaksisnya mirip dengan bbcode. Berikut ini contohnya:
console . print ( "Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i]." )
Anda dapat menggunakan objek Console untuk menghasilkan keluaran canggih dengan sedikit usaha. Lihat dokumen Console API untuk mengetahui detailnya.
Rich memiliki fungsi inspeksi yang dapat menghasilkan laporan pada objek Python apa pun, seperti kelas, instance, atau bawaan.
>> > my_list = [ "foo" , "bar" ]
>> > from rich import inspect
>> > inspect ( my_list , methods = True )
Lihat dokumen pemeriksaan untuk detailnya.
Rich berisi sejumlah renderable bawaan yang dapat Anda gunakan untuk membuat keluaran elegan di CLI dan membantu Anda men-debug kode Anda.
Klik judul berikut untuk detailnya:
Objek Console memiliki metode log()
yang memiliki antarmuka mirip dengan print()
, namun juga merender kolom untuk waktu saat ini serta file dan baris yang melakukan panggilan. Secara default, Rich akan melakukan penyorotan sintaksis untuk struktur Python dan string repr. Jika Anda mencatat suatu koleksi (yaitu dict atau daftar) Rich akan mencetaknya dengan cantik sehingga muat di ruang yang tersedia. Berikut ini contoh beberapa fitur tersebut.
from rich . console import Console
console = Console ()
test_data = [
{ "jsonrpc" : "2.0" , "method" : "sum" , "params" : [ None , 1 , 2 , 4 , False , True ], "id" : "1" ,},
{ "jsonrpc" : "2.0" , "method" : "notify_hello" , "params" : [ 7 ]},
{ "jsonrpc" : "2.0" , "method" : "subtract" , "params" : [ 42 , 23 ], "id" : "2" },
]
def test_log ():
enabled = False
context = {
"foo" : "bar" ,
}
movies = [ "Deadpool" , "Rise of the Skywalker" ]
console . log ( "Hello from" , console , "!" )
console . log ( test_data , log_locals = True )
test_log ()
Di atas menghasilkan keluaran sebagai berikut:
Perhatikan argumen log_locals
, yang menampilkan tabel berisi variabel lokal tempat metode log dipanggil.
Metode log dapat digunakan untuk masuk ke terminal untuk aplikasi yang berjalan lama seperti server, namun juga merupakan bantuan debugging yang sangat bagus.
Anda juga dapat menggunakan kelas Handler bawaan untuk memformat dan mewarnai keluaran dari modul logging Python. Berikut ini contoh hasilnya:
Untuk memasukkan emoji ke keluaran konsol, tempatkan nama di antara dua titik dua. Berikut ini contohnya:
>> > console . print ( ":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:" )
? ? ? ? ?
Harap gunakan fitur ini dengan bijak.
Rich dapat merender tabel fleksibel dengan karakter kotak unicode. Ada beragam pilihan pemformatan untuk batas, gaya, perataan sel, dll.
Animasi di atas dihasilkan dengan table_movie.py di direktori contoh.
Berikut contoh tabel yang lebih sederhana:
from rich . console import Console
from rich . table import Table
console = Console ()
table = Table ( show_header = True , header_style = "bold magenta" )
table . add_column ( "Date" , style = "dim" , width = 12 )
table . add_column ( "Title" )
table . add_column ( "Production Budget" , justify = "right" )
table . add_column ( "Box Office" , justify = "right" )
table . add_row (
"Dec 20, 2019" , "Star Wars: The Rise of Skywalker" , "$275,000,000" , "$375,126,118"
)
table . add_row (
"May 25, 2018" ,
"[red]Solo[/red]: A Star Wars Story" ,
"$275,000,000" ,
"$393,151,347" ,
)
table . add_row (
"Dec 15, 2017" ,
"Star Wars Ep. VIII: The Last Jedi" ,
"$262,000,000" ,
"[bold]$1,332,539,889[/bold]" ,
)
console . print ( table )
Ini menghasilkan output berikut:
Perhatikan bahwa markup konsol dirender dengan cara yang sama seperti print()
dan log()
. Faktanya, apa pun yang dapat dirender oleh Rich dapat dimasukkan dalam header/baris (bahkan tabel lainnya).
Kelas Table
cukup pintar untuk mengubah ukuran kolom agar sesuai dengan lebar terminal yang tersedia, membungkus teks sesuai kebutuhan. Berikut contoh yang sama, dengan terminal dibuat lebih kecil dari tabel di atas:
Rich dapat merender beberapa bilah kemajuan bebas kedipan untuk melacak tugas yang berjalan lama.
Untuk penggunaan dasar, gabungkan urutan apa pun dalam fungsi track
dan ulangi hasilnya. Berikut ini contohnya:
from rich . progress import track
for step in track ( range ( 100 )):
do_step ( step )
Tidak sulit untuk menambahkan beberapa bilah kemajuan. Berikut ini contoh yang diambil dari dokumen:
Kolom dapat dikonfigurasi untuk menampilkan detail apa pun yang Anda inginkan. Kolom bawaan mencakup persentase selesai, ukuran file, kecepatan file, dan sisa waktu. Berikut contoh lain yang menunjukkan pengunduhan sedang berlangsung:
Untuk mencobanya sendiri, lihat example/downloader.py yang dapat mengunduh banyak URL secara bersamaan sambil menampilkan kemajuan.
Untuk situasi di mana sulit menghitung kemajuan, Anda dapat menggunakan metode status yang akan menampilkan animasi dan pesan 'spinner'. Animasi tidak akan menghalangi Anda menggunakan konsol seperti biasa. Berikut ini contohnya:
from time import sleep
from rich . console import Console
console = Console ()
tasks = [ f"task { n } " for n in range ( 1 , 11 )]
with console . status ( "[bold green]Working on tasks..." ) as status :
while tasks :
task = tasks . pop ( 0 )
sleep ( 1 )
console . log ( f" { task } complete" )
Ini menghasilkan output berikut di terminal.
Animasi spinner dipinjam dari cli-spinners. Anda dapat memilih spinner dengan menentukan parameter spinner
. Jalankan perintah berikut untuk melihat nilai yang tersedia:
python -m rich.spinner
Perintah di atas menghasilkan output berikut di terminal:
Rich dapat merender pohon dengan garis panduan. Pohon sangat ideal untuk menampilkan struktur file, atau data hierarki lainnya.
Label pohon dapat berupa teks sederhana atau apa pun yang dapat dirender oleh Rich. Jalankan perintah berikut untuk demonstrasi:
python -m rich.tree
Ini menghasilkan output berikut:
Lihat contoh tree.py untuk skrip yang menampilkan tampilan pohon dari direktori mana pun, mirip dengan perintah tree
linux.
Rich dapat merender konten dalam kolom yang rapi dengan lebar yang sama atau optimal. Berikut adalah tiruan dasar dari perintah ls
(MacOS / Linux) yang menampilkan daftar direktori dalam kolom:
import os
import sys
from rich import print
from rich . columns import Columns
directory = os . listdir ( sys . argv [ 1 ])
print ( Columns ( directory ))
Tangkapan layar berikut adalah keluaran dari contoh kolom yang menampilkan data yang diambil dari API dalam kolom:
Rich dapat memberikan penurunan harga dan melakukan pekerjaan yang wajar dalam menerjemahkan format ke terminal.
Untuk merender penurunan harga, impor kelas Markdown
dan buatlah dengan string yang berisi kode penurunan harga. Kemudian cetak ke konsol. Berikut ini contohnya:
from rich . console import Console
from rich . markdown import Markdown
console = Console ()
with open ( "README.md" ) as readme :
markdown = Markdown ( readme . read ())
console . print ( markdown )
Ini akan menghasilkan output seperti berikut:
Rich menggunakan perpustakaan pygments untuk mengimplementasikan penyorotan sintaksis. Penggunaannya mirip dengan rendering penurunan harga; buat objek Syntax
dan cetak ke konsol. Berikut ini contohnya:
from rich . console import Console
from rich . syntax import Syntax
my_code = '''
def iter_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
"""Iterate and generate a tuple with a flag for first and last value."""
iter_values = iter(values)
try:
previous_value = next(iter_values)
except StopIteration:
return
first = True
for value in iter_values:
yield first, False, previous_value
first = False
previous_value = value
yield first, True, previous_value
'''
syntax = Syntax ( my_code , "python" , theme = "monokai" , line_numbers = True )
console = Console ()
console . print ( syntax )
Ini akan menghasilkan output berikut:
Rich dapat merender traceback indah yang lebih mudah dibaca dan menampilkan lebih banyak kode dibandingkan traceback Python standar. Anda dapat mengatur Rich sebagai pengendali traceback default sehingga semua pengecualian yang tidak tertangkap akan dirender oleh Rich.
Berikut tampilannya di OSX (mirip di Linux):
Semua Kaya yang dapat dirender menggunakan Protokol Konsol, yang juga dapat Anda gunakan untuk mengimplementasikan konten Kaya Anda sendiri.
Lihat juga Rich CLI untuk aplikasi baris perintah yang didukung oleh Rich. Kode sorotan sintaksis, render penurunan harga, menampilkan CSV dalam tabel, dan banyak lagi, langsung dari command prompt.
Lihat juga proyek saudara Rich, Tekstual, yang dapat Anda gunakan untuk membangun Antarmuka Pengguna yang canggih di terminal.