https://github.com/alttch/neotermcolor
modern ANSII Color formatting for output in terminal
https://github.com/alttch/neotermcolor
colorful colorization linux termcolor terminal text-color windows
Last synced: 10 months ago
JSON representation
modern ANSII Color formatting for output in terminal
- Host: GitHub
- URL: https://github.com/alttch/neotermcolor
- Owner: alttch
- License: mit
- Created: 2019-09-20T00:15:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-02-23T13:46:43.000Z (over 5 years ago)
- Last Synced: 2025-07-28T21:27:24.136Z (11 months ago)
- Topics: colorful, colorization, linux, termcolor, terminal, text-color, windows
- Language: Python
- Size: 17.6 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# modern ANSII Color formatting for output in terminal
## What is neotermcolor
neotermcolor library is a fork of old good
[termcolor](https://pypi.org/project/termcolor/), which is widely used. I like
it very much, but unfortunately last release was long time ago.
Everything is fully backward compatible with original termcolor:
```python
import sys
from neotermcolor import colored, cprint
text = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])
print(text)
cprint('Hello, World!', 'green', 'on_red')
print_red_on_cyan = lambda x: cprint(x, 'red', 'on_cyan')
print_red_on_cyan('Hello, World!')
print_red_on_cyan('Hello, Universe!')
for i in range(10):
cprint(i, 'magenta', end=' ')
cprint("Attention!", 'red', attrs=['bold'], file=sys.stderr)
```
## Installation
```shell
pip3 install neotermcolor
```
## New features
### It works in Windows terminal
Yep, right out-of-the-box (tested on Windows 10)
### It is readline-safe
When you mix ANSI color codes with readline input, it may cause a problem.
neotermcolor has a workaround:
* new param for **cprint** and **colored**: *readline_safe=True*
* you may also turn on readline-safe colorizing by default, setting
```python
import neotermcolor
neotermcolor.readline_always_safe = True
```
### It has 256-color palette
If color code is specified as an integer (0..255), ANSI 256-color palette is
used. You may specify color codes both for foreground and background and mix
them with other attributes:
```python
from neotermcolor import cprint
cprint('Underline light-green (119) on grey (237)', 119, 237, ['underline'])
```
### It is TTY-aware
neotermcolor will not colorize text if process stdout or stderr is not a TTY.
This feature is on by default, but you may turn it off:
```python
import neotermcolor
neotermcolor.tty_aware = False
```
### It has palette overriding
You may define own color names or override existing ones: e.g. you may use
standard palette for 16-color terminals, but override it when your program
detect terminal with 256-color support or when it's forced by user:
```python
import neotermcolor
neotermcolor.set_color('red', 197)
neotermcolor.cprint('Red color is now purple', 'red')
```
### It has styles
Styles are alternative to classical defining a "style" for certain type of
messages with *functools.partial* or *lambda*. A style may contain color,
on_color and attributes:
```python
import neotermcolor
neotermcolor.set_style('error', color='red', attrs='bold')
neotermcolor.cprint('ERROR MESSAGE', style='error')
# or
neotermcolor.cprint('ERROR MESSAGE 2', '@error')
```
Note: if you specify both style and e.g. attrs, the style attrs will be
overriden.
### Single attribute can now be specified as a string
```python
# as list or tuple
cprint('test', attrs=['bold'])
# as a string
cprint('test', attrs='bold')
```
### How to use it instead of old termcolor in the existing projects
```python
import neotermcolor as termcolor
```
I'll do my best to keep it backward compatible with original termcolor.
Enjoy!