--- Begin Message ---
Package: python-q
Version: 2.6-1.2
Severity: normal
Tags: patch pending
Dear maintainer,
I've prepared an NMU for python-q (versioned as 2.7-0.1) and
uploaded it to DELAYED/10. Please feel free to tell me if I
should cancel it.
Regards.
diffstat for python-q-2.6 python-q-2.7
.gitignore | 36 --------------------------------
.travis.yml | 11 ---------
Makefile | 36 --------------------------------
PKG-INFO | 21 ++++++++++++++++++
README.md | 45 ++++++++++++++++++++++++++++------------
debian/changelog | 15 +++++++++++++
debian/compat | 1
debian/control | 15 +++++--------
debian/copyright | 2 -
debian/rules | 2 -
debian/watch | 6 ++---
q.egg-info/PKG-INFO | 21 ++++++++++++++++++
q.egg-info/SOURCES.txt | 10 ++++++++
q.egg-info/dependency_links.txt | 1
q.egg-info/top_level.txt | 1
q.py | 41 ++++++++++++++++++++++++++++++------
setup.cfg | 8 ++++++-
setup.py | 29 +++++++++++++++++--------
18 files changed, 173 insertions(+), 128 deletions(-)
diff -Nru python-q-2.6/debian/changelog python-q-2.7/debian/changelog
--- python-q-2.6/debian/changelog 2019-10-05 21:30:53.000000000 -0400
+++ python-q-2.7/debian/changelog 2026-01-25 19:11:58.000000000 -0500
@@ -1,3 +1,18 @@
+python-q (2.7-0.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * New upstream release.
+ * debian/watch: Update to version 5 and monitor pypi release.
+ * debian/control: Bump Standards-Version to 4.7.3.
+ * debian/control: Update Vcs-* fields.
+
+ [ Ondřej Nový ]
+ * d/control: Remove ancient X-Python-Version field
+ * d/control: Remove ancient X-Python3-Version field
+ * d/copyright: Use https protocol in Format field
+
+ -- Boyuan Yang <[email protected]> Sun, 25 Jan 2026 19:11:58 -0500
+
python-q (2.6-1.2) unstable; urgency=medium
* Non-maintainer upload.
diff -Nru python-q-2.6/debian/compat python-q-2.7/debian/compat
--- python-q-2.6/debian/compat 2016-01-03 10:39:48.000000000 -0500
+++ python-q-2.7/debian/compat 1969-12-31 19:00:00.000000000 -0500
@@ -1 +0,0 @@
-9
diff -Nru python-q-2.6/debian/control python-q-2.7/debian/control
--- python-q-2.6/debian/control 2019-10-05 21:30:31.000000000 -0400
+++ python-q-2.7/debian/control 2026-01-25 19:08:23.000000000 -0500
@@ -1,18 +1,15 @@
Source: python-q
Maintainer: Federico Ceratto <[email protected]>
Section: python
-Priority: optional
-Build-Depends: debhelper (>= 9~)
-Build-Depends-Indep:
- dh-python,
+Build-Depends:
+ debhelper-compat (= 13),
+ dh-sequence-python3,
python3-all,
python3-setuptools,
-Standards-Version: 3.9.6
-X-Python-Version: >= 2.7
-X-Python3-Version: >= 3.4
+Standards-Version: 4.7.3
Homepage: http://github.com/zestyping/q
-Vcs-Git: git://anonscm.debian.org/collab-maint/python-q.git
-Vcs-Browser: https://anonscm.debian.org/gitweb/?p=collab-maint/python-q.git
+Vcs-Git: https://salsa.debian.org/debian/python-q.git
+Vcs-Browser: https://salsa.debian.org/debian/python-q
Package: python3-q
Architecture: all
diff -Nru python-q-2.6/debian/copyright python-q-2.7/debian/copyright
--- python-q-2.6/debian/copyright 2016-01-03 10:39:48.000000000 -0500
+++ python-q-2.7/debian/copyright 2026-01-25 19:06:53.000000000 -0500
@@ -1,4 +1,4 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/zestyping/q
Upstream-Name: q
diff -Nru python-q-2.6/debian/rules python-q-2.7/debian/rules
--- python-q-2.6/debian/rules 2019-10-05 21:30:52.000000000 -0400
+++ python-q-2.7/debian/rules 2026-01-25 19:08:36.000000000 -0500
@@ -3,7 +3,7 @@
export DH_VERBOSE=1
export PYBUILD_NAME=q
%:
- dh $@ --with python3 --buildsystem=pybuild
+ dh $@ --buildsystem=pybuild
override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
diff -Nru python-q-2.6/debian/watch python-q-2.7/debian/watch
--- python-q-2.6/debian/watch 2016-01-03 10:39:48.000000000 -0500
+++ python-q-2.7/debian/watch 2026-01-25 19:09:45.000000000 -0500
@@ -1,4 +1,4 @@
-version=3
+Version: 5
-opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/python-q-$1\.tar\.gz/ \
- https://github.com/zestyping/q/tags .*/v?(\d\S*)\.tar\.gz
+Template: Pypi
+Dist: q
diff -Nru python-q-2.6/.gitignore python-q-2.7/.gitignore
--- python-q-2.6/.gitignore 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,36 +0,0 @@
-*.py[cod]
-
-# C extensions
-*.so
-
-# Packages
-*.egg
-*.egg-info
-dist
-build
-eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
-lib
-lib64
-MANIFEST
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-nosetests.xml
-
-# Translations
-*.mo
-
-# Mr Developer
-.mr.developer.cfg
-.project
-.pydevproject
diff -Nru python-q-2.6/Makefile python-q-2.7/Makefile
--- python-q-2.6/Makefile 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/Makefile 1969-12-31 19:00:00.000000000 -0500
@@ -1,36 +0,0 @@
-TESTS = $(wildcard test/test_*.py)
-
-.PHONY: deps pep8 test build push clean
-
-all: pep8 test build
-
-deps:
- # q doesn't have any *runtime* dependencies.
- # These dependencies are only needed for development.
- pip install pep8
- pip install wheel
-
-pep8:
- @echo === Running pep8 on files
- pep8 $(wildcard *.py) $(wildcard test/*.py)
-
-test:
- @echo
- @ $(foreach TEST,$(TESTS), \
- ( \
- echo === Running test: $(TEST); \
- python $(TEST) || exit 1 \
- ))
-
-build:
- python setup.py sdist
- python setup.py bdist_wheel
-
-push: build
- python setup.py sdist upload
- python setup.py bdist_wheel upload
-
-clean:
- rm -rf build dist q.egg-info
- find -name *.pyc -delete
- @- git status
diff -Nru python-q-2.6/PKG-INFO python-q-2.7/PKG-INFO
--- python-q-2.6/PKG-INFO 1969-12-31 19:00:00.000000000 -0500
+++ python-q-2.7/PKG-INFO 2022-07-23 16:03:02.961571200 -0400
@@ -0,0 +1,21 @@
+Metadata-Version: 1.1
+Name: q
+Version: 2.7
+Summary: Quick-and-dirty debugging output for tired programmers
+Home-page: http://github.com/zestyping/q
+Author: Ka-Ping Yee
+Author-email: [email protected]
+License: Apache License 2.0
+Description: UNKNOWN
+Keywords: debugging
+Platform: UNKNOWN
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: Implementation :: Jython
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
diff -Nru python-q-2.6/q.egg-info/dependency_links.txt
python-q-2.7/q.egg-info/dependency_links.txt
--- python-q-2.6/q.egg-info/dependency_links.txt 1969-12-31
19:00:00.000000000 -0500
+++ python-q-2.7/q.egg-info/dependency_links.txt 2022-07-23
16:03:02.000000000 -0400
@@ -0,0 +1 @@
+
diff -Nru python-q-2.6/q.egg-info/PKG-INFO python-q-2.7/q.egg-info/PKG-INFO
--- python-q-2.6/q.egg-info/PKG-INFO 1969-12-31 19:00:00.000000000 -0500
+++ python-q-2.7/q.egg-info/PKG-INFO 2022-07-23 16:03:02.000000000 -0400
@@ -0,0 +1,21 @@
+Metadata-Version: 1.1
+Name: q
+Version: 2.7
+Summary: Quick-and-dirty debugging output for tired programmers
+Home-page: http://github.com/zestyping/q
+Author: Ka-Ping Yee
+Author-email: [email protected]
+License: Apache License 2.0
+Description: UNKNOWN
+Keywords: debugging
+Platform: UNKNOWN
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: Implementation :: Jython
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
diff -Nru python-q-2.6/q.egg-info/SOURCES.txt
python-q-2.7/q.egg-info/SOURCES.txt
--- python-q-2.6/q.egg-info/SOURCES.txt 1969-12-31 19:00:00.000000000 -0500
+++ python-q-2.7/q.egg-info/SOURCES.txt 2022-07-23 16:03:02.000000000 -0400
@@ -0,0 +1,10 @@
+MANIFEST.in
+README.md
+q.py
+setup.cfg
+setup.py
+q.egg-info/PKG-INFO
+q.egg-info/SOURCES.txt
+q.egg-info/dependency_links.txt
+q.egg-info/top_level.txt
+test/test_basic.py
\ No newline at end of file
diff -Nru python-q-2.6/q.egg-info/top_level.txt
python-q-2.7/q.egg-info/top_level.txt
--- python-q-2.6/q.egg-info/top_level.txt 1969-12-31 19:00:00.000000000
-0500
+++ python-q-2.7/q.egg-info/top_level.txt 2022-07-23 16:03:02.000000000
-0400
@@ -0,0 +1 @@
+q
diff -Nru python-q-2.6/q.py python-q-2.7/q.py
--- python-q-2.6/q.py 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/q.py 2022-07-23 16:01:58.000000000 -0400
@@ -79,15 +79,40 @@
import re
import time
import functools
+ import tempfile
# The debugging log will go to this file; temporary files will also have
# this path as a prefix, followed by a random number.
- OUTPUT_PATH = os.path.join(
- os.environ.get('TMPDIR') or os.environ.get('TEMP') or '/tmp',
- 'q')
+ OUTPUT_PATH = os.path.join(tempfile.gettempdir(), 'q')
NORMAL, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN = ESCAPE_SEQUENCES
TEXT_REPR = pydoc.TextRepr()
+ q_max_length = 1_000_000
+
+ @property
+ def short(self):
+ __class__.TEXT_REPR = __class__.pydoc.TextRepr()
+
+ @property
+ def long(self):
+ __class__.TEXT_REPR = __class__.pydoc.TextRepr()
+ __class__.TEXT_REPR.maxarray = __class__.q_max_length
+ __class__.TEXT_REPR.maxdeque = __class__.q_max_length
+ __class__.TEXT_REPR.maxdict = __class__.q_max_length
+ __class__.TEXT_REPR.maxfrozenset = __class__.q_max_length
+ __class__.TEXT_REPR.maxlevel = __class__.q_max_length
+ __class__.TEXT_REPR.maxlist = __class__.q_max_length
+ __class__.TEXT_REPR.maxlong = __class__.q_max_length
+ __class__.TEXT_REPR.maxother = __class__.q_max_length
+ __class__.TEXT_REPR.maxset = __class__.q_max_length
+ __class__.TEXT_REPR.maxstring = __class__.q_max_length
+ __class__.TEXT_REPR.maxtuple = __class__.q_max_length
+
+ @long.setter
+ def long(self, value):
+ __class__.q_max_length = value
+ self.long
+
# For portably converting strings between python2 and python3
BASESTRING_TYPES = BASESTRING_TYPES
@@ -156,7 +181,7 @@
"""Abstract away indentation and line-wrapping."""
def __init__(self, indent=0, width=80 - 7):
- self.chunks = [' '*indent]
+ self.chunks = [' ' * indent]
self.indent = indent
self.column = indent
self.width = width
@@ -171,7 +196,7 @@
size = sum([len(x) for x in items if not x.startswith('\x1b')])
if (wrap and self.column > self.indent and
self.column + len(sep) + size > self.width):
- self.chunks.append(sep.rstrip() + '\n' + ' '*self.indent)
+ self.chunks.append(sep.rstrip() + '\n' + ' ' * self.indent)
self.column = self.indent
else:
self.chunks.append(sep)
@@ -199,7 +224,7 @@
result = self.TEXT_REPR.repr(value)
if isinstance(value, self.BASESTRING_TYPES) and len(value) > 80:
# If the string is big, save it to a file for later examination.
- if isinstance(value, self.TEXT_TYPES):
+ if isinstance(value, self.TEXT_TYPES):
value = value.encode('utf-8')
path = self.OUTPUT_PATH + '%08d.txt' % self.random.randrange(1e8)
self.FileWriter(path).write('w', value)
@@ -370,4 +395,6 @@
# Install the Q() object in sys.modules so that "import q" gives a callable q.
-sys.modules['q'] = Q()
+q = Q()
+q.long
+sys.modules['q'] = q
diff -Nru python-q-2.6/README.md python-q-2.7/README.md
--- python-q-2.6/README.md 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/README.md 2022-07-23 16:01:58.000000000 -0400
@@ -1,42 +1,61 @@
-q
-=
+# q
-[](https://travis-ci.org/zestyping/q)
+[](https://www.codeshelter.co/)
Quick and dirty debugging output for tired programmers.
-Install q with "easy\_install -U q" or "pip install -U q".
+For a short demo, watch the [Lightning
Talk](http://pyvideo.org/video/1858/sunday-evening-lightning-talks#t=25m15s)
from PyCon 2013.
-All output goes to /tmp/q, which you can watch with this shell command::
+Install q with `pip install -U q`.
- tail -f /tmp/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:
-If TMPDIR is set, the output goes to $TMPDIR/q.
+ tail -f /tmp/q
-To print the value of foo, insert this into your program::
+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, insert
-"q()", "q/", or "q|". For example, given this statement::
+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::
+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's arguments and return value, insert this above the def::
+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()::
+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:
+
+```python
+q.long # Truncates output to 1,000,000
+q.long = 2000000 # Truncates output to 2,000,000
+```
+# Other projects inspired by this one
+
+* [`q` for golang](https://github.com/y0ssar1an/q)
+* [`qq` for elixir](https://github.com/mandarvaze/q)
+* [`ic` for Python](https://github.com/gruns/icecream) - Similar library for
Python, inspired by `q`.
+
The following
[Lightning
Talk](http://pyvideo.org/video/1858/sunday-evening-lightning-talks#t=25m15s)
shows how powerful using q can be.
diff -Nru python-q-2.6/setup.cfg python-q-2.7/setup.cfg
--- python-q-2.6/setup.cfg 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/setup.cfg 2022-07-23 16:03:02.961571200 -0400
@@ -1,4 +1,10 @@
[metadata]
description-file = README.md
+
[bdist_wheel]
-universal=1
+universal = 1
+
+[egg_info]
+tag_build =
+tag_date = 0
+
diff -Nru python-q-2.6/setup.py python-q-2.7/setup.py
--- python-q-2.6/setup.py 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/setup.py 2022-07-23 16:02:10.000000000 -0400
@@ -1,10 +1,21 @@
from setuptools import setup
-setup(name='q', version='2.6', py_modules=['q'],
- description='Quick-and-dirty debugging output for tired programmers',
- author='Ka-Ping Yee', author_email='[email protected]',
- license='Apache License 2.0',
- url='http://github.com/zestyping/q', classifiers=[
- 'Programming Language :: Python',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: Apache Software License'
- ])
+setup(
+ name='q', version='2.7', py_modules=['q'],
+ description='Quick-and-dirty debugging output for tired programmers',
+ author='Ka-Ping Yee', author_email='[email protected]',
+ license='Apache License 2.0',
+ classifiers=[
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Programming Language :: Python :: Implementation :: Jython",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: Apache Software License",
+ ],
+ keywords=['debugging'],
+ url='http://github.com/zestyping/q'
+)
diff -Nru python-q-2.6/.travis.yml python-q-2.7/.travis.yml
--- python-q-2.6/.travis.yml 2015-06-22 03:23:57.000000000 -0400
+++ python-q-2.7/.travis.yml 1969-12-31 19:00:00.000000000 -0500
@@ -1,11 +0,0 @@
-language: python
-python:
- - "2.6"
- - "2.7"
- - "3.2"
- - "3.3"
- - "3.4"
- - "nightly"
- - "pypy"
-install: make deps
-script: make
--- End Message ---