Skip to main content

Colorist for Python

Project description

Latest version Python 3.10 | 3.11 or higher BSD-3-Clause license Codecov Test Downloads

🌈 Colorist for Python 🌈

Lightweight Python package that makes it easy and fast to print colored text in the terminal.

Ready to try? Learn how to install.

Getting Started

Print Line of Colored Text

How to print a full line of colored text in the terminal:

from colorist import green, yellow, red

green("This is GREEN!")
yellow("This is YELLOW!")
red("This is RED!")

How it appears in the terminal:

Example of full line of green, yellow, red colored text printed in a terminal window

Print Mixed Text Colors

How to customize colors inside a paragraph and print it in the terminal:

from colorist import Color

print(f"I want {Color.RED}red{Color.OFF} color inside this paragraph")

print(f"Both {Color.GREEN}green{Color.OFF} and {Color.YELLOW}yellow{Color.OFF} are nice colors")

How it appears in the terminal:

Example of white text mixed with green, yellow, red colors printed in a terminal window

Other Styling Options

Print Bright Colors

Most terminals support bright colors that stand more out:

from colorist import BrightColor

print(f"I want {BrightColor.CYAN}cyan{BrightColor.OFF} color inside this paragraph")

How it appears in the terminal:

Example of white text mixed with cyan printed in a terminal window

Remember to use Color.OFF or BrightColor.OFF every time you want to revert back to the default terminal text style. Otherwise the color may spill over and into other terminal messages.

Print Background Colors

from colorist import bg_green, bg_yellow, bg_red

bg_green("This is GREEN background!")
bg_yellow("This is YELLOW background!")
bg_red("This is RED background!")

How it appears in the terminal:

Example of white text and colored backgrounds if green, yellow, red printed in a terminal window

Background colors can also be mixed inside a paragraph:

from colorist import BgColor

print(f"I want {BgColor.RED}red{BgColor.OFF} background color inside this paragraph")

print(f"Both {BgColor.GREEN}green{BgColor.OFF} and {BgColor.YELLOW}yellow{BgColor.OFF} are nice background colors")

How it appears in the terminal:

Example of black, green, yellow, red background colors mixed inside paragraph printed in a terminal window

from colorist import BgBrightColor

print(f"I want {BgBrightColor.CYAN}cyan{BgBrightColor.OFF} background color inside this paragraph")

How it appears in the terminal:

Example of white text on a cyan background color printed in a terminal window

As with text colors, remember to use BgColor.OFF or BgBrightColor.OFF every time you want to revert back to the default terminal text style. Otherwise the color may spill over and into other terminal messages.

Other String Formats

It's often easier and more readable to use f-strings as in the examples above, but f-strings aren't supported in some earlier versions of Python. Instead, you can also use string formatting or concatenation:

from colorist import Color

print("I want {0}red{1} color inside this paragraph".format(Color.RED, Color.OFF))
print("I want " + Color.RED + "red" + Color.OFF + " color inside this paragraph")

Both options appear the same in the terminal:

Example of terminal message with red text color

Print RGB, HSL and Hex Colors

Note that not all terminals support RGB, HSL or Hex colors. If your terminal does support such advanced colors, read on.

RGB Colors

Try the rgb and bg_rgb methods for a full line of colored text. The values for red, green, blue can be an integer between 0-255.

from colorist import rgb, bg_rgb

rgb("I want this text in blue RGB colors", 0, 128, 255)
bg_rgb("I want this background in blue RGB colors", 0, 128, 255)

How it appears in the terminal:

Example of text in RGB colors printed in a terminal window

Or customize the styling of text and background with the ColorRGB and BgColorRGB classes:

from colorist import ColorRGB, BgColorRGB

dusty_pink = ColorRGB(194, 145, 164)
bg_steel_blue = BgColorRGB(70, 130, 180)

print(f"I want to use {dusty_pink}dusty pink{dusty_pink.OFF} and {bg_steel_blue}steel blue{bg_steel_blue.OFF} colors inside this paragraph")

How it appears in the terminal:

Another example of text in RGB colors printed in a terminal window

HSL Colors

Similarly, you can also output colors in HSL with the hsl and bg_hsl methods. The value for hue can be between 0-360 degrees, while saturation and lightness can be a percentage between 0-100 %:

