برای معرفی ویدئویی ریچ این ویدئو را ببینید [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
```
برای آزمایش ریچ در ترمینال خودتان، این را اجرا کنید:
تا اینجا برای سبک و استایل دادن به یک خط خوب است. برای سبکی با دانه بندی (Finely Grained Styling)، ریچ یک نشانه گذاری خاص ارائه می دهند که چیزی شبیه به [bbcode](https://en.wikipedia.org/wiki/BBCode) است. مثال آن به صورت زیر است:
شما می توانید از یک شیء Console برای تولید خروجی پیچیده، با کمترین تلاش استفاده کنید. برای جزئیات بیشتر به [Console API](https://rich.readthedocs.io/en/latest/console.html) مراجعه کنید.
ریچ شامل تعدادی از توابع _قابل اجرا_ داخلی است که شما می توانید برای ایجاد خروجی برازنده و مناسب در ترمینال (CLI) خود استفاده کنید و به شما برای تصحیح (Debug) کد کمک می کند.
شیء Console دارای یک تابع `()log` است که رفتاری مشابه `()print` دارد، اما همچنین یک ستون برای نمایش زمان، فایل مربوطه و شماره خطِ کدِ اجرا شده در نظر می گیرد. به صورت پیشفرض، ریچ علائم (syntax) را برای ساختار های پایتون و برای رشته (String)
های repr برجسته می کند. اگر شما یک مجموعه (دیکشنری یا لیست) را چاپ کنید، ریچ به زیبایی آن را در فضای موجود چاپ می کند. مثال زیر نمایش برخی ویژگی های آن است:
تابع log میتواند برای گزارش گیری در ترمینال برای برنامه هایی با اجراهای طولانی مدت، مثل سرور استفاده شود؛ اما همچنین کمک بسیار مناسب و خوبی برای تصحیح (debugging) برخی خطاهاست.
همچنین شما می توانید از [Handler class](https://rich.readthedocs.io/en/latest/logging.html) های داخلی برای فرمت دادن و رنگی کردن خروجی از ماژول گزارش پایتون (Python's logging module) استفاده کنید. کد زیر یک مثال از خروجی را نشان می دهد:
انیمشن بالا با استفاده از [table_movie.py](https://github.com/textualize/rich/blob/master/examples/table_movie.py) در دایرکتوری (پوشه) تست ساخته شده است.
توجه داشته باشید که نشانه گذاری کنسول به همان روش `print()` و `log()` پردازش می شود. در واقع، هر چیزی که توسط Rich قابل رندر است در هدرها / ردیف ها (حتی جداول دیگر) ممکن است گنجانده شود.
کلاس `Table` به اندازه کافی هوشمند است که اندازه ستون ها را متناسب با عرض موجود ترمینال تغییر دهد و متن را در صورت لزوم بسته بندی کند. این همان مثال با ترمینال کوچکتر از جدول بالاست:
ریچ می تواند چندین نوار پیشرفت ([progress](https://rich.readthedocs.io/en/latest/progress.html)) را بدون ناهماهنگی و اختلال برای پیگیری وظایف طولانی مدت پردازش کند.
ستون ها ممکن است به گونه ای پیکربندی شوند که جزئیاتی را که می خواهید نشان دهند. ستون های از پیش تعیین شده شامل درصد کامل شده، اندازه فایل، سرعت فایل و زمان باقی مانده است. در زیر مثال دیگری وجود دارد که دانلود در حال انجام را نشان می دهد:
برای اینکه خودتان این را امتحان کنید، فایل [examples/downloader.py](https://github.com/textualize/rich/blob/master/examples/downloader.py) را ببینید که میتواند چندین لینک URL را به طور همزمان بارگیری کند و پیشرفت را نشان دهد.
برای موقعیت هایی که محاسبه پیشرفت، دشوار است، می توانید از روش [status](https://rich.readthedocs.io/en/latest/reference/console.html#rich.console.Console.status) استفاده کنید که یک پیام و یک انیمیشن چرخنده (spinner) را نمایش میدهد. این انیمیشن شما را از استفاده عادی از کنسول باز نمی دارد. مثال آن به صورت زیر است:
در انیمیشن های چرخنده از [cli-spinners](https://www.npmjs.com/package/cli-spinners) استفاده شده است. شما می توانید با تعیین پارامتر `spinner` یک چرخنده را انتخاب کنید. برای مشاهده موارد موجود، دستور زیر را اجرا کنید:
ریچ می تواند یک [tree](https://rich.readthedocs.io/en/latest/tree.html) را با خطوط راهنما نمایش دهد. یک درخت برای نمایش ساختار فایل یا هر داده سلسله مراتبی دیگر مناسب است.
مثال [tree.py](https://github.com/textualize/rich/blob/master/examples/tree.py) را برای اسکریپتی ببینید که نمایش درختی از هر دایرکتوری را نمایش می دهد، شبیه به فرمان `tree` در لینوکس است.
ریچ می تواند محتوا را به صورت [columns](https://rich.readthedocs.io/en/latest/columns.html) مرتب با عرض مساوی یا بهینه ارائه دهد. مثال زیر یک شبیه سازی بسیار ابتدایی از دستور `ls` در (مک او اس / لینوکس) است که فهرست دایرکتوری را در ستون ها نمایش می دهد:
تصویر زیر خروجی [columns example](https://github.com/textualize/rich/blob/master/examples/columns.py) است که داده های استخراج شده از یک API را در ستون ها نمایش می دهد:
ریچ میتواند [markdown](https://rich.readthedocs.io/en/latest/markdown.html) را پردازش کند و کار مناسبی را برای فرمت بندی آن در ترمینال انجام میدهد.
برای پردازش markdown کافی است تا کلاس `Markdown` آنرا فرا خوانی کرده و یک شی از آن را بسازید و متن حاوی markdown را به آن بدهید. در نهایت آنرا در کنسول و ترمینال چاپ کنید. مثال آن به صورت زیر است:
ریچ از کتابخانه [pygments](https://pygments.org/) برای پیاده سازی[syntax highlighting](https://rich.readthedocs.io/en/latest/syntax.html) استفاده می کند. استفاده از آن مشابه پردازش markdown هاست؛ یک شی `Syntax` بسازید و آن را برای کنسول چاپ کنید. مثال آن به صورت زیر است:
ریچ می تواند [tracebacks](https://rich.readthedocs.io/en/latest/traceback.html) های زیبایی را نمایش دهد که خواندن آن آسان تر است و کد بیشتری را نسبت به `traceback` های استاندارد پایتون نشان می دهد. شما می توانید ریچ را به عنوان کنترل کننده اصلی `tracebacks` تنظیم کنید تا همه استثناهای کشف نشده توسط ریچ ارائه شوند.
همچنین [Rich CLI](https://github.com/textualize/rich-cli) را که برای برنامه های دستوری (command line)، توسط Rich ساخته شده است ببینید. برجسته سازی کد (Syntax highlight code)، پردازش کردن مارک دون، نمایش فایل های CSV در جدول ها و موارد بیشتر، به صورت مستقیم از خط فرمان و ترمینال.
همچنین (پروژه) خواهر ریچ [Textual](https://github.com/Textualize/textual) را ببینید، که با استفاده از آن شما می توانید رابط های کاربری پیچیده را در ترمینال بسازید.
برای دیدن چند نمونه از پروژه هایی که از ریچ استفاده می کنند، به [Rich Gallery](https://www.textualize.io/rich/gallery) در [Textualize.io](https://www.textualize.io) سر بزنید.