Skip to main content

Make colorful strings.

Project description

colorfulstring

colorfulstring is a lightweight Python utility for building ANSI-colored terminal strings with a fluent, chainable API.

Installation

pip install colorfulstring

Quick Start

from colorfulstring import c

print(c.r << "Error:" << " something went wrong")
print(c.g("OK"))

Usage

1) Color Shortcuts

Available shortcut color properties are d/r/g/y/b/p/c/w (dark/red/green/yellow/blue/purple/cyan/white).

You can chain them for background presets, e.g. c.b.g means blue foreground + green background.

Chaining is limited to two colors; c.b.g.r is not allowed.

print(c.y << "Warning")
print(c.b.g << "Blue on green via chaining")

2) Pipe-Style Chaining

Use << (or @) to append fragments in sequence:

print(c.b << "[INFO]" << " service started")

Use >> to convert a finished builder:

  • builder >> str: finalize as a regular Python string (same as str(builder)).
  • builder >> c.plaintext: finalize and strip ANSI escape codes.
ansi = c.r << "Error" >> str
plain = c.r << "Error" >> c.plaintext

3) c() Shortcut

c(text) immediately converts one fragment using the current style context and returns a string.

print(c.r("error"))
print(c.underline.g("underlined green"))

4) Conditional Output

  • iftrue(condition): include the next fragment only when condition is True.
  • ifnot(condition): include the next fragment only when condition is False.
  • ifelse(condition): choose between the next two fragments.
  • ifcases(cond1, cond2, ...): chain multiple ifelse branches and then provide one fallback fragment.
ok = True
line = c << "status: " << c.ifelse(ok) << c.g("success") << c.r("failed")
print(line)

score = 82
level = c.ifcases(score >= 90, score >= 75) << c.g("A") << c.y("B") << c.r("C")
print(c << "level: " << level)

5) Immediate Printing

c.print outputs each generated fragment immediately (without an automatic newline). It can be combined with c.endl.

line = c.print << "hello" << c.endl

6) Underline

Use .underline to add underline style:

print(c.underline << "plain underline")
print(c.underline.g << "green underline")
print(c.underline.g.b << "green on blue underline")

7) Faint Foreground

Use .faint to switch the foreground to a faint ANSI variant.

print(c.faint.r << "faint red")
print(c.faint.underline.g.b << "faint green on blue underline")

Note:

  • c.faint is no different from c, if you need a faint dark color, try c.faint.d.

8) Inline Token Grammar

Besides fluent chaining, colorfulstring can also parse inline token fragments from plain strings:

print(c << "$R:error$")
print(c << "$G-.B:faint green on blue$")
print(c << "$_Y:underlined yellow$")

Grammar (inside $...$):

  • TOKEN:text
  • TOKEN:
    • FG (foreground), e.g. R, G, B
    • FG- (faint foreground)
    • FG.BG (foreground + background)
    • FG-.BG (faint foreground + background)
    • optional underline prefix: _{TOKEN}

Escaping:

  • Only $$ is treated as an escaped dollar sign ($).
  • Any $...$ fragment that is not a valid token expression raises ValueError.
  • A single unmatched $ is treated as an error and raises ValueError.

See Also

Github repository

PyPI project

License

This project falls under the BSD 3-Clause License.

History

v0.0.6

  • Added builder >> c.plaintext / c.plaintext(...) support to strip ANSI escape sequences from finalized output.
  • Added new method c.ifcases(cond1, cond2, ...) for multi-branch conditional usage.

v0.0.5

  • Improved inline token parsing diagnostics with clearer ValueError messages for malformed token expressions.
  • Added strict handling for unmatched single $ markers and now raises explicit errors instead of silently accepting invalid input.
  • Fixed token rendering order so inline token fragments are interpreted before default style wrapping in chained color contexts.

v0.0.4

  • Removed unnecessary imports.

v0.0.3

  • Now correctly handles escaped dollar sequences like $$ in inline token parsing.
  • Improved README structure and polished API usage descriptions.

v0.0.2

  • Added inline token grammar support ($TOKEN:text$) to render ANSI styles directly from plain strings.
  • Added .underline and .faint style modifiers, including combinations with foreground/background colors.
  • Improved chaining/conditional flow documentation and examples (iftrue, ifnot, ifelse, <<, @).

v0.0.1

  • Renamed ColorfulString to ColorfulStringBuilder to avoid conflicts.

v0.0.0

  • Initial release.

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

colorfulstring-0.0.6.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

colorfulstring-0.0.6-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file colorfulstring-0.0.6.tar.gz.

File metadata

  • Download URL: colorfulstring-0.0.6.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for colorfulstring-0.0.6.tar.gz
Algorithm Hash digest
SHA256 5938a2f79198ee8aede33b9532eb9c48548194934c6516a9201b9150d88d5918
MD5 0e0d8cd0051c9cdee57a6a6eb84f27c7
BLAKE2b-256 8791ebef2a7a94258254bdd412cf371ef887bc91a7a46c8f81b4020dab5621c8

See more details on using hashes here.

File details

Details for the file colorfulstring-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: colorfulstring-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for colorfulstring-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cf9ef2a3f3b339e51d2d7e2844f9bf252695ba155cf6d757670868f1aacc4b6c
MD5 c9b4f7fd4fbaa47cfcedc48822e5899a
BLAKE2b-256 08a6851eb7780c96a5d45ba981f4cac41367bcdafda8b8c24703e629b9cca6ac

See more details on using hashes here.

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