Show More
@@ -83,6 +83,7 b' Inheritance diagram:' | |||
|
83 | 83 | from __future__ import unicode_literals |
|
84 | 84 | from __future__ import print_function |
|
85 | 85 | |
|
86 | from contextlib import contextmanager | |
|
86 | 87 | import inspect |
|
87 | 88 | import keyword |
|
88 | 89 | import linecache |
@@ -220,8 +221,23 b' def findsource(object):' | |||
|
220 | 221 | return lines, lnum |
|
221 | 222 | raise IOError('could not find code object') |
|
222 | 223 | |
|
223 |
# Monkeypatch inspect to apply our bugfix. |
|
|
224 | inspect.findsource = findsource | |
|
224 | # Monkeypatch inspect to apply our bugfix. | |
|
225 | @contextmanager | |
|
226 | def patch_inspect(): | |
|
227 | """context manager for monkeypatching inspect.findsource""" | |
|
228 | save_findsource = inspect.findsource | |
|
229 | inspect.findsource = findsource | |
|
230 | try: | |
|
231 | yield | |
|
232 | finally: | |
|
233 | inspect.findsource = save_findsource | |
|
234 | ||
|
235 | def with_patch_inspect(f): | |
|
236 | """decorator for monkeypatching inspect.findsource""" | |
|
237 | def wrapped(*args, **kwargs): | |
|
238 | with patch_inspect(): | |
|
239 | return f(*args, **kwargs) | |
|
240 | return wrapped | |
|
225 | 241 | |
|
226 | 242 | def fix_frame_records_filenames(records): |
|
227 | 243 | """Try to fix the filenames in each record from inspect.getinnerframes(). |
@@ -243,6 +259,7 b' def fix_frame_records_filenames(records):' | |||
|
243 | 259 | return fixed_records |
|
244 | 260 | |
|
245 | 261 | |
|
262 | @with_patch_inspect | |
|
246 | 263 | def _fixed_getinnerframes(etb, context=1,tb_offset=0): |
|
247 | 264 | LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5 |
|
248 | 265 |
General Comments 0
You need to be logged in to leave comments.
Login now