Mercurial > hg
view contrib/debugshell.py @ 41955:9661a9c0695e
wix: package missing .dll and .pyd files
dist.wxs is currently missing some .pyd and .dll files which are
picked up and staged by py2exe. This means that the WiX installer
is missing some Python extension modules and their dependencies which
are referenced by Mercurial or a Python package distributed with
it.
This commit adds the missing files to the WiX installer.
Differential Revision: https://phab.mercurial-scm.org/D6137
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 14 Mar 2019 18:25:23 -0700 |
parents | b10bbbe995eb |
children | 2372284d9457 |
line wrap: on
line source
# debugshell extension """a python shell with repo, changelog & manifest objects""" from __future__ import absolute_import import code import mercurial import sys from mercurial import ( demandimport, pycompat, registrar, ) cmdtable = {} command = registrar.command(cmdtable) def pdb(ui, repo, msg, **opts): objects = { 'mercurial': mercurial, 'repo': repo, 'cl': repo.changelog, 'mf': repo.manifestlog, } code.interact(msg, local=objects) def ipdb(ui, repo, msg, **opts): import IPython cl = repo.changelog mf = repo.manifestlog cl, mf # use variables to appease pyflakes IPython.embed() @command(b'debugshell|dbsh', []) def debugshell(ui, repo, **opts): bannermsg = ("loaded repo : %s\n" "using source: %s" % (pycompat.sysstr(repo.root), mercurial.__path__[0])) pdbmap = { 'pdb' : 'code', 'ipdb' : 'IPython' } debugger = ui.config(b"ui", b"debugger") if not debugger: debugger = 'pdb' else: debugger = pycompat.sysstr(debugger) # if IPython doesn't exist, fallback to code.interact try: with demandimport.deactivated(): __import__(pdbmap[debugger]) except ImportError: ui.warn((b"%s debugger specified but %s module was not found\n") % (debugger, pdbmap[debugger])) debugger = b'pdb' getattr(sys.modules[__name__], debugger)(ui, repo, bannermsg, **opts)