comparison mercurial/lsprof.py @ 40202:56ea22fa55f0

py3: encode str to bytes These fields are str on Python 2 and 3. This module doesn't import any Mercurial modules. So I just did the str -> bytes inline. Differential Revision: https://phab.mercurial-scm.org/D5010
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 12 Oct 2018 18:20:17 +0200
parents b25fbe7e494e
children 2372284d9457
comparison
equal deleted inserted replaced
40201:7df42042636d 40202:56ea22fa55f0
89 89
90 _fn2mod = {} 90 _fn2mod = {}
91 91
92 def label(code): 92 def label(code):
93 if isinstance(code, str): 93 if isinstance(code, str):
94 if sys.version_info.major >= 3:
95 code = code.encode('latin-1')
94 return code 96 return code
95 try: 97 try:
96 mname = _fn2mod[code.co_filename] 98 mname = _fn2mod[code.co_filename]
97 except KeyError: 99 except KeyError:
98 for k, v in list(sys.modules.iteritems()): 100 for k, v in list(sys.modules.iteritems()):
102 continue 104 continue
103 if v.__file__.startswith(code.co_filename): 105 if v.__file__.startswith(code.co_filename):
104 mname = _fn2mod[code.co_filename] = k 106 mname = _fn2mod[code.co_filename] = k
105 break 107 break
106 else: 108 else:
107 mname = _fn2mod[code.co_filename] = '<%s>' % code.co_filename 109 mname = _fn2mod[code.co_filename] = r'<%s>' % code.co_filename
108 110
109 return '%s:%d(%s)' % (mname, code.co_firstlineno, code.co_name) 111 res = r'%s:%d(%s)' % (mname, code.co_firstlineno, code.co_name)
110 112
113 if sys.version_info.major >= 3:
114 res = res.encode('latin-1')
115
116 return res
111 117
112 if __name__ == '__main__': 118 if __name__ == '__main__':
113 import os 119 import os
114 sys.argv = sys.argv[1:] 120 sys.argv = sys.argv[1:]
115 if not sys.argv: 121 if not sys.argv: