wrapcolor


Namewrapcolor JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/datsiuk7/wrapcolor
SummaryUniversal ANSI colorizer for Python (8/16 colors, 256-color, RGB, styles)
upload_time2025-10-19 11:04:20
maintainerNone
docs_urlNone
authorBohdan
requires_python>=3.10
licenseMIT
keywords ansi color terminal console rgb xterm-256 styles
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # wrapcolor

Універсальний ANSI-«кольоризатор» для Python: простий спосіб стилізувати текст у консолі.
Підтримує 8/16 базових кольорів, 256‑кольорову палітру (xterm) та TrueColor (RGB), а також стилі шрифту.

- Легкий і без залежностей (опційно: colorama для Windows)
- Зручний екземпляр color із готовими кодами та утилітами
- Працює з будь‑якою бібліотекою, що виводить у термінал (logging, click, argparse тощо)

## Встановлення

```bash
pip install wrapcolor
# (опційно для Windows консоль/PowerShell)
pip install colorama
```

Якщо ви на Windows, рекомендовано ініціалізувати colorama на старті:

```python
try:
    from colorama import justFixWindowsConsole
    justFixWindowsConsole()
except Exception:
    pass
```

## Швидкий старт

```python
from wrapcolor import color

print(color.paint("Привіт!", fg="red", styles=["bold"]))
print(color.rgb(255, 100, 0) + "TrueColor текст" + color.reset)
print(color.bg_idx(24) + "Фон 256‑кольорів" + color.reset)
```

## Приклади використання

### 1) Базові кольори тексту
```python
from wrapcolor import color

print(color.red + "Червоний" + color.reset)
print(color.green + "Зелений" + color.reset)
print(color.bright_blue + "Яскраво‑синій" + color.reset)
```

### 2) Кольори фону
```python
from wrapcolor import color

print(color.bg_yellow + color.black + "Чорний на жовтому" + color.reset)
print(color.bg_bright_red + color.white + "Білий на яскраво‑червоному" + color.reset)
```

### 3) Стилі шрифту
```python
from wrapcolor import color

print(color.bold + "Жирний" + color.reset)
print(color.italic + "Курсив" + color.reset)
print(color.underline + "Підкреслений" + color.reset)
print(color.inverse + "Інверсія" + color.reset)
print(color.strike + "Закреслений" + color.reset)
```

### 4) Комбінування стилів і кольорів
```python
from wrapcolor import color

print(color.red + color.bold + "Червоний жирний" + color.reset)
print(color.bright_green + color.underline + "Зелений підкреслений" + color.reset)
```

### 5) Зручний paint()
```python
from wrapcolor import color

print(color.paint("OK", fg="green", styles=["bold"]))
print(color.paint("УВАГА", fg="bright_yellow", bg="bg_black", styles=["underline"]))
print(color.paint("ПОМИЛКА", fg="bright_white", bg="bg_red", styles=["bold"]))
```

Перевага paint() — воно автоматично додає reset наприкінці.

### 6) Шаблон wrap() для багаторазового використання
```python
from wrapcolor import color

warn = color.wrap(color.bright_yellow + color.bold)
err  = color.wrap(color.bg_red + color.white + color.bold)

print(warn.format("Попередження"))
print(err.format("Помилка"))
```

### 7) 256‑кольорів (xterm)
```python
from wrapcolor import color

for i in range(16, 32):
    print(color.idx(i) + f" idx({i}) " + color.reset, end=" ")
print()

for i in [196, 202, 208, 214, 220, 226]:
    print(color.idx(i) + "●" + color.reset, end=" ")
print()

print(color.bg_idx(24) + color.bright_white + "Текст на фоні idx(24)" + color.reset)
```

### 8) TrueColor (RGB)
```python
from wrapcolor import color

print(color.rgb(12, 200, 155) + "RGB передній план" + color.reset)
print(color.bg_rgb(20, 20, 20) + color.bright_cyan + "Яскравий на темному" + color.reset)
```

