Mercurial > hg
view contrib/debugshell.py @ 42175:cd1bede340b0 stable
setup: tweak error message for Python 3
We now have beta support for Python 3. In my opinion, it isn't
yet stable enough to allow `pip install Mercurial` to work with
Python 3 out of the box: we don't want people accidentally using
Mercurial with Python 3 just yet.
But I do think we should be more friendly about informing people
of their options.
This commit tweaks the error message that users see when running
setup.py with Python 3. We instruct them about the current level
of Python 3 support, point them at the wiki for more info, and
give them instructions on how to bypass the check.
As part of this, I also changed which version value is printed,
as we were printing a named tuple before.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 21 Apr 2019 08:57:01 -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)