Release 1.0.0-rc.2 (August 28. 2021)

  • Fix typo in “reset” register.

Release Note (Breaking Changes)

Release 1.0.0-rc.1 (January 31. 2021)

  • Sty is now fully typed.

  • Deprecated methods .set_style(…) and .get_style(…) were finally removed.

Release Note

Release 1.0.0-rc.0 (January 08. 2021)

Sty version 1.0.0 is now feature complete.

  • I’m going to support Python version >=3.7 indefinitely.

  • Sty will follow semver so there won’t be any breaking changes for version 1.x.x after 1.0.0 was released.

  • This is a pre-release (rc.0). I’ll release 1.0.0 in a couple of month if no major bugs are reported.

Breaking Changes


Sty’s goal is to provide Python with a simple, customizable and performant string styling markup, which is decoupled from color palettes and terminal implementations.

  • Sty supports 3/4bit, 8bit and 24bit (truecolor/RGB) colors as well as effects like bold, italic, underline, etc.

  • Sty should work on most Unix platforms with most terminals. It works with recent Windows terminals. Window legacy terminal (cmd) needs a shim to work.

  • Sty comes with default color palettes and renderers, but you can easily replace/customize them, without touching the markup in your code.

  • Sty allows you to mute/unmute all styles in your codebase.

  • Sty provides high access performance for all styling rules.

  • Sty is fully typed, you should get good editor support for it.

  • Sty has no dependencies.

  • Sty follows semver

  • Sty will support Python >=3.7 for as long as possible.

If you run into compatibility problems with sty, please file an issue!

Code Example

from sty import bg, ef, fg, rs

foo = + "This is red text!" +
bar = + "This has a blue background!" +
baz = ef.italic + "This is italic text" + rs.italic
qux = fg(201) + "This is pink text using 8bit colors" +
qui = fg(255, 10, 10) + "This is red text using 24bit colors." +

# Add custom colors:

from sty import RgbFg, Style = Style(RgbFg(255, 150, 50))

buf = + "Yay, Im orange." +

print(foo, bar, baz, qux, qui, buf, sep="\n")

The code above will print like this in the terminal:

example usage