[Python-bugs-list] [ python-Bugs-446551 ] profiler invents error in nested scopes
noreply@sourceforge.net
noreply@sourceforge.net
Tue, 31 Jul 2001 13:55:59 -0700
Bugs item #446551, was opened at 2001-07-31 13:55
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=446551&group_id=5470
Category: Python Library
Group: Python 2.1.1
Status: Open
Resolution: None
Priority: 5
Submitted By: W. G. Mitchener (caeshmer)
Assigned to: Nobody/Anonymous (nobody)
Summary: profiler invents error in nested scopes
Initial Comment:
I'm trying to use the profiler in the Python 2.1 RPM on
Red Hat 7.0.
Here's the most reduced form of problem I could come up
with. This is the file ProfilerBug.py:
from __future__ import nested_scopes
class Spam:
def __init__(self, x, y, z):
eggs = (self, x, y, z)
a = 4
b = 5
c = 6
def f(t):
return a + b + c + t
def _test1():
pr = Spam(1, 2, 3)
If I do this:
Python 2.1 (#1, Jul 13 2001, 10:27:46)
[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
Type "copyright", "credits" or "license" for more
information.
>>> import ProfilerBug
>>> ProfilerBug._test1()
>>>
there's no error. But here's what I get when I run the
profiler:
Python 2.1 (#1, Jul 13 2001, 10:27:46)
[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2
Type "copyright", "credits" or "license" for more
information.
>>> import profile
>>> import ProfilerBug
>>> profile.run('ProfilerBug._test1()')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.1/profile.py", line 71, in run
prof = prof.run(statement)
File "/usr/lib/python2.1/profile.py", line 356, in run
return self.runctx(cmd, dict, dict)
File "/usr/lib/python2.1/profile.py", line 362, in runctx
exec cmd in globals, locals
File "<string>", line 1, in ?
File "ProfilerBug.py", line 15, in _test1
pr = Spam(1, 2, 3)
File "ProfilerBug.py", line 6, in __init__
eggs = (self, x, y, z)
UnboundLocalError: local variable 'self' referenced
before assignment
It has something to do with nested scopes, because if I
comment out the definition of f, the error goes away.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=446551&group_id=5470