from colorist import hsl, bg_hsl

hsl("I want this text in green HSL colors", 120, 50, 50)
bg_hsl("I want this background in green HSL colors", 120, 50, 50)

How it appears in the terminal:

Example of text in HSL colors printed in a terminal window

Or customize the styling of text and background with the ColorHSL and BgColorHSL classes:

from colorist import ColorHSL, BgColorHSL

mustard_green = ColorHSL(60, 56, 43)
bg_steel_gray = BgColorHSL(190, 2, 49)

print(f"I want to use {mustard_green}mustard green{mustard_green.OFF} and {bg_steel_gray}steel blue{bg_steel_gray.OFF} colors inside this paragraph")

How it appears in the terminal:

Another example of text in HSL colors printed in a terminal window

Hex Colors

Try the hex and bg_hex methods for a full line of colored text. Allowed Hex values are, for instance, #00aaff or #0af, alternatively without the hash sign as 00aaff or 0af.

from colorist import hex, bg_hex

hex("I want this text in coral Hex colors", "#ff7f50")
bg_hex("I want this background in coral Hex colors", "#ff7f50")

How it appears in the terminal:

Example of text in Hex colors printed in a terminal window

Or customize the styling of text and background with the ColorHex and BgColorHex classes:

from colorist import ColorHex, BgColorHex

watermelon_red = ColorHex("#ff5733")
bg_mint_green = BgColorHex("#99ff99")

print(f"I want to use {watermelon_red}watermelon pink{watermelon_red.OFF} and {bg_mint_green}mint green{bg_mint_green.OFF} colors inside this paragraph")

How it appears in the terminal:

Another example of text in Hex colors printed in a terminal window

Print Effects and Other Styles

In addition to colors, Colorist can also add effects when you print text in the terminal. How to print a full line of text with effects:

from colorist import effect_blink

effect_blink("This is BLINKING!")

How it appears in the terminal:

Example of terminal message with blinking text

And this can also be combined with an optional color:

from colorist import Color, effect_blink

effect_blink("This is BLINKING!", Color.CYAN)

How it appears in the terminal:

Example of terminal message with blinking, cyan-colored text

How to customize terminal messages and change effect inside a paragraph:

from colorist import Effect

print(f"I want {Effect.UNDERLINE}underlined text{Effect.UNDERLINE_OFF} inside this paragraph")

print(f"I want {Effect.BOLD}emphasized text{Effect.BOLD_OFF} inside this paragraph")

How it appears in the terminal:

Example of terminal message with underline and bold text

Effects can also be mixed with colors:

from colorist import Color, Effect

print(f"I want both {Color.RED}colored and {Effect.BLINK}blinking{Effect.BLINK_OFF} text{Color.OFF} inside this paragraph")

How it appears in the terminal:

Example of terminal message with red and blinking text

Similar to Color.OFF, remember to turn off an effect with the relevant reset option (e.g Effect.BOLD_OFF, Effect.DIM_OFF, etc. or even just Effect.OFF) every time you want to revert back to the default terminal text style. Otherwise the effect may spill over and into other terminal messages.

Supported Colors and Styles

Colorist is based on ANSI escape codes, a standard that defines colors, styling and effects for text in terminal windows. Note that most terminals support all color options, but not all:

Category Color Options
Standard ANSI colors supported by almost all terminals Color, BgColor, Effect
Non-standard ANSI colors supported by most terminals BrightColor, BgBrightColor
Advanced ANSI colors only supported by some terminals ColorRGB, BgColorRGB, ColorHSL, BgColorHSL, ColorHex, BgColorHex

Foreground Text

Color Full Text Function Custom Example
Green green("text") Color.GREEN Green text color in terminal
Yellow yellow("text") Color.YELLOW Yellow text color in terminal
Red red("text") Color.RED Red text color in terminal
Magenta magenta("text") Color.MAGENTA Magenta text color in terminal
Blue blue("text") Color.BLUE Blue text color in terminal
Cyan cyan("text") Color.CYAN Cyan text color in terminal
White white("text") Color.WHITE White text color in terminal
Black black("text") Color.BLACK Black text color in terminal
- - Color.DEFAULT -
- - Color.OFF -
Bright green bright_green("text") BrightColor.GREEN Bright green text color in terminal
Bright yellow bright_yellow("text") BrightColor.YELLOW Bright yellow text color in terminal
Bright red bright_red("text") BrightColor.RED Bright red text color in terminal
Bright magenta bright_magenta("text") BrightColor.MAGENTA Bright magenta text color in terminal
Bright blue bright_blue("text") BrightColor.BLUE Bright blue text color in terminal
Bright cyan bright_cyan("text") BrightColor.CYAN Bright cyan text color in terminal
Bright white bright_white("text") BrightColor.WHITE Bright white text color in terminal
Bright black bright_black("text") BrightColor.BLACK Bright black text color in terminal
- - BrightColor.DEFAULT -
- - BrightColor.OFF -

