Skip to main content

A Pythonic library for creating beautiful, algorithmic color schemes.

Project description

PaintCan

PaintCan banner

Build Status Supports Python versions 3.11+

PaintCan is a high-quality, Pythonic library for working with HSBA colors and generating beautiful, algorithmic color schemes. It provides robust tools for color manipulation and harmony generation.

Features

  • HSBAColor: A value-type representation of color using Hue, Saturation, Brightness, and Alpha (0.0 - 1.0).
    • Cyclic Hue adjustment (wrapping).
    • Clamping and Overflow support for Saturation and Brightness.
    • Pythonic unpacking: h, s, b, a = color.
  • ColorScheme: A collection of colors generated by color theory rules.
    • Supports the Sequence protocol (len(scheme), scheme[0], iteration).
    • 8 factory methods for generating harmonious schemes:
      • Analogous
      • Accented Analogous
      • Complementary
      • Compound
      • Monochromatic
      • Shades
      • Split Complementary
      • Triadic

Installation

Using PDM:

pdm add paintcan

Using pip:

pip install paintcan

Usage

Working with HSBAColor

from paintcan import HSBAColor

# Create a color (Red)
red = HSBAColor(hue=0.0, saturation=1.0, brightness=1.0, alpha=1.0)

# Adjust Hue (wraps around)
orange = red.adjust_hue(0.08)

# Get the complement (Cyan-ish)
cyan = red.complement()

# Pythonic Unpacking
h, s, b, a = cyan
print(f"Hue: {h}, Saturation: {s}")

Generating Color Schemes

from paintcan import HSBAColor, ColorScheme

# Start with a base color
base = HSBAColor(0.5, 0.8, 0.9, 1.0) # Cyan-ish

# Generate a Split Complementary scheme
scheme = ColorScheme.from_split_complementary(base)

# Access colors (behaves like a tuple)
print(f"Scheme has {len(scheme)} colors.")
theme = scheme.theme_color # First color is always the theme color

for color in scheme:
    print(color)

Demo

To see the color schemes in action in your terminal (using ANSI colors):

# If installed via PDM/Dev
pdm run python -m paintcan

# If installed in your environment
python -m paintcan

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

paintcan-0.1.2.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paintcan-0.1.2-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file paintcan-0.1.2.tar.gz.

File metadata

  • Download URL: paintcan-0.1.2.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for paintcan-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7080aa748010021d49209aa00385d31fc6e381c0df44ed692804a9d6083ac68a
MD5 6077c746f765f46fd6ebcc133506c947
BLAKE2b-256 69a6defd101a160ec5004995fe444fb4f9d1d9c4394a3b58a177f601e508e339

See more details on using hashes here.

Provenance

The following attestation bundles were made for paintcan-0.1.2.tar.gz:

Publisher: python-publish.yml on btfranklin/paintcan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file paintcan-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: paintcan-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for paintcan-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 245a05d95bddbd79e83c84291747c8a8a0f8e5fa0149ec73d6a45efa82a89fd1
MD5 d085928ad605369df0b0b18cda0fda16
BLAKE2b-256 cd936e1061ce5a23b08696ff2f714055065b47456460d059f75d323f76371610

See more details on using hashes here.

Provenance

The following attestation bundles were made for paintcan-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on btfranklin/paintcan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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