Show More
@@ -15,6 +15,7 b' import abc' | |||
|
15 | 15 | import ast |
|
16 | 16 | import atexit |
|
17 | 17 | import builtins as builtin_mod |
|
18 | import dis | |
|
18 | 19 | import functools |
|
19 | 20 | import inspect |
|
20 | 21 | import os |
@@ -3141,6 +3142,29 b' class InteractiveShell(SingletonConfigurable):' | |||
|
3141 | 3142 | ast.fix_missing_locations(node) |
|
3142 | 3143 | return node |
|
3143 | 3144 | |
|
3145 | def _update_code_co_name(self, code): | |
|
3146 | """Python 3.10 changed the behaviour so that whenever a code object | |
|
3147 | is assembled in the compile(ast) the co_firstlineno would be == 1. | |
|
3148 | ||
|
3149 | This makes pydevd/debugpy think that all cells invoked are the same | |
|
3150 | since it caches information based on (co_firstlineno, co_name, co_filename). | |
|
3151 | ||
|
3152 | Given that, this function changes the code 'co_name' to be unique | |
|
3153 | based on the first real lineno of the code (which also has a nice | |
|
3154 | side effect of customizing the name so that it's not always <module>). | |
|
3155 | ||
|
3156 | See: https://github.com/ipython/ipykernel/issues/841 | |
|
3157 | """ | |
|
3158 | if not hasattr(code, "replace"): | |
|
3159 | # It may not be available on older versions of Python (only | |
|
3160 | # available for 3.8 onwards). | |
|
3161 | return code | |
|
3162 | try: | |
|
3163 | first_real_line = next(dis.findlinestarts(code))[1] | |
|
3164 | except StopIteration: | |
|
3165 | return code | |
|
3166 | return code.replace(co_name="<cell line: %s>" % (first_real_line,)) | |
|
3167 | ||
|
3144 | 3168 | async def run_ast_nodes( |
|
3145 | 3169 | self, |
|
3146 | 3170 | nodelist: ListType[stmt], |
@@ -3239,6 +3263,7 b' class InteractiveShell(SingletonConfigurable):' | |||
|
3239 | 3263 | else 0x0 |
|
3240 | 3264 | ): |
|
3241 | 3265 | code = compiler(mod, cell_name, mode) |
|
3266 | code = self._update_code_co_name(code) | |
|
3242 | 3267 | asy = compare(code) |
|
3243 | 3268 | if await self.run_code(code, result, async_=asy): |
|
3244 | 3269 | return True |
General Comments 0
You need to be logged in to leave comments.
Login now