Re: inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-25 Thread Terry Reedy

On 9/25/2010 3:53 AM, deluxstar wrote:


The traceback is:
2010-09-25 10:50:38+0300 [-] Traceback (most recent call last):
2010-09-25 10:50:38+0300 [-]   File "../appsrv/lqcommon.py", line 983,
in getPRMS
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 931, in getouterframes
2010-09-25 10:50:38+0300 [-] framelist.append((frame,) +
getframeinfo(frame, context))
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 906, in getframeinfo
2010-09-25 10:50:38+0300 [-] lines, lnum = findsource(frame)
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 568, in findsource
2010-09-25 10:50:38+0300 [-] if pat.match(lines[lnum]): break
2010-09-25 10:50:38+0300 [-] IndexError: list index out of range

It is hard to reproduce the error with a script. I will work and send
if I success.
If the traceback tells smth, please tell me :)


The traceback is terribly difficult to read with the timestamps added. 
They are not from Python. In the future, please try to suppress them or 
use a global search/replace (with nothing) before posting such.


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-25 Thread Wolfgang Rohdewald
On Samstag 25 September 2010, Steven D'Aprano wrote:
> My guess is that you've copied the .pyc file onto the server,
> BUT there  is also an older version of the .py file there as
> well. Because the modification date is older than that of the
> .pyc file, Python executes the compiled code from the .pyc
> file.

that would be horrible - this is what our own legacy software
does. A maintenance nightmare. Think adjusting system time
or "cp -a spam.py"

Actually the docs say something different:

The modification time of the version of spam.py used to create 
spam.pyc is recorded in spam.pyc, and the .pyc file is ignored if 
these don’t match.

found here:
http://docs.python.org/tutorial/modules.html

-- 
Wolfgang
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-25 Thread Steven D'Aprano
On Sat, 25 Sep 2010 00:53:13 -0700, deluxstar wrote:

> The traceback is:
> 2010-09-25 10:50:38+0300 [-] Traceback (most recent call last):
> 2010-09-25 10:50:38+0300 [-]   File "../appsrv/lqcommon.py", line 983,
> in getPRMS
> 2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
> line 931, in getouterframes
> 2010-09-25 10:50:38+0300 [-] framelist.append((frame,) +
> getframeinfo(frame, context))
> 2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
> line 906, in getframeinfo
> 2010-09-25 10:50:38+0300 [-] lines, lnum = findsource(frame)
> 2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
> line 568, in findsource
> 2010-09-25 10:50:38+0300 [-] if pat.match(lines[lnum]): break
> 2010-09-25 10:50:38+0300 [-] IndexError: list index out of range

I'm going to take a wild guess here.

My guess is that you've copied the .pyc file onto the server, BUT there 
is also an *older* version of the .py file there as well. Because the 
modification date is older than that of the .pyc file, Python executes 
the compiled code from the .pyc file. But when you search for the source 
code, the old .py file is discovered -- but it doesn't have the right 
number of lines, and so you end up with an IndexError.



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-25 Thread deluxstar
On 24 Eylül, 12:39, Peter Otten <__pete...@web.de> wrote:
> deluxstar wrote:
> > We have an application working on several servers generally written
> > with Python 2.6 and Twisted 10.
> > The source codes are located in one server and compiled in this
> > server. The compiled files are copied to other server via network and
> > application server works with these compiled files.
>
> > In this application, I have to write a function to return a value of
> > the caller object that calles this function. The function may be
> > called from several modules of the application. To achieve this goal,
> > I try to use the python inspect module:
>
> > curframe = inspect.currentframe()
> > calframe = inspect.getouterframes(curframe, 2)
> > calframe[1][0].f_locals['variable']
>
> > This sample code works on local development environment both on linux
> > and windows. When checked in to production environment,
> > inspect.currentframe() or inspect.stack() function gives "List index
> > out of range error".
>
> > When I googled, I found only one clue of copying pyc files:
> >http://forum.webfaction.com/viewtopic.php?pid=16808
>
> > Why inspect modules gives this error? OR Is there another way to get
> > the caller objects variable value?
>
> Can you provide the actual traceback? Provide a small script that reproduces
> the error? Add print statements and post their output?
>
> print inspect.currentframe> curframe = inspect.currentframe()
> print curframe
> > calframe = inspect.getouterframes(curframe, 2)
>
> print calframe
>
> Peter

The traceback is:
2010-09-25 10:50:38+0300 [-] Traceback (most recent call last):
2010-09-25 10:50:38+0300 [-]   File "../appsrv/lqcommon.py", line 983,
in getPRMS
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 931, in getouterframes
2010-09-25 10:50:38+0300 [-] framelist.append((frame,) +
getframeinfo(frame, context))
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 906, in getframeinfo
2010-09-25 10:50:38+0300 [-] lines, lnum = findsource(frame)
2010-09-25 10:50:38+0300 [-]   File "/usr/lib/python2.6/inspect.py",
line 568, in findsource
2010-09-25 10:50:38+0300 [-] if pat.match(lines[lnum]): break
2010-09-25 10:50:38+0300 [-] IndexError: list index out of range

It is hard to reproduce the error with a script. I will work and send
if I success.
If the traceback tells smth, please tell me :)
Thnx
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-24 Thread Peter Otten
deluxstar wrote:

> We have an application working on several servers generally written
> with Python 2.6 and Twisted 10.
> The source codes are located in one server and compiled in this
> server. The compiled files are copied to other server via network and
> application server works with these compiled files.
> 
> In this application, I have to write a function to return a value of
> the caller object that calles this function. The function may be
> called from several modules of the application. To achieve this goal,
> I try to use the python inspect module:
> 
> curframe = inspect.currentframe()
> calframe = inspect.getouterframes(curframe, 2)
> calframe[1][0].f_locals['variable']
> 
> This sample code works on local development environment both on linux
> and windows. When checked in to production environment,
> inspect.currentframe() or inspect.stack() function gives "List index
> out of range error".
> 
> When I googled, I found only one clue of copying pyc files:
> http://forum.webfaction.com/viewtopic.php?pid=16808
> 
> Why inspect modules gives this error? OR Is there another way to get
> the caller objects variable value?

Can you provide the actual traceback? Provide a small script that reproduces 
the error? Add print statements and post their output?

print inspect.currentframe
> curframe = inspect.currentframe()
print curframe
> calframe = inspect.getouterframes(curframe, 2)
print calframe

Peter
-- 
http://mail.python.org/mailman/listinfo/python-list


inspect.stack() or inspect.currentframe() gives "list index out of range error"

2010-09-24 Thread deluxstar
Hi,

We have an application working on several servers generally written
with Python 2.6 and Twisted 10.
The source codes are located in one server and compiled in this
server. The compiled files are copied to other server via network and
application server works with these compiled files.

In this application, I have to write a function to return a value of
the caller object that calles this function. The function may be
called from several modules of the application. To achieve this goal,
I try to use the python inspect module:

curframe = inspect.currentframe()
calframe = inspect.getouterframes(curframe, 2)
calframe[1][0].f_locals['variable']

This sample code works on local development environment both on linux
and windows. When checked in to production environment,
inspect.currentframe() or inspect.stack() function gives "List index
out of range error".

When I googled, I found only one clue of copying pyc files:
http://forum.webfaction.com/viewtopic.php?pid=16808

Why inspect modules gives this error? OR Is there another way to get
the caller objects variable value?

Thanks in advance.



-- 
http://mail.python.org/mailman/listinfo/python-list