ANSI Color formatting for terminal output and log coloring
Project description
termcolor_dg
๐ฆ pypi/termcolor_dg | ๐ ANSI escape code | ๐ Color codes cheatsheet
ANSI Color formatting for terminal output and log coloring. Supports 16 colors, 256 colors and 24-bit color modes.
Python 2 support is present for legacy projects, and because it is not too much work and I have to use it for now.
Example
from termcolor_dg import colored, cprint
print(colored('Hello, World!', 'light_red', 'on_blue'))
cprint('Hello, World!', 'blue', 'on_light_red', ['reverse', 'blink'])
print_red_on_cyan = lambda x: cprint(x, 'red', 'on_cyan')
print_red_on_cyan('Hello, World!')
for i in range(10):
cprint(str(i), 'magenta', end=' ' if i != 9 else '\n')
import sys
cprint("Attention!", 196, attrs='bold', file=sys.stderr) # 256 color mode
cprint("Attention!", (255, 0, 0), attrs='bold', file=sys.stderr) # 24-bit color mode
import logging
from termcolor_dg import logging_basic_color_config
logging_basic_color_config()
logging.log(logging.INFO, 'test')
Colors demo screenshot (python -m termcolor_dg
):
Colored logs demo screenshot (python -m termcolor_dg logs
):
Environment variables
-
ANSI_COLORS_FORCE: If set to anything, even empty string, color escape sequences will be added.
-
ANSI_COLORS_DISABLED: If set to anything no coloring will be performed, overrides ANSI_COLORS_FORCE.
-
NO_COLOR: If set to anything no coloring will be performed, overrides ANSI_COLORS_FORCE, see https://no-color.org/.
If none of the environment variables is set the colors are used
only if the stdout
is attached to a terminal: sys.stdout.isatty()
.
Text properties
Text colors | Text highlights | Alt Text highlights | Attributes |
---|---|---|---|
black | black | on_black | bold |
red | red | on_red | dark |
green | green | on_green | underline |
yellow | yellow | on_yellow | blink |
blue | blue | on_blue | reverse |
magenta | magenta | on_magenta | concealed |
cyan | cyan | on_cyan | |
light_grey | light_grey | on_light_grey | |
dark_grey | dark_grey | on_dark_grey | |
light_red | light_red | on_light_red | |
light_green | light_green | on_light_green | |
light_yellow | light_yellow | on_light_yellow | |
light_blue | light_blue | on_light_blue | |
light_magenta | light_magenta | on_light_magenta | |
light_cyan | light_cyan | on_light_cyan | |
white | white | on_white |
Functions
Adding ANSI colors
always_colored(text, color=None, on_color=None, attrs=None, reset=True) : Returns the text with ANSI color code in front and ANSI color reset after. Arguments: : - text is the text to add color to : - color and on_color define the character and background color. Each can be a name for 16 color mode, number for the 256 color variant and list/tuple of R, G and B for the 24 bit color support. The following all define light red: 'light_red', 9, 196 and (255, 0, 0). : - attrs attributes, single attribute name, list or tuple of attributes. : - reset if set to False will suppress adding of the reset ANSI sequence at the end. Useful if you are joining another colored string, only the last reset is really needed.
colored(text, color=None, on_color=None, attrs=None, reset=True) : same as always_colored but checks if the app is running on a terminal and if the colors have been forced or disabled. The boolean termcolor_dg.DISABLED is the variable checked.
Utility functions
cprint(text='', color=None, on_color=None, attrs=None, **kwargs) : same as colored, but prints the resulting string instead of returning it.
rainbow_color(n, steps, nmax=255) : calculates the color at step n needed to produce a rainbow in steps steps with intensity up to nmax. Ex: rainbow_color(0, 120) returns (255, 0, 0), rainbow_color(30, 120) returns (128, 255, 0).
monkey_patch_logging : Monkeypatch logging.Formatter to add colors to the logs on a terminal, not customizable for now. Monkeypatch logging.LogRecord.getMessage to log formatting errors in the log format instead of throwing useless exception.
logging_basic_color_config(level='DEBUG', fmt='%(asctime)s %(message)s # %(filename)s:%(lineno)d %(name)s', color_on_terminal=True) : Basic logging configuration, coloring and report formatting errors (monkey_patch_logging). Coloring code relies on ' # ' to determine the section to print in pale dark blue (comment).
monkey_unpatch_logging : Undo the monkeypatching done by monkey_patch_logging and remove coloring and error handling.
COLOR_RESET_STR : The color and attribute ANSI reset code.
Similar projects
You may want to check out:
- ๐ฆ pypi/termcolor - the original project
- ๐ฆ delameter/termcolor - fork of the original termcolor_dg extends
- ๐ฆ pypi/colorama for more advanced options.
Interesting links
- ๐ Terminal Colors discussion with examples
- ๐ ANSI/VT100 Terminal Control Escape Sequences
- ๐ ANSI escape code
- ๐ Color codes cheatsheet
- ๐ MarkdownGuide - Basic Syntax
Terminal properties support
Assume this information is outdated.
Terminal | bold | dark | underline | blink | reverse | concealed | 256 colors | 24-bit color |
---|---|---|---|---|---|---|---|---|
linux | โ[^3] | โ[^3] | โ [^3] | โ [^3] | โ | โ | โ | โ |
konsole | โ | โ | โ | โ | โ | โ | โ | โ |
terminator | โ | โ | โ | โ | โ | โ | โ | โ |
kitty | โ | โ | โ | โ | โ | โ | โ | โ |
xterm | โ | โ | โ | โ | โ | โ | โ | โ |
rxvt | โ | โ | โ | โ | โ | โ | โ | โ |
dtterm | โ | โ | โ | reverse | โ | โ | โ | โ |
teraterm | reverse | โ | โ | rev/red | โ | โ | โ | โ |
aixterm | normal | โ | โ | โ | โ | โ | โ | โ |
Windows | โ | โ | โ | โ | โ | โ [^4] | โ | โ |
PuTTY | โ [^2] | โ | โ | โ [^1] | โ | โ | โ | โ |
Cygwin SSH | โ | โ | color | color | color | โ | โ | โ |
Mac Terminal | โ | โ | โ | โ | โ | โ | โ | โ |
iTerm2 | โ | โ | โ | โ | โ | โ | โ | โ |
[^1]: Disabled by default
[^2]: Supports color change, bold text or both.
[^3]: See VGA text mode
[^4]: See Add support for the "concealed" graphic rendition attribute #6876
termcolor_dg changes
1.0.0 (2023-05-25)
- fix DISABLED detection
- logging.basicConfig has no disable_existing_loggers argument.
- move back to GitHub, workflows does work and is free.
0.9.3.1 (2022-02-14)
- Adjust the log color scheme.
- pylint fixes in the color demo.
0.9.3 (2022-02-14)
- Adjust the log color scheme.
- pylint fixes in the color demo.
0.9.2 (2022-02-07)
- Combine color, background and attributes in a single escape sequence.
- Minor enhancements.
0.9.1 (2022-02-05)
- Rename to termcolor_dg (termcolor2 is taken).
0.9.0 (2022-02-05)
- Fork to termcolor2.
- Add 24-bit colors support.
- Add logging and color demos.
- Add ANSI_COLORS_DISABLED and ANSI_COLORS_FORCE environment variables.
- Add always_colored, rainbow_color.
- Add monkey_patch_logging and logging_basic_color_config utility functions.
- Better cprint and print compatibility (no arguments = new line).
- Drop 'gray' and 'on_gray' (it was an alias for black, bad idea?).
- Make the trailing reset sequence optional for colored.
- Use
python -m build
to build the project. - Remove regex usage, the following would have not been stripped but works:
echo -e '(\e[01;32mx\e[1;0033mx\e[m)'
. - Remove PKG-INFO.
- README.md instead of README.rst.
- ... unit tests, INSTALL ...
termcolor changes
1.9.1 (2021-12-15)
- python 2 and 3 compatibility, avoid KeyError
- make pylint happy
- fix character escapes
- better .gitignore
- fix ALL to all
1.1.0 (2011-01-13)
- Added cprint function.
1.0.1 (2011-01-13)
- Updated README.rst.
1.0.0 (2011-01-13)
- Changed license to MIT.
- Updated copyright.
- Refactored source code.
0.2 (2010-09-07)
- Added support for Python 3.x.
0.1.2 (2009-06-04)
- Fixed bold characters. (Thanks Tibor Fekete)
0.1.1 (2009-03-05)
- Some refactoring.
- Updated copyright.
- Fixed reset colors.
- Updated documentation.
0.1 (2008-06-09)
- Initial release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file termcolor_dg-1.0.1.tar.gz
.
File metadata
- Download URL: termcolor_dg-1.0.1.tar.gz
- Upload date:
- Size: 292.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 871570e885da3530e6b7ab50afe0879e5c13b71fda72b3dc1a5fef87498f35fb |
|
MD5 | f89e679306397f02475e65851c116dc9 |
|
BLAKE2b-256 | c3b7c56f72d80b73c60b787f2f2bf5880e9071bfb8ae33a9220d653b29919b07 |
File details
Details for the file termcolor_dg-1.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: termcolor_dg-1.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e89f4d1eb1477a733f21928b0fddd822f0c398a053f021666d63abc5861931a |
|
MD5 | eeb04f3da3cad4851b39080b3c36e1aa |
|
BLAKE2b-256 | 0d06696ca1679486564aa3fa8023c28cf72a592f82c370113bec76b24994a7c7 |