Skip to main content

Seriously the cats ass. Seriously.

Project description


Seriously the cats ass. Seriously.

Now with Colors!

WTF is it?

CatsAss is the cats ass for sneaking cats into your daily workflow. the_cats_ass() introspects the function you call it from and returns the local variables PrettyPrinted with a Cat! Not only is the data PrettyPrinted, but you can also add syntax highlighting or create your own custom KittyPrinter classes!

So instead of this kinda stuff..

def cat_tail_shape_determiner_function(n):
    a, b = 0, 1
    rv = [a]
    while a < n:
       print('a:', a)
       print('b:', b)
       print('rv:', rv)
       a, b = a + b, b
    return rv

Do this.

from catsass import the_cats_ass

def cat_tail_shape_determiner_function(n):
    a, b = 0, 1
    rv = [a]
    while a < n:
       print( the_cats_ass() )
       a, b = a + b, b
    return rv

It’s the cats ass!!


Requires: pygments and crayons packages

pip install pygments crayons

Just swap out the_cats_ass() with the color cat of your choice!

from catsass import tuxedo_cat

def TuxedoCat(n):
    its = [
        "The       ",
        " cats     ",
        "   ass..  ",
   print( tuxedo_cat() )  # See list below for more cats

Available colored cats - calico_cat, tuxedo_cat

  • Minimum terminal width of 80 characters recommended
  • MIT licensed


Requires python 3.6

To install CatsAss, run this command in your terminal:

$ pip install CatsAss

To enable Color mode, install pygments and crayons as well:

$ pip install pygments crayons

If you don’t have pip installed, this Python installation guide can guide you through the process.


The catsass.PrettyKitty class can be used directly to produce your own color combinations or custom titles. In the next release you will be able to add your own ascii-art and coloring schemes yourself, for now we can only modify arguments. Here’s what’s available..

  • colors: set True to activate colorz
  • coat: ‘calico_colorz’ or ‘tuxedo_colors’
  • logo_colorz: ‘logo_colorz’ or ‘dark_logo_colorz’
  • title: Can be set to any string. defaults to “Meowed with love by Duroktar, 2017”
  • ctx: when used with the_cats_ass this is filled in with the name of the calling function. But any hashable object works.
  • data: the actual data you wish to be pretty-printed.


from catsass import PrettyKitty

data = {*zip('abcde', range(5))}

print(PrettyKitty("Magic!", data, colors=True, coat='tuxedo_colorz',
      logo_colorz='dark_logo_colorz', title="Dude, where's my car?"))


CatsAss works by inspecting the stack frames, which isn’t always the right context. In this case it isn’t really the cats ass anymore.. Luckily you can poke the cat in different places until you get the context you want.

from catsass import the_cats_ass, comb, Cats

def long_cat_tail():
    def cat_tail_shape_determiner_function(n):
        a, b = 0, 1
        rv = [a]
        while a < n:
           print( poke_the_cat(Cats.TAIL, catnip=True) )
           a, b = a + b, b
        return rv
    return cat_tail_shape_determiner_function(100)


Deep personal ones, yes.


Duroktar -

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

CatsAss-1.1.3.tar.gz (9.1 kB view hashes)

Uploaded source

Built Distribution

CatsAss-1.1.3-py36-none-any.whl (11.7 kB view hashes)

Uploaded py36

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page