Background

Color Full Text Function Custom Example
Green bg_green("text") BgColor.GREEN Green background color in terminal
Yellow bg_yellow("text") BgColor.YELLOW Yellow background color in terminal
Red bg_red("text") BgColor.RED Red background color in terminal
Magenta bg_magenta("text") BgColor.MAGENTA Magenta background color in terminal
Blue bg_blue("text") BgColor.BLUE Blue background color in terminal
Cyan bg_cyan("text") BgColor.CYAN Cyan background color in terminal
White bg_white("text") BgColor.WHITE White background color in terminal
Black bg_black("text") BgColor.BLACK Black background color in terminal
- - BgColor.DEFAULT -
- - BgColor.OFF -
Bright green bg_bright_green("text") BgBrightColor.GREEN Bright green background color in terminal
Bright yellow bg_bright_yellow("text") BgBrightColor.YELLOW Bright yellow background color in terminal
Bright red bg_bright_red("text") BgBrightColor.RED Bright red background color in terminal
Bright magenta bg_bright_magenta("text") BgBrightColor.MAGENTA Bright magenta background color in terminal
Bright blue bg_bright_blue("text") BgBrightColor.BLUE Bright blue background color in terminal
Bright cyan bg_bright_cyan("text") BgBrightColor.CYAN Bright cyan background color in terminal
Bright white bg_bright_white("text") BgBrightColor.WHITE Bright white background color in terminal
Bright black bg_bright_black("text") BgBrightColor.BLACK Bright black background color in terminal
- - BgBrightColor.DEFAULT -
- - BgBrightColor.OFF -

Effects

Effect Full Text Function Custom Reset Example
Bold effect_bold("text") Effect.BOLD Effect.BOLD_OFF Example of terminal message with bold text
Dim effect_dim("text") Effect.DIM Effect.DIM_OFF Example of terminal message with dimmed text
Underline effect_underline("text") Effect.UNDERLINE Effect.UNDERLINE_OFF Example of terminal message with underlined text
Blink effect_blink("text") Effect.BLINK Effect.BLINK_OFF Example of terminal message with blinking text
Reverse effect_reverse("text") Effect.REVERSE Effect.REVERSE_OFF Example of terminal message with reversed text color and background
Hide effect_hide("text") Effect.HIDE Effect.HIDE_OFF Example of terminal message with hidden text
- - - Effect.OFF -

Thank You for Supporting

Donate

This module is free to use. And if you like it, feel free to buy me a coffee.

Contribute

If you have suggestions or changes to the module, feel free to add to the code and create a pull request.

Report Bugs

Report bugs and issues here.

Latest version Python 3.10 | 3.11 or higher BSD-3-Clause license Codecov Test Downloads

🌈 How to Install Colorist for Python 🌈

Prerequisites

  • Python version 3.10, 3.11 or higher
  • Terminal that supports color (i.e. ANSI escape codes)

Installation

PyPI

Assuming that Python is installed already, execute this command in the terminal:

pip install colorist

If you already have installed Colorist for Python, use this command to upgrade to latest version:

pip install --upgrade colorist

Homebrew

If you already have installed the Homebrew package manager for Mac and Linux, execute this terminal command to tap Colorist for Python:

brew tap jakob-bagterp/colorist

And then install:

brew install colorist

Getting Started

Ready to go? Learn how to use Colorist.

3-Clause BSD License

Copyright (c) 2022 – present, Jakob Bagterp

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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

colorist-1.6.0.tar.gz (44.5 kB view hashes)

Uploaded Source

Built Distribution

colorist-1.6.0-py3-none-any.whl (53.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page