contrib/showstack.py
author Pulkit Goyal <7895pulkit@gmail.com>
Sun, 10 Dec 2017 02:52:48 +0530
changeset 35357 576ba8194fa8
parent 28522 f2fe7b199bb4
child 35656 c9eb92fb87b7
permissions -rw-r--r--
py3: handle keyword arguments correctly in hgext/largefiles/ Keys of keyword arguments must be str(unicode) on Python 3. The transformer which we use on Python 3, appends b'' in front of each string literal, so this may lead in KeyError or None return even when the key is present by we are using bytes value and it's stored in unicodes. This patch and all the similar patches handle this by either converting the keys of kwargs to bytes using 'pycompat.byteskwargs()' or adding r'' so that the transformer won't append b''. This next 23 patches follows the above mentioned way to handle keyword arguments. Differential Revision: https://phab.mercurial-scm.org/D1624

# showstack.py - extension to dump a Python stack trace on signal
#
# binds to both SIGQUIT (Ctrl-\) and SIGINFO (Ctrl-T on BSDs)

from __future__ import absolute_import
import signal
import sys
import traceback

def sigshow(*args):
    sys.stderr.write("\n")
    traceback.print_stack(args[1], limit=10, file=sys.stderr)
    sys.stderr.write("----\n")

def extsetup(ui):
    signal.signal(signal.SIGQUIT, sigshow)
    try:
        signal.signal(signal.SIGINFO, sigshow)
    except AttributeError:
        pass