Skip to content

zestyping/q

Folders and files

NameName
Last commit message
Last commit date
Nov 23, 2023
May 10, 2023
Oct 1, 2019
Jan 13, 2021
Jan 2, 2016
Apr 11, 2013
Aug 16, 2022
Mar 23, 2022
May 24, 2023
Dec 2, 2014
Dec 18, 2023

Repository files navigation

q

Code Shelter

Quick and dirty debugging output for tired programmers.

For a short demo, watch the Lightning Talk from PyCon 2013.

Install q with pip install -U q.

All output goes to /tmp/q (or on Windows, to $HOME/tmp/q). You can watch the output with this shell command while your program is running:

tail -f /tmp/q

To print the value of foo, insert this into your program:

import q; q(foo)

To print the value of something in the middle of an expression, you can wrap it with q(). You can also insert q/ or q| into the expression; q/ binds tightly whereas q| binds loosely. For example, given this statement:

file.write(prefix + (sep or '').join(items))

you can print out various values without using any temporary variables:

file.write(prefix + q(sep or '').join(items))  # prints (sep or '')
file.write(q/prefix + (sep or '').join(items))  # prints prefix
file.write(q|prefix + (sep or '').join(items))  # prints the arg to write

To trace a function (showing its arguments, return value, and running time), insert this above the def:

import q
@q

To start an interactive console at any point in your code, call q.d():

import q; q.d()

By default the output of q is not truncated, but it can be truncated by calling:

q.short

Truncation can be reversed by:

q.long # Truncates output to 1,000,000
q.long = 2000000 # Truncates output to 2,000,000

Other projects inspired by this one

The following Lightning Talk shows how powerful using q can be.