Skip to main content

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).
    • Validates all components on construction.
    • Cyclic Hue adjustment (wrapping).
    • Clamping and full-interval Overflow support for Saturation and Brightness.
    • Pythonic unpacking: h, s, b, a = color.
  • ColorScheme: A collection of colors generated by color theory rules.
    • Immutable and supports the Sequence protocol (len(scheme), scheme[0], slicing, 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

Development

The maintainer and agent docs live in docs/index.md. For local validation:

pdm install --group dev
pdm run check
pdm build

License

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

Metadata

Release files for paintcan 0.1.4

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

Source distribution (sdist)

Source distribution for paintcan 0.1.4
File Size Uploaded
paintcan-0.1.4.tar.gz 7.7 kB Details

Built distribution (wheel)

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

Total release size: 15.8 kB

Release files / paintcan-0.1.4.tar.gz

Download URL paintcan-0.1.4.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d1266676822e5006a6296ce1b6bf0d89076cbe9d4f85cae204fab5b00147155b
BLAKE2b-256 checksum
How to use checksums
f8bcfc620ea97e1aa5400f8a945677f7bc040323f3cefec8028a62067284fc7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 8, 2026.

Transparency log

Release files / paintcan-0.1.4-py3-none-any.whl

Download URL paintcan-0.1.4-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1008c9bceb04cd9d6920f8d034dee4cf9753ad8edba29bbe4e9f00b23b0997e1
BLAKE2b-256 checksum
How to use checksums
d2d524426bd26bcbb9d73ff08d515c40cfff6694bafdb3ed7f5dfa5847616746
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

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