Welcome to colorir’s documentation!

API

What is colorir?

colorir is a package used to create and manipulate palettes and colors. What makes colorir different from other similar packages like colour and palettable is that colorir focuses on personalization and interoperability: you can create your own color palettes and use them with any other python package such as matplotlib, tkinter or flask.

Main features

  • Create color schemes and save them to use in different projects

  • Interpolate colors in different formats (such as RGB, CIELab etc) to make gradients and color maps

  • Have access to a curated selection of unique color palettes and color names

  • Easily visualize swatches of colors in the terminal

Installation

Note

If you encounter permission errors when using colorir, please consider re-installing the package in user mode (by including the --user flag in the pip install command).

To install colorir with pip use following command:

$ python -m pip install colorir

Quick-Start

Create a palette with the additive elementary colors:

>>> palette = Palette(red="#ff0000",
...                   green="#00ff00",
...                   blue="#0000ff")

Following CSS color-naming conventions, our color names are all lowercase with no underscores, but you may name a color as you wish as long as it complies with python’s syntax for attribute names.

Let’s take a look at our palette in the terminal:

>>> palette  # Prints swatches representing the palette

  red #ff0000

  green #00ff00

  blue #0000ff

To add colors to a palette use the Palette.add() method:

>>> palette.add("cyan", "#00ffff")
>>> palette.add("yellow", HSL(60, 1, 0.5))  # We can pass colors in formats other than hex as well
>>> palette.add("magenta", CIELAB(60, -98, -60))  # They will be internally converted to match the rest of the palette
>>> palette

  red #ff0000

  green #00ff00

  blue #0000ff

  cyan #00ffff

  yellow #ffff00

  magenta #ff00ff

To access the colors in a palette we can use dot attribute syntax:

>>> palette.cyan  # palette['cyan'] also works

  #00ffff

We can make manipulate the properties of a color by adding and removing color components from other color systems:

>>> palette.cyan - CIELab(50, 0, 0)  # Remove 50 CIELab lightness from cyan

  #007477

>>> palette.cyan - HCLab(0, 25, 0)  # Remove 25 HCLab saturation from cyan

  #a5f3f2

See the color_class module for details on how to manipulate colors with arithmetics.

To interpolate colors we can use blend():

>>> blend(palette.yellow, palette.magenta, 0.5)  # Get color at 50% between yellow and magenta

  #f9afbe

blend() is actually a wrapper around the Grad class, which supports interpolation in different color systems:

>>> Grad([palette.yellow, palette.magenta], color_sys=CIELab).n_colors(5)  # Interpolates 5 colors from yellow to magenta

  #ffff00

  #ffd471

  #ffa6a6

  #ff71d3

  #ff00ff

To save a palette use Palette.save():

>>> palette.save(name="elementary")  # Name palette 'elementary' and save it in the default palette directory

You can then later reload the palette in another script with Palette.load():

>>> palette = Palette.load("elementary")

When loading or creating a palette, a ColorFormat may be passed to the constructor to specify how we want its colors to be represented:

>>> c_format = ColorFormat(color_sys=HSL)
>>> css = Palette.load("css", color_format=c_format)
>>> css.red
HSL(0.0, 1.0, 0.5)  # Tuple HSL representation

Alternatively, we can temporarily change the default color format project-wide so that new palettes default to it:

>>> from colorir import config, PYGAME_COLOR_FORMAT
>>> config.DEFAULT_COLOR_FORMAT = PYGAME_COLOR_FORMAT  # Change default format to a pre-defined PyGame-compatible color format
>>> pygame_palette = Palette(red=(255, 0, 0), green="#00ff00")
>>> pygame_palette.red
RGB(255, 0, 0)
>>> pygame_palette.green
RGB(0, 255, 0)  # The green hex code is now converted to RGB format

It is worth noting that all color classes inherit either tuple or str, meaning that no conversion is needed when passing them to other frameworks such as PyGame, Kivy and HTML embedding templates like Jinja.

For more information, see the Examples and consult colorir’s API.