Thu, 10 Mar 2011 10:27:57 +0100
Fixed an issue in the Python debuggers related to the usage of the locals dictionary.
--- a/APIs/Python3/eric5.api Fri Mar 04 20:03:47 2011 +0100 +++ b/APIs/Python3/eric5.api Thu Mar 10 10:27:57 2011 +0100 @@ -151,6 +151,7 @@ eric5.DebugClients.Python.DebugBase.DebugBase.dispatch_return?4(frame, arg) eric5.DebugClients.Python.DebugBase.DebugBase.fix_frame_filename?4(frame) eric5.DebugClients.Python.DebugBase.DebugBase.getCurrentFrame?4() +eric5.DebugClients.Python.DebugBase.DebugBase.getCurrentFrameLocals?4() eric5.DebugClients.Python.DebugBase.DebugBase.getEvent?4() eric5.DebugClients.Python.DebugBase.DebugBase.getStack?4() eric5.DebugClients.Python.DebugBase.DebugBase.get_break?4(filename, lineno) @@ -355,6 +356,7 @@ eric5.DebugClients.Python3.DebugBase.DebugBase.dispatch_return?4(frame, arg) eric5.DebugClients.Python3.DebugBase.DebugBase.fix_frame_filename?4(frame) eric5.DebugClients.Python3.DebugBase.DebugBase.getCurrentFrame?4() +eric5.DebugClients.Python3.DebugBase.DebugBase.getCurrentFrameLocals?4() eric5.DebugClients.Python3.DebugBase.DebugBase.getEvent?4() eric5.DebugClients.Python3.DebugBase.DebugBase.getStack?4() eric5.DebugClients.Python3.DebugBase.DebugBase.get_break?4(filename, lineno)
--- a/DebugClients/Python/DebugBase.py Fri Mar 04 20:03:47 2011 +0100 +++ b/DebugClients/Python/DebugBase.py Thu Mar 10 10:27:57 2011 +0100 @@ -62,6 +62,7 @@ # current frame we are at self.currentFrame = None + self.currentFrameLocals = None # frame that we are stepping in, can be different than currentFrame self.stepFrame = None @@ -85,6 +86,14 @@ """ return self.currentFrame + def getCurrentFrameLocals(self): + """ + Public method to return the locals dictionary of the current frame. + + @return locals dictionary of the current frame + """ + return self.currentFrameLocals + def step(self, traceMode): """ Public method to perform a step operation in this thread. @@ -527,6 +536,8 @@ self._dbgClient.mainFrame = frame self.currentFrame = frame + self.currentFrameLocals = frame.f_locals + # remember the locals because it is reinitialized when accessed fr = frame stack = []
--- a/DebugClients/Python/DebugClientBase.py Fri Mar 04 20:03:47 2011 +0100 +++ b/DebugClients/Python/DebugClientBase.py Thu Mar 10 10:27:57 2011 +0100 @@ -695,7 +695,7 @@ if cmd == RequestEval: try: value = eval(arg, self.currentThread.getCurrentFrame().f_globals, - self.currentThread.getCurrentFrame().f_locals) + self.currentThread.getCurrentFrameLocals()) except: # Report the exception and the traceback try: @@ -725,7 +725,7 @@ if cmd == RequestExec: _globals = self.currentThread.getCurrentFrame().f_globals - _locals = self.currentThread.getCurrentFrame().f_locals + _locals = self.currentThread.getCurrentFrameLocals() try: code = compile(arg + '\n', '<stdin>', 'single') exec code in _globals, _locals @@ -888,7 +888,7 @@ cf = cf.f_back frmnr -= 1 _globals = cf.f_globals - _locals = cf.f_locals + _locals = self.currentThread.getCurrentFrameLocals() # reset sys.stdout to our redirector (unconditionally) if _globals.has_key("sys"): __stdout = _globals["sys"].stdout
--- a/DebugClients/Python3/DebugBase.py Fri Mar 04 20:03:47 2011 +0100 +++ b/DebugClients/Python3/DebugBase.py Thu Mar 10 10:27:57 2011 +0100 @@ -61,6 +61,7 @@ # current frame we are at self.currentFrame = None + self.currentFrameLocals = None # frame that we are stepping in, can be different than currentFrame self.stepFrame = None @@ -84,6 +85,14 @@ """ return self.currentFrame + def getCurrentFrameLocals(self): + """ + Public method to return the locals dictionary of the current frame. + + @return locals dictionary of the current frame + """ + return self.currentFrameLocals + def step(self, traceMode): """ Public method to perform a step operation in this thread. @@ -536,6 +545,8 @@ self._dbgClient.mainFrame = frame self.currentFrame = frame + self.currentFrameLocals = frame.f_locals + # remember the locals because it is reinitialized when accessed fr = frame stack = []
--- a/DebugClients/Python3/DebugClientBase.py Fri Mar 04 20:03:47 2011 +0100 +++ b/DebugClients/Python3/DebugClientBase.py Thu Mar 10 10:27:57 2011 +0100 @@ -691,7 +691,7 @@ if cmd == RequestEval: try: value = eval(arg, self.currentThread.getCurrentFrame().f_globals, - self.currentThread.getCurrentFrame().f_locals) + self.currentThread.getCurrentFrameLocals()) except: # Report the exception and the traceback try: @@ -722,7 +722,7 @@ if cmd == RequestExec: _globals = self.currentThread.getCurrentFrame().f_globals - _locals = self.currentThread.getCurrentFrame().f_locals + _locals = self.currentThread.getCurrentFrameLocals() try: code = compile(arg + '\n', '<stdin>', 'single') exec(code, _globals, _locals) @@ -887,7 +887,7 @@ cf = cf.f_back frmnr -= 1 _globals = cf.f_globals - _locals = cf.f_locals + _locals = self.currentThread.getCurrentFrameLocals() # reset sys.stdout to our redirector (unconditionally) if "sys" in _globals: __stdout = _globals["sys"].stdout
--- a/Documentation/Help/source.qhp Fri Mar 04 20:03:47 2011 +0100 +++ b/Documentation/Help/source.qhp Thu Mar 10 10:27:57 2011 +0100 @@ -6492,6 +6492,7 @@ <keyword name="DebugBase.dispatch_return" id="DebugBase.dispatch_return" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.dispatch_return" /> <keyword name="DebugBase.fix_frame_filename" id="DebugBase.fix_frame_filename" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.fix_frame_filename" /> <keyword name="DebugBase.getCurrentFrame" id="DebugBase.getCurrentFrame" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.getCurrentFrame" /> + <keyword name="DebugBase.getCurrentFrameLocals" id="DebugBase.getCurrentFrameLocals" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.getCurrentFrameLocals" /> <keyword name="DebugBase.getEvent" id="DebugBase.getEvent" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.getEvent" /> <keyword name="DebugBase.getStack" id="DebugBase.getStack" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.getStack" /> <keyword name="DebugBase.get_break" id="DebugBase.get_break" ref="eric5.DebugClients.Python.DebugBase.html#DebugBase.get_break" /> @@ -6660,6 +6661,7 @@ <keyword name="DebugBase.dispatch_return" id="DebugBase.dispatch_return" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.dispatch_return" /> <keyword name="DebugBase.fix_frame_filename" id="DebugBase.fix_frame_filename" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.fix_frame_filename" /> <keyword name="DebugBase.getCurrentFrame" id="DebugBase.getCurrentFrame" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.getCurrentFrame" /> + <keyword name="DebugBase.getCurrentFrameLocals" id="DebugBase.getCurrentFrameLocals" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.getCurrentFrameLocals" /> <keyword name="DebugBase.getEvent" id="DebugBase.getEvent" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.getEvent" /> <keyword name="DebugBase.getStack" id="DebugBase.getStack" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.getStack" /> <keyword name="DebugBase.get_break" id="DebugBase.get_break" ref="eric5.DebugClients.Python3.DebugBase.html#DebugBase.get_break" />
--- a/Documentation/Source/eric5.DebugClients.Python.DebugBase.html Fri Mar 04 20:03:47 2011 +0100 +++ b/Documentation/Source/eric5.DebugClients.Python.DebugBase.html Thu Mar 10 10:27:57 2011 +0100 @@ -105,6 +105,9 @@ <td><a href="#DebugBase.getCurrentFrame">getCurrentFrame</a></td> <td>Public method to return the current frame.</td> </tr><tr> +<td><a href="#DebugBase.getCurrentFrameLocals">getCurrentFrameLocals</a></td> +<td>Public method to return the locals dictionary of the current frame.</td> +</tr><tr> <td><a href="#DebugBase.getEvent">getEvent</a></td> <td>Public method to return the last debugger event.</td> </tr><tr> @@ -376,6 +379,16 @@ <dd> the current frame </dd> +</dl><a NAME="DebugBase.getCurrentFrameLocals" ID="DebugBase.getCurrentFrameLocals"></a> +<h4>DebugBase.getCurrentFrameLocals</h4> +<b>getCurrentFrameLocals</b>(<i></i>) +<p> + Public method to return the locals dictionary of the current frame. +</p><dl> +<dt>Returns:</dt> +<dd> +locals dictionary of the current frame +</dd> </dl><a NAME="DebugBase.getEvent" ID="DebugBase.getEvent"></a> <h4>DebugBase.getEvent</h4> <b>getEvent</b>(<i></i>)
--- a/Documentation/Source/eric5.DebugClients.Python3.DebugBase.html Fri Mar 04 20:03:47 2011 +0100 +++ b/Documentation/Source/eric5.DebugClients.Python3.DebugBase.html Thu Mar 10 10:27:57 2011 +0100 @@ -108,6 +108,9 @@ <td><a href="#DebugBase.getCurrentFrame">getCurrentFrame</a></td> <td>Public method to return the current frame.</td> </tr><tr> +<td><a href="#DebugBase.getCurrentFrameLocals">getCurrentFrameLocals</a></td> +<td>Public method to return the locals dictionary of the current frame.</td> +</tr><tr> <td><a href="#DebugBase.getEvent">getEvent</a></td> <td>Public method to return the last debugger event.</td> </tr><tr> @@ -390,6 +393,16 @@ <dd> the current frame </dd> +</dl><a NAME="DebugBase.getCurrentFrameLocals" ID="DebugBase.getCurrentFrameLocals"></a> +<h4>DebugBase.getCurrentFrameLocals</h4> +<b>getCurrentFrameLocals</b>(<i></i>) +<p> + Public method to return the locals dictionary of the current frame. +</p><dl> +<dt>Returns:</dt> +<dd> +locals dictionary of the current frame +</dd> </dl><a NAME="DebugBase.getEvent" ID="DebugBase.getEvent"></a> <h4>DebugBase.getEvent</h4> <b>getEvent</b>(<i></i>)