1# debugthg.py - debugging library for TortoiseHg shell extensions 2# 3# Copyright 2008 Steve Borho <steve@borho.org> 4# 5# This software may be used and distributed according to the terms of the 6# GNU General Public License version 2, incorporated herein by reference. 7 8from __future__ import print_function 9 10debugging = '' 11try: 12 from mercurial.windows import winreg 13 try: 14 hkey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 15 r"Software\TortoiseHg", 0, 16 winreg.KEY_ALL_ACCESS) 17 val = winreg.QueryValueEx(hkey, 'OverlayDebug')[0] 18 if val in ('1', 'True'): 19 debugging += 'O' 20 val = winreg.QueryValueEx(hkey, 'ContextMenuDebug')[0] 21 if val in ('1', 'True'): 22 debugging += 'M' 23 if debugging: 24 import win32traceutil # pytype: disable=import-error 25 except EnvironmentError: 26 pass 27except (AttributeError, ImportError): # AttributeError for winreg.* on Unix 28 import os 29 debugging = os.environ.get("DEBUG_THG", "") 30 if debugging.lower() in ("1", "true"): 31 debugging = True 32 33def debugf_No(str, args=None, level=''): 34 pass 35 36if debugging: 37 def debug(level=''): 38 return debugging == True or level in debugging 39 def debugf(str, args=None, level=''): 40 if not debug(level): 41 return 42 if args: 43 print(str % args) 44 elif debug('e') and isinstance(str, BaseException): 45 import traceback 46 traceback.print_exc() 47 else: 48 print(str) 49else: 50 def debug(level=''): 51 return False 52 debugf = debugf_No 53