mirror of https://github.com/Textualize/rich.git
587 lines
21 KiB
Markdown
587 lines
21 KiB
Markdown
![]() |
[](https://pypi.org/project/rich/) [](https://badge.fury.io/py/rich)
|
|||
|
|
|||
|
[](https://pepy.tech/project/rich)
|
|||
|
[](https://codecov.io/gh/willmcgugan/rich)
|
|||
|
[](https://www.willmcgugan.com/tag/rich/)
|
|||
|
[](https://twitter.com/willmcgugan)
|
|||
|
|
|||
|

|
|||
|
|
|||
|
[English readme](https://github.com/willmcgugan/rich/blob/master/README.md)
|
|||
|
• [简体中文 readme](https://github.com/willmcgugan/rich/blob/master/README.cn.md)
|
|||
|
• [正體中文 readme](https://github.com/willmcgugan/rich/blob/master/README.zh-tw.md)
|
|||
|
• [Lengua española readme](https://github.com/willmcgugan/rich/blob/master/README.es.md)
|
|||
|
• [Deutsche readme](https://github.com/willmcgugan/rich/blob/master/README.de.md)
|
|||
|
• [Läs på svenska](https://github.com/willmcgugan/rich/blob/master/README.sv.md)
|
|||
|
• [日本語 readme](https://github.com/willmcgugan/rich/blob/master/README.ja.md)
|
|||
|
• [한국어 readme](https://github.com/willmcgugan/rich/blob/master/README.kr.md)
|
|||
|
• [Français readme](https://github.com/willmcgugan/rich/blob/master/README.fr.md)
|
|||
|
• [Schwizerdütsch readme](https://github.com/willmcgugan/rich/blob/master/README.de-ch.md)
|
|||
|
• [हिन्दी readme](https://github.com/willmcgugan/rich/blob/master/README.hi.md)
|
|||
|
• [Português brasileiro readme](https://github.com/willmcgugan/rich/blob/master/README.pt-br.md)
|
|||
|
• [Italian readme](https://github.com/willmcgugan/rich/blob/master/README.it.md)
|
|||
|
• [Русский readme](https://github.com/willmcgugan/rich/blob/master/README.ru.md)
|
|||
|
• [فارسی readme](https://github.com/willmcgugan/rich/blob/master/README.fa.md)
|
|||
|
|
|||
|
ریچ یک کتاب خانه پایتون برای متن های _باشکوه_ و قالب بندی زیبا در ترمینال است.
|
|||
|
|
|||
|
[ریچ](https://rich.readthedocs.io/en/latest/) افزودن رنگ و سبک به خروجی ترمینال را آسان میکند.
|
|||
|
ریچ همچنین میتواند جدول های زیبا، نوار های پیشرفت
|
|||
|
(progress bars),
|
|||
|
مارک داون
|
|||
|
(MarkDown),
|
|||
|
ترکیب سورس کد های برجسته شده,
|
|||
|
ردیاب ها
|
|||
|
(Tracebacks),
|
|||
|
و غیره را به صورت خودکار در ترمینال نمایش دهد.
|
|||
|
|
|||
|
|
|||
|

|
|||
|
|
|||
|
برای معرفی ویدئویی ریچ این ویدئو را ببینید [calmcode.io](https://calmcode.io/rich/introduction.html) توسط [@fishnets88](https://twitter.com/fishnets88).
|
|||
|
|
|||
|
ببینید [مردم در مورد ریچ چه میگویند](https://www.willmcgugan.com/blog/pages/post/rich-tweets/).
|
|||
|
|
|||
|
## سازگاری
|
|||
|
|
|||
|
ریچ با لینوکس، مک او اس و ویندوز کار می کند.
|
|||
|
رنگ واقعی / ایموجی با ترمینال جدید ویندوز کار می کند، ترمینال کلاسیک به 16 رنگ محدود شده است.
|
|||
|
ریچ به پایتون
|
|||
|
3.6.3
|
|||
|
یا جدیدتر نیاز دارد.
|
|||
|
|
|||
|
ریچ با [ژوپیتر نوت بوک (Jupyter notebooks)](https://jupyter.org/)
|
|||
|
بدون نیازمندی اضافه ای کار می کند.
|
|||
|
|
|||
|
## نصب کردن
|
|||
|
|
|||
|
با `pip`
|
|||
|
یا با مدیر بسته (package manager)
|
|||
|
مورد علاقه خودتان نصب کنید.
|
|||
|
|
|||
|
```sh
|
|||
|
python -m pip install rich
|
|||
|
```
|
|||
|
|
|||
|
برای آزمایش ریچ در ترمینال خودتان، این را اجرا کنید:
|
|||
|
|
|||
|
```sh
|
|||
|
python -m rich
|
|||
|
```
|
|||
|
|
|||
|
## Rich Print
|
|||
|
|
|||
|
برای اضافه کردن راحت خروجی ریچ به برنامه خودتان، شما می توانید اضافه (Import)
|
|||
|
کنید [rich print](https://rich.readthedocs.io/en/latest/introduction.html#quick-start)
|
|||
|
را به پروژه خودتان.
|
|||
|
که اثر یکسانی به عنوان تابع داخلی پایتون دارد.
|
|||
|
این را امتحان کنید:
|
|||
|
|
|||
|
```python
|
|||
|
from rich import print
|
|||
|
|
|||
|
print("Hello, [bold magenta]World[/bold magenta]!", ":vampire:", locals())
|
|||
|
```
|
|||
|
|
|||
|

|
|||
|
|
|||
|
## Rich REPL
|
|||
|
|
|||
|
ریچ می تواند در Python REPL,
|
|||
|
نصب شود.
|
|||
|
که هر نوعی از اطلاعات را به زیبایی چاپ می کند و به زیبایی برجسته می کند.
|
|||
|
|
|||
|
```python
|
|||
|
>>> from rich import pretty
|
|||
|
>>> pretty.install()
|
|||
|
```
|
|||
|
|
|||
|

|
|||
|
|
|||
|
## استفاده از Console
|
|||
|
|
|||
|
برای پایش بیشتر از محتوای ترمینال ریچ،
|
|||
|
[Console](https://rich.readthedocs.io/en/latest/reference/console.html#rich.console.Console)
|
|||
|
را اضافه (Import)
|
|||
|
کنید و یک شیء (Object) بسازید.
|
|||
|
|
|||
|
```python
|
|||
|
from rich.console import Console
|
|||
|
|
|||
|
console = Console()
|
|||
|
```
|
|||
|
|
|||
|
شی Console
|
|||
|
یک تابع با نام `print`
|
|||
|
دارد که مشابه تابع `print`
|
|||
|
داخلی پایتون است.
|
|||
|
این یک مثال از استفاده Console است:
|
|||
|
|
|||
|
```python
|
|||
|
console.print("Hello", "World!")
|
|||
|
```
|
|||
|
|
|||
|
همانطور که انتظار داشتید، این باید در ترمینال `"Hello World!"`
|
|||
|
چاپ کند.
|
|||
|
توجه کنید که این شبیه به تابع `print`
|
|||
|
داخلی پایتون نیست.
|
|||
|
ریچ متن شما را به صورت کلمهای در عرض ترمینال قرار می دهد.
|
|||
|
اما تابع `print`
|
|||
|
داخلی پایتون به شکل کلمهای نیست.
|
|||
|
|
|||
|
اینها تعدادی راه برای افزودن رنگ و سبک (Style)
|
|||
|
به خروجی خودتان است.
|
|||
|
شما می توانید برای ورودی های خود سبک قرار دهید با اضافه کردن کلمه کلیدی `style`.
|
|||
|
اینجا یک مثال هست:
|
|||
|
|
|||
|
```python
|
|||
|
console.print("Hello", "World!", style="bold red")
|
|||
|
```
|
|||
|
|
|||
|
خروجی چیزی شبیه به این است:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
این برای سبک دادن به یک خط در زمان کمی خوب است.
|
|||
|
برای سبکی با دانه بندی (Finely Grained Styling)،
|
|||
|
ریچ یک نشانه گذاری خاص ارائه می دهند که چیزی شبیه به [bbcode](https://en.wikipedia.org/wiki/BBCode) است.
|
|||
|
اینجا یک مثال هست:
|
|||
|
|
|||
|
```python
|
|||
|
console.print("Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].")
|
|||
|
```
|
|||
|
|
|||
|

|
|||
|
|
|||
|
You can use a Console object to generate sophisticated output with minimal effort. See the [Console API](https://rich.readthedocs.io/en/latest/console.html) docs for details.
|
|||
|
|
|||
|
شما می توانید از یک شیء Console
|
|||
|
برای تولید خروجی استفاده کنید.
|
|||
|
برای جزئیات بیشتر به [Console API](https://rich.readthedocs.io/en/latest/console.html) مراجعه کنید.
|
|||
|
|
|||
|
## Rich Inspect
|
|||
|
|
|||
|
ریچ دارای یک تابع `inspect`
|
|||
|
است که می تواند یک گزارش از هر شیء از پایتون ، مثل کلاس (Class)،
|
|||
|
نمونه (Instance)
|
|||
|
یا تابع (Builtin)
|
|||
|
را تولید کند.
|
|||
|
|
|||
|
```python
|
|||
|
>>> my_list = ["foo", "bar"]
|
|||
|
>>> from rich import inspect
|
|||
|
>>> inspect(my_list, methods=True)
|
|||
|
```
|
|||
|
|
|||
|

|
|||
|
|
|||
|
برای جزئیات بیشتر به [inspect docs](https://rich.readthedocs.io/en/latest/reference/init.html#rich.inspect) مراجعه کنید.
|
|||
|
|
|||
|
# Rich Library
|
|||
|
|
|||
|
ریچ شامل تعدادی از
|
|||
|
_رندر پزیر_
|
|||
|
داخلی است که شما می توانید برای ایجاد خروجی ظریف در CLI
|
|||
|
خودتان استفاده کنید.
|
|||
|
و به شما برای تصحیح
|
|||
|
(Debug)
|
|||
|
کد خودتان کمک می کند.
|
|||
|
|
|||
|
برای جزییات بیشتز کلیک کنید:
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Log</summary>
|
|||
|
|
|||
|
شیء Console دارای یک تابع `log()`
|
|||
|
است که به شکلی از `print()` است،
|
|||
|
اما همچنان یک ستون برای الان رندر می کند و فایل و خط که کد را تولید کرده است.
|
|||
|
به صورت عادی ریچ برجسته می کند علامت ها را برای ساختار های پایتون و برای رشته
|
|||
|
(String)
|
|||
|
های
|
|||
|
repr.
|
|||
|
اگر شما یک مجموعه
|
|||
|
(دیکشنری یا لیست)
|
|||
|
را چاپ کنید، ریچ به زیبایی آن را در فضای موجود چاپ می کند.
|
|||
|
این یک مثال از برخی ویژگی های آن است:
|
|||
|
|
|||
|
|
|||
|
```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()
|
|||
|
```
|
|||
|
|
|||
|
در بالا خروجی زیر را دریافت می کنید:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
به
|
|||
|
`log_locals`
|
|||
|
ها توجه کنید،
|
|||
|
که یک جدول که شامل متغیر های محلی است خروجی می دهد.
|
|||
|
جایی که تابع log
|
|||
|
صدا زده می شود.
|
|||
|
|
|||
|
تابع log
|
|||
|
باید استفاده شود برای گزارش در ترمینال برای برنامه های بلند مدت مانند سرور،
|
|||
|
اما یک کمک برای تصحیح برخی از خطاهای برنامه است.
|
|||
|
|
|||
|
</details>
|
|||
|
<details>
|
|||
|
<summary>Logging Handler</summary>
|
|||
|
|
|||
|
شما می توانید از
|
|||
|
[Handler class](https://rich.readthedocs.io/en/latest/logging.html)
|
|||
|
های داخلی برای اصلاح و رنگی کردن خروجی از ماژول گزارش پایتون
|
|||
|
(Python's logging module) استفاده کنید.
|
|||
|
این یک مثال از خروجی را نشان می دهد:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Emoji</summary>
|
|||
|
|
|||
|
برای افزودن یک ایموجی به خروجی ترمینال، اسم را بین دو نقطه
|
|||
|
(colon)
|
|||
|
قرار دهید.
|
|||
|
این یک مثال است:
|
|||
|
|
|||
|
```python
|
|||
|
>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
|
|||
|
😃 🧛 💩 👍 🦝
|
|||
|
```
|
|||
|
|
|||
|
Please use this feature wisely.
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Tables</summary>
|
|||
|
|
|||
|
ریچمی تواند
|
|||
|
[جدول های انعطاف پذیر](https://rich.readthedocs.io/en/latest/tables.html)
|
|||
|
با کارکتر های یونیکد بسازد.
|
|||
|
|
|||
|

|
|||
|
|
|||
|
انیمشن بالا با استفاده از
|
|||
|
[table_movie.py](https://github.com/willmcgugan/rich/blob/master/examples/table_movie.py)
|
|||
|
در دایرکتوری تست ساخته شده است.
|
|||
|
|
|||
|
این یک مثال ساده از جدول است:
|
|||
|
|
|||
|
```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)
|
|||
|
```
|
|||
|
|
|||
|
این کد خروجی زیر را تولید می کند:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
توجه داشته باشید که نشانه گذاری کنسول به همان روش
|
|||
|
`print()` و `log()`
|
|||
|
ارائه می شود.
|
|||
|
در واقع، هر چیزی که توسط
|
|||
|
Rich
|
|||
|
قابل رندر است در هدرها / ردیف ها (حتی جداول دیگر) ممکن است گنجانده شود.
|
|||
|
|
|||
|
کلاس
|
|||
|
`Table`
|
|||
|
به اندازه کافی هوشمند است که اندازه ستون ها را متناسب با عرض موجود ترمینال تغییر دهد و متن را در صورت لزوم بسته بندی کند.
|
|||
|
این همان مثال با ترمینال کوچکتر است:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Progress Bars</summary>
|
|||
|
|
|||
|
ریچ
|
|||
|
می تواند چندین نوار پیشرفت بدون نا هماهنگی برای پیگیری وظایف طولانی مدت ارائه دهد.
|
|||
|
|
|||
|
|
|||
|
For basic usage, wrap any sequence in the `track` function and iterate over the result. Here's an example:
|
|||
|
|
|||
|
برای استفاده اولیه، هر دنباله ای را در تابع
|
|||
|
`track`
|
|||
|
روی نتیجه تکرار کنید. در اینجا یک مثال است:
|
|||
|
|
|||
|
```python
|
|||
|
from rich.progress import track
|
|||
|
|
|||
|
for step in track(range(100)):
|
|||
|
do_step(step)
|
|||
|
```
|
|||
|
|
|||
|
اضافه کردن چندین نوار پیشرفت خیلی سخت نیست. در اینجا یک مثال آورده شده است:
|
|||
|
|
|||
|
|
|||
|
|
|||
|

|
|||
|
|
|||
|
ستون ها ممکن است به گونه ای پیکربندی شوند که جزئیاتی را که می خواهید نشان دهند. ستون های داخلی شامل درصد کامل، اندازه فایل، سرعت فایل و زمان باقی مانده است. در اینجا مثال دیگری وجود دارد که دانلود در حال انجام را نشان می دهد:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
برای اینکه خودتان این را امتحان کنید،
|
|||
|
[examples/downloader.py](https://github.com/willmcgugan/rich/blob/master/examples/downloader.py)
|
|||
|
را ببینید که میتواند چندین
|
|||
|
URL
|
|||
|
را به طور همزمان بارگیری کند و پیشرفت را نشان دهد.
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Status</summary>
|
|||
|
|
|||
|
برای موقعیت هایی که محاسبه پیشرفت دشوار است، می توانید از روش [status](https://rich.readthedocs.io/en/latest/reference/console.html#rich.console.Console.status)
|
|||
|
استفاده کنید که یک انیمیشن و پیام چرخنده
|
|||
|
(spinner)
|
|||
|
را نمایش میدهد. این انیمیشن شما را از استفاده عادی از کنسول باز نمی دارد. در اینجا یک مثال است:
|
|||
|
|
|||
|
```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")
|
|||
|
```
|
|||
|
|
|||
|
این کد خروجی زیر را در ترمینال ایجاد می کند.
|
|||
|
|
|||
|

|
|||
|
|
|||
|
در انیمیشن های چرخنده از
|
|||
|
[cli-spinners](https://www.npmjs.com/package/cli-spinners)
|
|||
|
استفاده شده است.
|
|||
|
می توانید با تعیین پارامتر
|
|||
|
`spinner`
|
|||
|
یک چرخنده را انتخاب کنید. برای مشاهده دستور زیر را اجرا کنید:
|
|||
|
|
|||
|
```
|
|||
|
python -m rich.spinner
|
|||
|
```
|
|||
|
|
|||
|
دستور بالا خروجی زیر را در ترمینال ایجاد می کند:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Tree</summary>
|
|||
|
|
|||
|
ریچ می تواند یک
|
|||
|
[tree](https://rich.readthedocs.io/en/latest/tree.html)
|
|||
|
را با خطوط راهنما نمایش دهد. درخت
|
|||
|
`tree`
|
|||
|
برای نمایش ساختار فایل یا هر داده سلسله مراتبی دیگر خوب است.
|
|||
|
|
|||
|
برچسب های
|
|||
|
`labels`
|
|||
|
درخت می توانند متن ساده یا هر چیز دیگری که ریچ می تواند نمایش دهد باشد. برای نمایش موارد دستور زیر را اجرا کنید:
|
|||
|
|
|||
|
```
|
|||
|
python -m rich.tree
|
|||
|
```
|
|||
|
|
|||
|
این کد خروجی زیر را ایجاد می کند:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
See the [tree.py](https://github.com/willmcgugan/rich/blob/master/examples/tree.py) example for a script that displays a tree view of any directory, similar to the linux `tree` command.
|
|||
|
|
|||
|
مثال
|
|||
|
[این]
|
|||
|
را برای اسکریپتی ببینید که نمایش درختی از هر دایرکتوری را نمایش می دهد، شبیه به فرمان
|
|||
|
`tree`
|
|||
|
در لینوکس است.
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Columns</summary>
|
|||
|
|
|||
|
ریچ می تواند محتوا را به صورت
|
|||
|
[منظم](https://rich.readthedocs.io/en/latest/columns.html)
|
|||
|
با عرض مساوی یا بهینه ارائه دهد.
|
|||
|
در اینجا یک کلون بسیار ابتدایی از دستور
|
|||
|
ls
|
|||
|
در
|
|||
|
(مک او اس / لینوکس)
|
|||
|
وجود دارد که فهرست دایرکتوری را در ستون ها نمایش می دهد:
|
|||
|
|
|||
|
```python
|
|||
|
import os
|
|||
|
import sys
|
|||
|
|
|||
|
from rich import print
|
|||
|
from rich.columns import Columns
|
|||
|
|
|||
|
directory = os.listdir(sys.argv[1])
|
|||
|
print(Columns(directory))
|
|||
|
```
|
|||
|
|
|||
|
تصویر زیر خروجی از
|
|||
|
[columns example](https://github.com/willmcgugan/rich/blob/master/examples/columns.py)
|
|||
|
است که داده های استخراج شده از یک
|
|||
|
API
|
|||
|
را در ستون ها نمایش می دهد:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Markdown</summary>
|
|||
|
|
|||
|
ریچ می تواند
|
|||
|
[markdown](https://rich.readthedocs.io/en/latest/markdown.html)
|
|||
|
را رندر کند و کار خوبی برای ترجمه آن در ترمینال انجام دهد.
|
|||
|
|
|||
|
برای رندر کردن مارک دون، کلاس
|
|||
|
`Markdown`
|
|||
|
را وارد کنید و آن را با رشته ای
|
|||
|
`Str`
|
|||
|
حاوی کد مارک دون است بسازید.
|
|||
|
سپس آن را در کنسول چاپ کنید.
|
|||
|
در اینجا یک مثال است:
|
|||
|
|
|||
|
```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)
|
|||
|
```
|
|||
|
|
|||
|
خروجی اند کد چیزی شبیه به این را تولید می کند:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Syntax Highlighting</summary>
|
|||
|
|
|||
|
ریچ از کتابخانه
|
|||
|
[pygments](https://pygments.org/)
|
|||
|
برای پیاده سازی
|
|||
|
[syntax](https://rich.readthedocs.io/en/latest/syntax.html)
|
|||
|
استفاده می کند.
|
|||
|
استفاده
|
|||
|
`syntax`
|
|||
|
مشابه استفاده مارک دون است.
|
|||
|
یک شی
|
|||
|
`Syntax`
|
|||
|
بسازید و آن را در کنسول چاپ کنید.
|
|||
|
در اینجا یک مثال است:
|
|||
|
|
|||
|
```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)
|
|||
|
```
|
|||
|
|
|||
|
این کد خروجی زیر را ایجاد می کند:
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
<details>
|
|||
|
<summary>Tracebacks</summary>
|
|||
|
|
|||
|
ریچ می تواند
|
|||
|
[tracebacks](https://rich.readthedocs.io/en/latest/traceback.html)
|
|||
|
های زیبا را نمایش دهد که خواندن آن آسان تر است و کد بیشتری را نسبت به
|
|||
|
`traceback`
|
|||
|
های استاندارد پایتون نشان می دهد.
|
|||
|
می توانید ریچ را به عنوان کنترل کننده اصلی
|
|||
|
`tracebacks`
|
|||
|
تنظیم کنید تا همه استثناهای کشف نشده توسط ریچ ارائه شوند.
|
|||
|
|
|||
|
در اینجا این را در مک او اس نمایش می دهد (در لینوکس مشابه این است):
|
|||
|
|
|||
|

|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
All Rich renderables make use of the [Console Protocol](https://rich.readthedocs.io/en/latest/protocol.html), which you can also use to implement your own Rich content.
|
|||
|
|
|||
|
همه ریچ های قابل نمایش از
|
|||
|
[Console Protocol](https://rich.readthedocs.io/en/latest/protocol.html)
|
|||
|
استفاده می کنند،
|
|||
|
که شما می توانید برای پیاده سازی محتوای ریچ خود نیز از آن استفاده کنید.
|