Skip to main content

modern ANSII Color formatting for output in terminal

What is neotermcolor

neotermcolor library is a fork of old good 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:

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

    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
    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:

    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:

    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:

    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:

    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

    # 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

    import neotermcolor as termcolor

I'll do my best to keep it backward compatible with original termcolor.

Enjoy!

Release files for neotermcolor 2.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for neotermcolor 2.0.11
File Size Uploaded
neotermcolor-2.0.11.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for neotermcolor 2.0.11
File Interpreter ABI Platform
neotermcolor-2.0.11-py3-none-any.whl Python 3 none any Details

Total release size: 12.1 kB

Release files / neotermcolor-2.0.11.tar.gz

Download URL neotermcolor-2.0.11.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9a5a1d4d6987278f459aed25d1d60ff811478a8fe1ae0692c66875f250e82e6e
BLAKE2b-256 checksum
How to use checksums
9d949a56224c4aeb8c528cd5b71349c6ff234f73aa3640f52fd0688060642bb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / neotermcolor-2.0.11-py3-none-any.whl

Download URL neotermcolor-2.0.11-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ec7195505cc27e0c8ae36eda3523e2410b81f1e2ff018dc60e16a9a85572585
BLAKE2b-256 checksum
How to use checksums
92c30e36d165ec1c07b8bf840412ea8da8e224d001cbf86e6bdc710f7309774b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

2.0.11 This release

2 release files

2.0.10

1 release file

2.0.9

1 release file

2.0.8

1 release file

2.0.7

1 release file

2.0.5

1 release file

2.0.4

1 release file

2.0.3

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page