Back to Rich

README.Tr

README.tr.md

15.0.017.3 KB
Original Source

English readme简体中文 readme正體中文 readmeLengua española readmeDeutsche readmeLäs på svenska日本語 readme한국어 readmeFrançais readmeSchwizerdütsch readmeहिन्दी readmePortuguês brasileiro readmeItalian readmeРусский readmeIndonesian readmeفارسی readmeTürkçe readmePolskie readme

Bir Python kütüphanesi olan rich, terminal üzerinde gösterişli çıktılar almanızı sağlayan bir araçtır.

Rich API kullanarak terminal çıktılarınıza stil ekleyebilir ve renklendirebilirsiniz. Aynı zamanda tabloları, ilerleme çubuklarını, markdown stillerini, kaynak koddaki söz dizimi gösterimlerini ve bir çok şeyi rich kullanarak yapabilirsiniz.

Rich'e video ile göz atmak için @fishnets88 tarafından oluşturulan calmcode.io sitesine bakabilirsiniz.

İnsanların rich hakkında yazdıkları son yazılar.

Uyumluluk

Rich Linux, OSX ve Windows üzerinde çalışabilir. Windows'un yeni terminalinde de doğru bir şekilde çalışabilir, eski terminalde 16 renk olduğu için istenilen sonuçlar elde edilemeyebilir. Aynı zamanda Rich'in çalışabilmesi için ortamda minimum Python 3.6.3 veya daha yeni bir sürüm olması gerekmektedir.

Rich Jupyter notebook üzerinde hiç bir ek yükleme gerektirmeden çalışabilir.

Yükleme

pip üzerinden veya kullanmış olduğunuz PyPI paket yöneticiniz üzerinden indirebilirsiniz.

sh
python -m pip install rich

Aşağıdaki komut satırını çalıştırarak çıktınızı terminal üzerinden görebilirsiniz.

sh
python -m rich

Rich Print

rich print methodunu yükleyerek, Rich'i kullanmaya başlayabilirsiniz.

python
from rich import print

print("Merhaba, [bold magenta]Dünya[/bold magenta]!", ":vampire:", locals())

Buradaki yazıyı değiştiremediğim için siz hello world olarak görüyorsunuz. :D

Rich REPL

Rich Python REPL içerisine yüklenebilir, böylece herhangi bir veri tipini güzelce terminal çıktısı olarak verebilir.

python
>>> from rich import pretty
>>> pretty.install()

Terminali Nasıl Kullanılır?

Çıktılarınız üzerinde daha fazla hakimiyet kurmak isterseniz, Console'u import edip objesini kullanabilirsiniz.

python
from rich.console import Console

console = Console()

Console objesi tıpkı Python içerisinde hazır gelen print methoduna benziyor, tabii daha fazlası da var. Kullanımı aşağıdaki örnek gibi olacaktır:

python
console.print("Merhaba", "Dünya!")

Sizin de tahmin edebileceğiniz gibi terminal çıktımız "Merhaba Dünya!" olacaktır. Standart print fonksiyonundan farklı olarak Console print fonksiyonu terminale sığmayan yazıları kaydırma özelliğine sahiptir.

Yazılarımıza birden fazla şekilde renk ekleyebiliriz. Bunlardan ek basit olan şekli, style argümanına rengimizi vermek. Aşağıda nasıl kullanılacağına dair bir örnek bulabilirsiniz.

python
console.print("Merhaba", "Dünya!", style="bold red")

Eğer çıktıyı değiştirmeseydim aşağıdaki gibi bir görüntü ile karşılaşacaktınız:

Tek seferde bir yazıyı renklendirmek için kullanışlı bir yöntem olsa da, eğer çıktımızın sadece belirli bölgelerinde değişiklik yapacaksak bbcode söz dizimini kullanmalıyız. Bunun için de bir örnek:

python
console.print("[bold red]Mustafa Kemal Atatürk[/bold red] [u](1881 - 10 Kasım 1938)[/u], [i]Türk asker ve devlet adamıdır[/i]. [bold cyan]Türk Kurtuluş Savaşı'nın başkomutanı ve Türkiye Cumhuriyeti'nin kurucusudur[/bold cyan].")

Console objesini kullanarak sofistike bir çok çıktıyı minimum efor ile oluşturabilirsiniz. Console API dökümanına göz atarak daha fazla bilgi elde edebilirsiniz.

Rich Inspect

Rich inspect adında bir fonksiyona sahiptir ve bu fonksiyon bize bir Python objesininin özelliklerini gösterir.

python
>>> my_list = ["foo", "bar"]
>>> from rich import inspect
>>> inspect(my_list, methods=True)

Bu dökümana göz atarak daha fazla bilgi elde edebilirsiniz...

Rich Kütüphaneleri

Rich içerisinde terminal üzerinde kullandığınızda çıktılarınızı gösterişli kılacak çok fazla yapıya sahiptir.

Bu yapıların detayları için ilgili başlıklara tıklayın:

<details> <summary>Log</summary>

Console objesi içerisinde log() methodunu barındırır, bu tıpkı print() methodu gibi davranır fakat buna ek olarak bastırıldığı zamanı da ekrana yansıtır. Bu duruma ek olarak Rich Syntax Highlighting'de gerçekleştirir. Aşağıda örnek kod parçası:

python
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()

Ve bu kod parçasının çıktısı:

log_locals argümanı, local olarak bulunan değişkenleri tablo olarak ekrana bastırır.

</details> <details> <summary>Logging Handler</summary>

