Mercurial > public > mercurial-scm > hg
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: |