render.py (2381B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\werkzeug\debug\render.py 2 import pprint 3 from os.path import dirname, join 4 from werkzeug.templates import Template 5 6 def get_template(name): 7 return Template.from_file(join(dirname(__file__), 'shared', name), unicode_mode=False, errors='ignore') 8 9 10 def load_resource(res): 11 try: 12 f = file(join(dirname(__file__), 'shared', res)) 13 except IOError: 14 return '' 15 16 try: 17 return f.read() 18 finally: 19 f.close() 20 21 22 t_body = get_template('body.tmpl') 23 t_codetable = get_template('codetable.tmpl') 24 t_vartable = get_template('vartable.tmpl') 25 26 def code_table(frame): 27 from werkzeug.debug.util import Namespace 28 lines = [] 29 lineno = frame['context_lineno'] 30 if lineno is not None: 31 lineno += 1 32 for l in frame['pre_context']: 33 lines.append(Namespace(mode='pre', lineno=lineno, code=l)) 34 lineno += 1 35 36 lines.append(Namespace(mode='cur', lineno=lineno, code=frame['context_line'])) 37 lineno += 1 38 for l in frame['post_context']: 39 lines.append(Namespace(mode='post', lineno=lineno, code=l)) 40 lineno += 1 41 42 else: 43 lines.append(Namespace(mode='cur', lineno=1, code='Sourcecode not available')) 44 return t_codetable.render(lines=lines) 45 46 47 def var_table(var): 48 49 def safe_pformat(x): 50 try: 51 lines = pprint.pformat(x).splitlines() 52 except: 53 return '?' 54 55 tmp = [] 56 for line in lines: 57 if len(line) > 79: 58 line = line[:79] + '...' 59 tmp.append(line) 60 61 return '\n'.join(tmp) 62 63 if isinstance(var, dict) or hasattr(var, 'items'): 64 value = var.items() 65 if not value: 66 typ = 'empty' 67 else: 68 typ = 'dict' 69 value.sort() 70 value = [ (repr(key), safe_pformat(val)) for key, val in value ] 71 elif isinstance(var, list): 72 if not var: 73 typ = 'empty' 74 else: 75 typ = 'list' 76 value = [ safe_pformat(item) for item in var ] 77 else: 78 typ = 'simple' 79 value = repr(var) 80 return t_vartable.render(type=typ, value=value) 81 82 83 def debug_page(context): 84 tc = context.to_dict() 85 tc['var_table'] = var_table 86 tc['code_table'] = code_table 87 return t_body.render(tc)