Python'un logging modülünü de Handler sınıfı ile formatlayıp renklendirebiliriz.

</details> <details> <summary>Emoji</summary>

Emojileri de kullanabilirsiniz, kullanımı markdown emojileri ile aynı.

python
>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
😃 🧛 💩 👍 🦝

Bu özelliği doğru yerlerde kullanmakta fayda var tabii.

</details> <details> <summary>Tables</summary>

Rich kullanıcılarına esnek bir tablo imkanı sunar, birden fazla şekilde formatlayıp, stillendirip kullanabilirsiniz.

Yukarıdaki tablo örneği table_movie.py örnek kodu ile oluşturulmuştur.

Basit bir tablo örneği:

python
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)

Kodun çıktısı aşağıdaki gibi olmaktadır:

Note that console markup is rendered in the same way as print() and log(). In fact, anything that is renderable by Rich may be included in the headers / rows (even other tables).

Table sınıfı kendini terminal ekranına göre ayarlayabilir, genişletip, küçültebilir. Burada bunun ile alakalı bir örnek görüyorsunuz.

</details> <details> <summary>Progress Bars</summary>

Uzun işlerinizi göstermek için Rich size birden fazla progress bar sunuyor.

Basit bir kullanım için, herhangi bir adımınızı track fonksiyonu ile kapsayıp döngüye alın.

python
from rich.progress import track

for step in track(range(100)):
    do_step(step)

Aşağıdaki görsellerde de görüleceği üzere birden fazla kez progress bar kullanabilirsiniz, ve dökümandan da anlaşılacağı üzere bu hiç de zor bir iş değil.

Kolonlar kullanıcı tarafından ayarlanabilir, indirme hızını, dosya boyutunu yüzdesel olarak gösterimi gibi bir çok şekilde gösterim sağlayabilir.

Eğer siz de denemek isterseniz examples/downloader.py koduna bakarak ve çalıştırarak indirme yapabilirsiniz.

</details> <details> <summary>Status</summary>

Eğer hesaplamanız gereken uzun işler varsa ve bunu progress bar ile gösteremiyorsanız yardımınıza status methodu yetişecektir.

python
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")

Yukarıdaki kod parçacığı aşağıdaki gibi bir çıktı üretecektir.

Spin animasyonu cli-spinners kütüphanesinden alınmıştır. spinner parametresi ile seçeceğiniz spin şekilini kullanabilirsiniz.

python -m rich.spinner

Çıktısı aşağıdaki gibi bir sonuç üretecektir:

</details> <details> <summary>Tree</summary>

Rich bir tree yapısını yardımcı çizgiler ile bastırabilir. Bu yapı bir dosya yapısını göstermek için veya hiyerarşik veri yapılarını göstermek için kullanılabilir.

Label yapısı ise basit bir text veya Rich üzerinde bastırılabilen her hangi bir yapı olabilir.

python -m rich.tree

Kodun çıkartacağı görüntü şu olacaktır:

tree.py örnek dosyası ile linux'da bulunan tree kodunu rich üzerinden simüle edebilirsiniz.

</details> <details> <summary>Columns</summary>

Rich içerikleri kolon olarak eşit veya optimal aralıklarla gösterebilir.

Burada basit bir ls klonunu görüyorsunz.

python
import os
import sys

from rich import print
from rich.columns import Columns

directory = os.listdir(sys.argv[1])
print(Columns(directory))

Yukarıdaki yapıya columns example bağlantısı üzerinden ulaşabilirsiniz.

</details> <details> <summary>Markdown</summary>

Rich markdown stillerini ve çevirme işlemlerini de ekranda gösterebilir.

Sadece yapılması gereken Markdown sınıfını import edip, içeriğini doldurup ekrana bastırmak.

python
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)

Aşağıdaki gibi bir çıktıya ulaşacağız.

</details> <details> <summary>Syntax Highlighting</summary>

Rich içerisinde syntax highlighting için pygments kütüphanesini kullanıyor. Tıpkı markdown'da olduğu gibi, bir tane Syntax objesi oluşturup bu objeyi terminale bastırıyoruz. Örnek:

python
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)

Yukarıdaki kod parçası aşağıdaki gibi bir çıktı üretecektir.

</details> <details> <summary>Tracebacks</summary>

Rich sahip olduğu güzel traceback'ler yaratabilir. Böylece daha okunabilir ve daha kolay anlaşılabilen bir yapıya sahip olursunuz.

Burada OSX üzerinde (tıpkı Linux gibi) bir traceback çıktısı görüyorsunuz.

</details>

Tüm rich yapıları Console Protocol kullanılarak gerçekleştirilmiştir, siz de kendi içeriğinizi Rich'e aktarabilirsiniz.

Rich CLI

Aynı zamanda Rich CLI uygulamasını da kontrol edin. Bu uygulama ile konsol çıktılarınızı renklendirebilir, kod çıktılarınıza syntax uygulayabilir, markdown gösterebilir, CSV dosyasını görüntüleyebilir ve daha bir çok şey yapabilirsiniz.

Textual

Rich'in kardeş projesi olan Textual'a da bir göz atın. Textual ile konsol çıktılarınıza bir UI oluşturup, gruplayıp görselleştirebilirsiniz.

Rich kullanılan Projeler

Rich Galerisi üzerinden, rich kullanılan son uygulamalara Textualize.io üzerinden göz atabiirsiniz.

Eğer siz de projenizi galeriye eklemek istiyorsanız bu adımları takip ederek ekleyebilirsiniz.

<!-- This is a test, no need to translate -->