### 9) Допоміжні функції для статусів
```python
from wrapcolor import color

def ok(msg):
    return color.paint(msg, fg="green", styles=["bold"])

def warn(msg):
    return color.paint(msg, fg="bright_yellow")

def err(msg):
    return color.paint(msg, fg="bright_white", bg="bg_red", styles=["bold"]) 

print(ok("Готово"))
print(warn("Увага"))
print(err("Збій"))
```

### 10) Інтеграція з logging
```python
import logging
from wrapcolor import color

class ColorFormatter(logging.Formatter):
    LEVEL_COLOR = {
        logging.DEBUG: color.dim,
        logging.INFO: color.bright_green,
        logging.WARNING: color.bright_yellow,
        logging.ERROR: color.bright_red,
        logging.CRITICAL: color.bg_red + color.white + color.bold,
    }
    def format(self, record):
        base = super().format(record)
        code = self.LEVEL_COLOR.get(record.levelno, "")
        return f"{code}{base}{color.reset}" if code else base

h = logging.StreamHandler()
fmt = ColorFormatter("%(levelname)s: %(message)s")
h.setFormatter(fmt)
log = logging.getLogger("demo")
log.addHandler(h)
log.setLevel(logging.DEBUG)

log.debug("debug")
log.info("info")
log.warning("warning")
log.error("error")
log.critical("critical")
```

### 11) Поважайте NO_COLOR і TTY
```python
import os, sys
from wrapcolor import color as _color

USE_COLOR = sys.stdout.isatty() and os.getenv("NO_COLOR") is None

class _NoColor:
    reset = ""
    bold = dim = italic = underline = inverse = strike = ""
    black = red = green = yellow = blue = magenta = cyan = white = ""
    bright_black = bright_red = bright_green = bright_yellow = ""
    bright_blue = bright_magenta = bright_cyan = bright_white = ""
    bg_black = bg_red = bg_green = bg_yellow = bg_blue = bg_magenta = bg_cyan = bg_white = ""
    bg_bright_black = bg_bright_red = bg_bright_green = bg_bright_yellow = ""
    bg_bright_blue = bg_bright_magenta = bg_bright_cyan = bg_bright_white = ""
    @staticmethod
    def idx(n): return ""
    @staticmethod
    def bg_idx(n): return ""
    @staticmethod
    def rgb(r,g,b): return ""
    @staticmethod
    def bg_rgb(r,g,b): return ""
    @classmethod
    def paint(cls, text, *, fg=None, bg=None, styles=None): return str(text)
    @classmethod
    def wrap(cls, code): return "{}"

color = _color if USE_COLOR else _NoColor()

print(color.paint("Це працює навіть без кольорів", fg="green"))
```

### 12) Підказки та нюанси
- Якщо поєднуєте коди вручну, не забудьте в кінці додати color.reset.
- paint() та wrap() самі додають reset, що зручно для безпечного форматування.
- Не всі термінали підтримують 256/TrueColor — на старих системах кольори можуть знижуватись.

## Довідка API (скорочено)

Об’єкти й методи доступні з:
```python
from wrapcolor import color, _Color
```

- Атрибути стилів: bold, dim, italic, underline, inverse, strike
- 8 кольорів переднього плану: black, red, green, yellow, blue, magenta, cyan, white
- Яскраві варіанти: bright_black .. bright_white
- Фон: bg_black .. bg_white, bg_bright_black .. bg_bright_white
- Методи:
  - idx(n: int) -> str — 256‑кольорів (0..255), передній план
  - bg_idx(n: int) -> str — 256‑кольорів (0..255), фон
  - rgb(r,g,b) -> str — TrueColor (0..255) передній план
  - bg_rgb(r,g,b) -> str — TrueColor (0..255) фон
  - paint(text, *, fg=None, bg=None, styles=None) -> str — безпечно обгортає текст і додає reset
  - wrap(code: str) -> str — повертає шаблон "{code}{}\x1b[0m" для багаторазового format()

## Сумісність
- Python 3.10+
- Linux/macOS/Windows (для Windows бажано colorama)

## Чому wrapcolor?
- Мінімалістичний інтерфейс: використовуй властивості або утиліти
- Не нав’язує залежностей
- Добре працює з існуючими бібліотеками

## Ліцензія
MIT

## Внесок
Issue/PR вітаються.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/datsiuk7/wrapcolor",
    "name": "wrapcolor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "ansi, color, terminal, console, rgb, xterm-256, styles",
    "author": "Bohdan",
    "author_email": "datcukbogdan@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/b6/3c/3006905edba8d2720a31ebe06895699fd39498e7fd9c149bf3bbdfdd1dcc/wrapcolor-0.1.4.tar.gz",
    "platform": null,
    "description": "# wrapcolor\n\n\u0423\u043d\u0456\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0438\u0439 ANSI-\u00ab\u043a\u043e\u043b\u044c\u043e\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u00bb \u0434\u043b\u044f Python: \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0441\u043f\u043e\u0441\u0456\u0431 \u0441\u0442\u0438\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043a\u0441\u0442 \u0443 \u043a\u043e\u043d\u0441\u043e\u043b\u0456.\n\u041f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 8/16 \u0431\u0430\u0437\u043e\u0432\u0438\u0445 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432, 256\u2011\u043a\u043e\u043b\u044c\u043e\u0440\u043e\u0432\u0443 \u043f\u0430\u043b\u0456\u0442\u0440\u0443 (xterm) \u0442\u0430 TrueColor (RGB), \u0430 \u0442\u0430\u043a\u043e\u0436 \u0441\u0442\u0438\u043b\u0456 \u0448\u0440\u0438\u0444\u0442\u0443.\n\n- \u041b\u0435\u0433\u043a\u0438\u0439 \u0456 \u0431\u0435\u0437 \u0437\u0430\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0435\u0439 (\u043e\u043f\u0446\u0456\u0439\u043d\u043e: colorama \u0434\u043b\u044f Windows)\n- \u0417\u0440\u0443\u0447\u043d\u0438\u0439 \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 color \u0456\u0437 \u0433\u043e\u0442\u043e\u0432\u0438\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438 \u0442\u0430 \u0443\u0442\u0438\u043b\u0456\u0442\u0430\u043c\u0438\n- \u041f\u0440\u0430\u0446\u044e\u0454 \u0437 \u0431\u0443\u0434\u044c\u2011\u044f\u043a\u043e\u044e \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u043e\u044e, \u0449\u043e \u0432\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0443 \u0442\u0435\u0440\u043c\u0456\u043d\u0430\u043b (logging, click, argparse \u0442\u043e\u0449\u043e)\n\n## \u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f\n\n```bash\npip install wrapcolor\n# (\u043e\u043f\u0446\u0456\u0439\u043d\u043e \u0434\u043b\u044f Windows \u043a\u043e\u043d\u0441\u043e\u043b\u044c/PowerShell)\npip install colorama\n```\n\n\u042f\u043a\u0449\u043e \u0432\u0438 \u043d\u0430 Windows, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e \u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438 colorama \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0456:\n\n```python\ntry:\n    from colorama import justFixWindowsConsole\n    justFixWindowsConsole()\nexcept Exception:\n    pass\n```\n\n## \u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u0441\u0442\u0430\u0440\u0442\n\n```python\nfrom wrapcolor import color\n\nprint(color.paint(\"\u041f\u0440\u0438\u0432\u0456\u0442!\", fg=\"red\", styles=[\"bold\"]))\nprint(color.rgb(255, 100, 0) + \"TrueColor \u0442\u0435\u043a\u0441\u0442\" + color.reset)\nprint(color.bg_idx(24) + \"\u0424\u043e\u043d 256\u2011\u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432\" + color.reset)\n```\n\n## \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\n\n### 1) \u0411\u0430\u0437\u043e\u0432\u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\n```python\nfrom wrapcolor import color\n\nprint(color.red + \"\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439\" + color.reset)\nprint(color.green + \"\u0417\u0435\u043b\u0435\u043d\u0438\u0439\" + color.reset)\nprint(color.bright_blue + \"\u042f\u0441\u043a\u0440\u0430\u0432\u043e\u2011\u0441\u0438\u043d\u0456\u0439\" + color.reset)\n```\n\n### 2) \u041a\u043e\u043b\u044c\u043e\u0440\u0438 \u0444\u043e\u043d\u0443\n```python\nfrom wrapcolor import color\n\nprint(color.bg_yellow + color.black + \"\u0427\u043e\u0440\u043d\u0438\u0439 \u043d\u0430 \u0436\u043e\u0432\u0442\u043e\u043c\u0443\" + color.reset)\nprint(color.bg_bright_red + color.white + \"\u0411\u0456\u043b\u0438\u0439 \u043d\u0430 \u044f\u0441\u043a\u0440\u0430\u0432\u043e\u2011\u0447\u0435\u0440\u0432\u043e\u043d\u043e\u043c\u0443\" + color.reset)\n```\n\n### 3) \u0421\u0442\u0438\u043b\u0456 \u0448\u0440\u0438\u0444\u0442\u0443\n```python\nfrom wrapcolor import color\n\nprint(color.bold + \"\u0416\u0438\u0440\u043d\u0438\u0439\" + color.reset)\nprint(color.italic + \"\u041a\u0443\u0440\u0441\u0438\u0432\" + color.reset)\nprint(color.underline + \"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439\" + color.reset)\nprint(color.inverse + \"\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f\" + color.reset)\nprint(color.strike + \"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439\" + color.reset)\n```\n\n### 4) \u041a\u043e\u043c\u0431\u0456\u043d\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0442\u0438\u043b\u0456\u0432 \u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432\n```python\nfrom wrapcolor import color\n\nprint(color.red + color.bold + \"\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439 \u0436\u0438\u0440\u043d\u0438\u0439\" + color.reset)\nprint(color.bright_green + color.underline + \"\u0417\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439\" + color.reset)\n```\n\n### 5) \u0417\u0440\u0443\u0447\u043d\u0438\u0439 paint()\n```python\nfrom wrapcolor import color\n\nprint(color.paint(\"OK\", fg=\"green\", styles=[\"bold\"]))\nprint(color.paint(\"\u0423\u0412\u0410\u0413\u0410\", fg=\"bright_yellow\", bg=\"bg_black\", styles=[\"underline\"]))\nprint(color.paint(\"\u041f\u041e\u041c\u0418\u041b\u041a\u0410\", fg=\"bright_white\", bg=\"bg_red\", styles=[\"bold\"]))\n```\n\n\u041f\u0435\u0440\u0435\u0432\u0430\u0433\u0430 paint() \u2014 \u0432\u043e\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0434\u043e\u0434\u0430\u0454 reset \u043d\u0430\u043f\u0440\u0438\u043a\u0456\u043d\u0446\u0456.\n\n### 6) \u0428\u0430\u0431\u043b\u043e\u043d wrap() \u0434\u043b\u044f \u0431\u0430\u0433\u0430\u0442\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\n```python\nfrom wrapcolor import color\n\nwarn = color.wrap(color.bright_yellow + color.bold)\nerr  = color.wrap(color.bg_red + color.white + color.bold)\n\nprint(warn.format(\"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u0436\u0435\u043d\u043d\u044f\"))\nprint(err.format(\"\u041f\u043e\u043c\u0438\u043b\u043a\u0430\"))\n```\n\n### 7) 256\u2011\u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432 (xterm)\n```python\nfrom wrapcolor import color\n\nfor i in range(16, 32):\n    print(color.idx(i) + f\" idx({i}) \" + color.reset, end=\" \")\nprint()\n\nfor i in [196, 202, 208, 214, 220, 226]:\n    print(color.idx(i) + \"\u25cf\" + color.reset, end=\" \")\nprint()\n\nprint(color.bg_idx(24) + color.bright_white + \"\u0422\u0435\u043a\u0441\u0442 \u043d\u0430 \u0444\u043e\u043d\u0456 idx(24)\" + color.reset)\n```\n\n### 8) TrueColor (RGB)\n```python\nfrom wrapcolor import color\n\nprint(color.rgb(12, 200, 155) + \"RGB \u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u043b\u0430\u043d\" + color.reset)\nprint(color.bg_rgb(20, 20, 20) + color.bright_cyan + \"\u042f\u0441\u043a\u0440\u0430\u0432\u0438\u0439 \u043d\u0430 \u0442\u0435\u043c\u043d\u043e\u043c\u0443\" + color.reset)\n```\n\n### 9) \u0414\u043e\u043f\u043e\u043c\u0456\u0436\u043d\u0456 \u0444\u0443\u043d\u043a\u0446\u0456\u0457 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432\n```python\nfrom wrapcolor import color\n\ndef ok(msg):\n    return color.paint(msg, fg=\"green\", styles=[\"bold\"])\n\ndef warn(msg):\n    return color.paint(msg, fg=\"bright_yellow\")\n\ndef err(msg):\n    return color.paint(msg, fg=\"bright_white\", bg=\"bg_red\", styles=[\"bold\"]) \n\nprint(ok(\"\u0413\u043e\u0442\u043e\u0432\u043e\"))\nprint(warn(\"\u0423\u0432\u0430\u0433\u0430\"))\nprint(err(\"\u0417\u0431\u0456\u0439\"))\n```\n\n### 10) \u0406\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0456\u044f \u0437 logging\n```python\nimport logging\nfrom wrapcolor import color\n\nclass ColorFormatter(logging.Formatter):\n    LEVEL_COLOR = {\n        logging.DEBUG: color.dim,\n        logging.INFO: color.bright_green,\n        logging.WARNING: color.bright_yellow,\n        logging.ERROR: color.bright_red,\n        logging.CRITICAL: color.bg_red + color.white + color.bold,\n    }\n    def format(self, record):\n        base = super().format(record)\n        code = self.LEVEL_COLOR.get(record.levelno, \"\")\n        return f\"{code}{base}{color.reset}\" if code else base\n\nh = logging.StreamHandler()\nfmt = ColorFormatter(\"%(levelname)s: %(message)s\")\nh.setFormatter(fmt)\nlog = logging.getLogger(\"demo\")\nlog.addHandler(h)\nlog.setLevel(logging.DEBUG)\n\nlog.debug(\"debug\")\nlog.info(\"info\")\nlog.warning(\"warning\")\nlog.error(\"error\")\nlog.critical(\"critical\")\n```\n\n### 11) \u041f\u043e\u0432\u0430\u0436\u0430\u0439\u0442\u0435 NO_COLOR \u0456 TTY\n```python\nimport os, sys\nfrom wrapcolor import color as _color\n\nUSE_COLOR = sys.stdout.isatty() and os.getenv(\"NO_COLOR\") is None\n\nclass _NoColor:\n    reset = \"\"\n    bold = dim = italic = underline = inverse = strike = \"\"\n    black = red = green = yellow = blue = magenta = cyan = white = \"\"\n    bright_black = bright_red = bright_green = bright_yellow = \"\"\n    bright_blue = bright_magenta = bright_cyan = bright_white = \"\"\n    bg_black = bg_red = bg_green = bg_yellow = bg_blue = bg_magenta = bg_cyan = bg_white = \"\"\n    bg_bright_black = bg_bright_red = bg_bright_green = bg_bright_yellow = \"\"\n    bg_bright_blue = bg_bright_magenta = bg_bright_cyan = bg_bright_white = \"\"\n    @staticmethod\n    def idx(n): return \"\"\n    @staticmethod\n    def bg_idx(n): return \"\"\n    @staticmethod\n    def rgb(r,g,b): return \"\"\n    @staticmethod\n    def bg_rgb(r,g,b): return \"\"\n    @classmethod\n    def paint(cls, text, *, fg=None, bg=None, styles=None): return str(text)\n    @classmethod\n    def wrap(cls, code): return \"{}\"\n\ncolor = _color if USE_COLOR else _NoColor()\n\nprint(color.paint(\"\u0426\u0435 \u043f\u0440\u0430\u0446\u044e\u0454 \u043d\u0430\u0432\u0456\u0442\u044c \u0431\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432\", fg=\"green\"))\n```\n\n### 12) \u041f\u0456\u0434\u043a\u0430\u0437\u043a\u0438 \u0442\u0430 \u043d\u044e\u0430\u043d\u0441\u0438\n- \u042f\u043a\u0449\u043e \u043f\u043e\u0454\u0434\u043d\u0443\u0454\u0442\u0435 \u043a\u043e\u0434\u0438 \u0432\u0440\u0443\u0447\u043d\u0443, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432 \u043a\u0456\u043d\u0446\u0456 \u0434\u043e\u0434\u0430\u0442\u0438 color.reset.\n- paint() \u0442\u0430 wrap() \u0441\u0430\u043c\u0456 \u0434\u043e\u0434\u0430\u044e\u0442\u044c reset, \u0449\u043e \u0437\u0440\u0443\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u0435\u0437\u043f\u0435\u0447\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f.\n- \u041d\u0435 \u0432\u0441\u0456 \u0442\u0435\u0440\u043c\u0456\u043d\u0430\u043b\u0438 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u044e\u0442\u044c 256/TrueColor \u2014 \u043d\u0430 \u0441\u0442\u0430\u0440\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043a\u043e\u043b\u044c\u043e\u0440\u0438 \u043c\u043e\u0436\u0443\u0442\u044c \u0437\u043d\u0438\u0436\u0443\u0432\u0430\u0442\u0438\u0441\u044c.\n\n## \u0414\u043e\u0432\u0456\u0434\u043a\u0430 API (\u0441\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043e)\n\n\u041e\u0431\u2019\u0454\u043a\u0442\u0438 \u0439 \u043c\u0435\u0442\u043e\u0434\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0456 \u0437:\n```python\nfrom wrapcolor import color, _Color\n```\n\n- \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438 \u0441\u0442\u0438\u043b\u0456\u0432: bold, dim, italic, underline, inverse, strike\n- 8 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432 \u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0443: black, red, green, yellow, blue, magenta, cyan, white\n- \u042f\u0441\u043a\u0440\u0430\u0432\u0456 \u0432\u0430\u0440\u0456\u0430\u043d\u0442\u0438: bright_black .. bright_white\n- \u0424\u043e\u043d: bg_black .. bg_white, bg_bright_black .. bg_bright_white\n- \u041c\u0435\u0442\u043e\u0434\u0438:\n  - idx(n: int) -> str \u2014 256\u2011\u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432 (0..255), \u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u043b\u0430\u043d\n  - bg_idx(n: int) -> str \u2014 256\u2011\u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432 (0..255), \u0444\u043e\u043d\n  - rgb(r,g,b) -> str \u2014 TrueColor (0..255) \u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u043b\u0430\u043d\n  - bg_rgb(r,g,b) -> str \u2014 TrueColor (0..255) \u0444\u043e\u043d\n  - paint(text, *, fg=None, bg=None, styles=None) -> str \u2014 \u0431\u0435\u0437\u043f\u0435\u0447\u043d\u043e \u043e\u0431\u0433\u043e\u0440\u0442\u0430\u0454 \u0442\u0435\u043a\u0441\u0442 \u0456 \u0434\u043e\u0434\u0430\u0454 reset\n  - wrap(code: str) -> str \u2014 \u043f\u043e\u0432\u0435\u0440\u0442\u0430\u0454 \u0448\u0430\u0431\u043b\u043e\u043d \"{code}{}\\x1b[0m\" \u0434\u043b\u044f \u0431\u0430\u0433\u0430\u0442\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0433\u043e format()\n\n## \u0421\u0443\u043c\u0456\u0441\u043d\u0456\u0441\u0442\u044c\n- Python 3.10+\n- Linux/macOS/Windows (\u0434\u043b\u044f Windows \u0431\u0430\u0436\u0430\u043d\u043e colorama)\n\n## \u0427\u043e\u043c\u0443 wrapcolor?\n- \u041c\u0456\u043d\u0456\u043c\u0430\u043b\u0456\u0441\u0442\u0438\u0447\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441: \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0430\u0431\u043e \u0443\u0442\u0438\u043b\u0456\u0442\u0438\n- \u041d\u0435 \u043d\u0430\u0432\u2019\u044f\u0437\u0443\u0454 \u0437\u0430\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0435\u0439\n- \u0414\u043e\u0431\u0440\u0435 \u043f\u0440\u0430\u0446\u044e\u0454 \u0437 \u0456\u0441\u043d\u0443\u044e\u0447\u0438\u043c\u0438 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430\u043c\u0438\n\n## \u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f\nMIT\n\n## \u0412\u043d\u0435\u0441\u043e\u043a\nIssue/PR \u0432\u0456\u0442\u0430\u044e\u0442\u044c\u0441\u044f.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Universal ANSI colorizer for Python (8/16 colors, 256-color, RGB, styles)",
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/datsiuk7/wrapcolor",
        "Issues": "https://github.com/datsiuk7/wrapcolor/issues",
        "Source": "https://github.com/datsiuk7/wrapcolor"
    },
    "split_keywords": [
        "ansi",
        " color",
        " terminal",
        " console",
        " rgb",
        " xterm-256",
        " styles"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b562ce5861dc4d8ffad9950ccb503390011a31c12f819cf5280aa94863d2b6c1",
                "md5": "d148f1faaaaa63d65aaef39718c9ff96",
                "sha256": "fe55c01ed00f49e8f5c81f644e48763c8df4f4c0f0674cdf44b0b1a3c5ae92a8"
            },
            "downloads": -1,
            "filename": "wrapcolor-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d148f1faaaaa63d65aaef39718c9ff96",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 6773,
            "upload_time": "2025-10-19T11:04:18",
            "upload_time_iso_8601": "2025-10-19T11:04:18.733821Z",
            "url": "https://files.pythonhosted.org/packages/b5/62/ce5861dc4d8ffad9950ccb503390011a31c12f819cf5280aa94863d2b6c1/wrapcolor-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b63c3006905edba8d2720a31ebe06895699fd39498e7fd9c149bf3bbdfdd1dcc",
                "md5": "f9ba3619bef8f16566f232a8f7bb4463",
                "sha256": "7b4cbe17ee6fdd80901bd966974b8bebe6c28b896bac32fad48a4daf1aedd9c4"
            },
            "downloads": -1,
            "filename": "wrapcolor-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "f9ba3619bef8f16566f232a8f7bb4463",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 6965,
            "upload_time": "2025-10-19T11:04:20",
            "upload_time_iso_8601": "2025-10-19T11:04:20.028571Z",
            "url": "https://files.pythonhosted.org/packages/b6/3c/3006905edba8d2720a31ebe06895699fd39498e7fd9c149bf3bbdfdd1dcc/wrapcolor-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-19 11:04:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "datsiuk7",
    "github_project": "wrapcolor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "wrapcolor"
}
        
Elapsed time: 2.08418s