Giter Club home page Giter Club logo

colorclass's Introduction

colorclass

Yet another ANSI color text library for Python. Provides "auto colors" for dark/light terminals. Works on Linux, OS X, and Windows. For Windows support you just need to call Windows.enable() in your application.

On Linux/OS X autocolors are toggled by calling set_light_background() and set_dark_background(). On Windows this can be done automatically if you call Windows.enable(auto_colors=True). Even though the latest Windows 10 does support ANSI color codes natively, you still need to run Windows.enable() to take advantage of automatically detecting the console's background color.

In Python2.x this library subclasses unicode, while on Python3.x it subclasses str.

  • Python 2.6, 2.7, PyPy, PyPy3, 3.3, 3.4, and 3.5 supported on Linux and OS X.
  • Python 2.6, 2.7, 3.3, 3.4, and 3.5 supported on Windows (both 32 and 64 bit versions of Python).
Build Status Windows Build Status Coverage Status Latest Version Downloads

Quickstart

Install:

pip install colorclass

Piped Command Line

It is possible to pipe curly-bracket tagged (or regular ANSI coded) text to Python in the command line to produce color text. Some examples:

echo "{red}Red{/red}" |python -m colorclass  # Red colored text.
echo -e "\033[31mRed\033[0m" | COLOR_DISABLE=true python -m colorclass  # Strip colors
echo -e "\033[31mRed\033[0m" | COLOR_ENABLE=true python -m colorclass &> file.txt  # Force colors.

Export these environment variables as "true" to enable/disable some features:

Env Variable Description
COLOR_ENABLE Force colors even when piping to a file.
COLOR_DISABLE Strip all colors from incoming text.
COLOR_LIGHT Use light colored text for dark backgrounds.
COLOR_DARK Use dark colored text for light backgrounds.

Example Implementation

Example Script Screenshot

Example Windows Screenshot

Source code for the example code is: example.py

Usage

Different colors are chosen using curly-bracket tags, such as {red}{/red}. For a list of available colors, call colorclass.list_tags().

The available "auto colors" tags are:

  • autoblack
  • autored
  • autogreen
  • autoyellow
  • autoblue
  • automagenta
  • autocyan
  • autowhite
  • autobgblack
  • autobgred
  • autobggreen
  • autobgyellow
  • autobgblue
  • autobgmagenta
  • autobgcyan
  • autobgwhite

Methods of Class instances try to return sane data, such as:

from colorclass import Color
color_string = Color('{red}Test{/red}')

color_string
u'\x1b[31mTest\x1b[39m'

len(color_string)
4

color_string.istitle()
True

There are also a couple of helper attributes for all Color instances:

color_string.value_colors
'\x1b[31mTest\x1b[39m'

color_string.value_no_colors
'Test'

Changelog

This project adheres to Semantic Versioning.

2.2.0 - 2016-05-14

Added
  • disable_if_no_tty() function to conditionally disable colors when STDERR and STDOUT are not streams.
Changed
  • Colors enabled by default always, like it was before v2.0.0.

2.1.1 - 2016-05-10

Fixed
  • Printing box drawing characters on Windows from Python 2.6.

2.1.0 - 2016-05-07

Added
  • keep_tags boolean keyword argument to Color(). Prevents colorclass from parsing curly brackets.
  • Automatically skip replacing stderr/stdout streams on latest Windows 10 versions with native ANSI color support.
Changed
  • Refactored most of windows.py.
  • Background color determined from either stderr or stdout, instead of just one stream (e.g. piping stderr to file).
Fixed

2.0.0 - 2016-04-10

Added
  • Python 3.5 support.
  • enable_all_colors(), is_enabled(), and is_light() toggle functions.
  • Library can be used as a script (e.g. echo "{red}Red{/red}" |python -m colorclass).
  • Ability to add/multiply Color instances just like str.
  • Ability to iterate a Color instance and have each character keep its color codes.
Changed
  • Converted library from Python module to a package.
  • set_light_background() and set_dark_background() no longer enable colors. Use enable_all_colors().
  • Colors are disabled by default when STDERR and STDOUT are not streams (piped to files/null). Similar to grep.
  • Reduce size of ANSI escape sequences by removing codes that have no effect. e.g. \033[31;35m to \033[35m.
  • Color methods that return strings now return Color instances instead of str instances.
Fixed

1.2.0 - 2015-03-19

Added

1.1.2 - 2015-01-07

Fixed
  • Maintaining Color type through .encode() and .decode() chains.

1.1.1 - 2014-11-03

Fixed
  • Python 2.7 64-bit original colors bug on Windows.
  • resetting colors when reset_atexit is True.
  • Improved sorting of list_tags().

1.1.0 - 2014-11-01

Added
  • Native Windows support and automatic background colors.

1.0.2 - 2014-10-20

Added
  • Ability to disable/strip out all colors.

1.0.1 - 2014-09-11

Fixed
  • splitlines() method.

1.0.0 - 2014-09-01

  • Initial release.

colorclass's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.