def changeAttrExpression(thread_id, frame_id, attr, expression): '''Changes some attribute in a given frame. @note: it will not (currently) work if we're not in the topmost frame (that's a python deficiency -- and it appears that there is no way of making it currently work -- will probably need some change to the python internals) ''' frame = findFrame(thread_id, frame_id) if frame is None: return try: expression = expression.replace('@LINE@', '\n') if attr[:7] == "Globals": attr = attr[8:] if attr in frame.f_globals: frame.f_globals[attr] = eval(expression, frame.f_globals, frame.f_locals) else: if pydevd_save_locals.is_save_locals_available(): frame.f_locals[attr] = eval(expression, frame.f_globals, frame.f_locals) pydevd_save_locals.save_locals(frame) return #default way (only works for changing it in the topmost frame) Exec('%s=%s' % (attr, expression), frame.f_globals, frame.f_locals) except Exception: traceback.print_exc()
def changeAttrExpression(thread_id, frame_id, attr, expression): '''Changes some attribute in a given frame. ''' frame = findFrame(thread_id, frame_id) if frame is None: return try: expression = expression.replace('@LINE@', '\n') if isinstance(frame, DjangoTemplateFrame): result = eval(expression, frame.f_globals, frame.f_locals) frame.changeVariable(attr, result) return if attr[:7] == "Globals": attr = attr[8:] if attr in frame.f_globals: frame.f_globals[attr] = eval(expression, frame.f_globals, frame.f_locals) return frame.f_globals[attr] else: if pydevd_save_locals.is_save_locals_available(): frame.f_locals[attr] = eval(expression, frame.f_globals, frame.f_locals) pydevd_save_locals.save_locals(frame) return #default way (only works for changing it in the topmost frame) result = eval(expression, frame.f_globals, frame.f_locals) Exec('%s=%s' % (attr, expression), frame.f_globals, frame.f_locals) return result except Exception: traceback.print_exc()
def changeAttrExpression(thread_id, frame_id, attr, expression): """Changes some attribute in a given frame. """ frame = findFrame(thread_id, frame_id) if frame is None: return try: expression = expression.replace("@LINE@", "\n") # if isinstance(frame, DjangoTemplateFrame): # TODO: implemente for plugins # result = eval(expression, frame.f_globals, frame.f_locals) # frame.changeVariable(attr, result) # return result if attr[:7] == "Globals": attr = attr[8:] if attr in frame.f_globals: frame.f_globals[attr] = eval(expression, frame.f_globals, frame.f_locals) return frame.f_globals[attr] else: if pydevd_save_locals.is_save_locals_available(): frame.f_locals[attr] = eval(expression, frame.f_globals, frame.f_locals) pydevd_save_locals.save_locals(frame) return frame.f_locals[attr] # default way (only works for changing it in the topmost frame) result = eval(expression, frame.f_globals, frame.f_locals) Exec("%s=%s" % (attr, expression), frame.f_globals, frame.f_locals) return result except Exception: traceback.print_exc()
def changeAttrExpression(thread_id, frame_id, attr, expression, dbg): '''Changes some attribute in a given frame. ''' frame = findFrame(thread_id, frame_id) if frame is None: return try: expression = expression.replace('@LINE@', '\n') if dbg.plugin: result = dbg.plugin.change_variable(frame, attr, expression) if result: return result if attr[:7] == "Globals": attr = attr[8:] if attr in frame.f_globals: frame.f_globals[attr] = eval(expression, frame.f_globals, frame.f_locals) return frame.f_globals[attr] else: if pydevd_save_locals.is_save_locals_available(): frame.f_locals[attr] = eval(expression, frame.f_globals, frame.f_locals) pydevd_save_locals.save_locals(frame) return frame.f_locals[attr] #default way (only works for changing it in the topmost frame) result = eval(expression, frame.f_globals, frame.f_locals) Exec('%s=%s' % (attr, expression), frame.f_globals, frame.f_locals) return result except Exception: traceback.print_exc()
def changeAttrExpression(thread_id, frame_id, attr, expression): '''Changes some attribute in a given frame. ''' frame = findFrame(thread_id, frame_id) if frame is None: return try: expression = expression.replace('@LINE@', '\n') # if isinstance(frame, DjangoTemplateFrame): # TODO: implemente for plugins # result = eval(expression, frame.f_globals, frame.f_locals) # frame.changeVariable(attr, result) # return if attr[:7] == "Globals": attr = attr[8:] if attr in frame.f_globals: frame.f_globals[attr] = eval(expression, frame.f_globals, frame.f_locals) return frame.f_globals[attr] else: if pydevd_save_locals.is_save_locals_available(): frame.f_locals[attr] = eval(expression, frame.f_globals, frame.f_locals) pydevd_save_locals.save_locals(frame) return frame.f_locals[attr] #default way (only works for changing it in the topmost frame) result = eval(expression, frame.f_globals, frame.f_locals) Exec('%s=%s' % (attr, expression), frame.f_globals, frame.f_locals) return result except Exception: traceback.print_exc()