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).
    • 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.

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.4.tar.gz (7.7 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.4-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paintcan-0.1.4.tar.gz
  • Upload date:
  • Size: 7.7 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.4.tar.gz
Algorithm Hash digest
SHA256 d1266676822e5006a6296ce1b6bf0d89076cbe9d4f85cae204fab5b00147155b
MD5 7ff365b7f82026bf3aaecba53727f904
BLAKE2b-256 f8bcfc620ea97e1aa5400f8a945677f7bc040323f3cefec8028a62067284fc7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for paintcan-0.1.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: paintcan-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 8.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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1008c9bceb04cd9d6920f8d034dee4cf9753ad8edba29bbe4e9f00b23b0997e1
MD5 1936516e6762e391318559545f08a8cf
BLAKE2b-256 d2d524426bd26bcbb9d73ff08d515c40cfff6694bafdb3ed7f5dfa5847616746

See more details on using hashes here.

Provenance

The following attestation bundles were made for paintcan-0.1.4-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