Issue1109
Created on 2008-08-22.10:31:27 by wesleys, last changed 2008-11-04.15:27:35 by fwierzbicki.
| Messages | |||
|---|---|---|---|
| msg3445 (view) | Author: Wesley Schwengle (wesleys) | Date: 2008-08-22.10:31:26 | |
I have the following function:
def _cmd(self, type, *args):
calling = inspect.stack()[1][3]
print calling.replace("2", "To")
#return self.cmd("create" + type + self.cmd_prefix, *args)
Jython 2.2.1:
snapshotTosnaphot
Jython 2.5a1:
Traceback (most recent call last):
File "./pylogic.py", line 53, in <module>
test_audit_jobs()
File "./pylogic.py", line 38, in test_audit_jobs
k.snapshot2snaphot("test")
File "./../lib/OSS/bladelogic/AuditJob.py", line 24, in snapshot2snaphot
return self._cmd("SnapshotToSnapshot", *args)
File "./../lib/OSS/bladelogic/AuditJob.py", line 19, in _cmd
calling = inspect.stack()[1][3]
File "/opt/bladelogic/jython/Lib/inspect.py", line 888, in stack
return getouterframes(sys._getframe(1), context)
File "/opt/bladelogic/jython/Lib/inspect.py", line 869, in getouterframes
framelist.append((frame,) + getframeinfo(frame, context))
File "/opt/bladelogic/jython/Lib/inspect.py", line 844, in getframeinfo
lines, lnum = findsource(frame)
File "/opt/bladelogic/jython/Lib/inspect.py", line 510, in findsource
if pat.match(lines[lnum]): break
IndexError: index out of range: 138
|
|||
| msg3518 (view) | Author: Jim Baker (zyasoft) | Date: 2008-09-13.18:19:19 | |
test_inspect.py has tests for inspect.stack, they look comprehensive, and they pass. Need to have a more comprehensive test submitted for us to reproduce. |
|||
| msg3733 (view) | Author: Frank Wierzbicki (fwierzbicki) | Date: 2008-11-03.19:06:30 | |
Hey Jim -- I tried exercising the code snippet, and could not get it to fail, maybe it was accidentally fixed? Certainly it isn't enough code to reproduce the problem. Since you haven't heard from the original poster for a while now, do you want to close it? |
|||
| msg3734 (view) | Author: Frank Wierzbicki (fwierzbicki) | Date: 2008-11-03.19:22:55 | |
oops didn't mean to close -- I'll let Jim decide on that. |
|||
| msg3747 (view) | Author: Wesley Schwengle (wesleys) | Date: 2008-11-04.10:41:58 | |
I saw the bug got closed because you haven't received an update from me.
These are the classes which are involved and how I can trigger the bug.
baseclass.py:
#!/usr/bin/env bljython
import sys
import inspect
class baseclass:
'''baseclass, abstract class'''
def __init__(self, jli = None):
'''Initialize the class'''
self.debug = 0
self.jli(jli)
self.cmd_prefix = self.__module__.split('.')[-1]
def jli(self, jli = None):
"""Set a jli component so we can call it"""
if jli != None:
self.jli = jli
if self.debug:
self.debug(self.debug)
return self.jli
def _cmd(self, *args):
'''Executes the JLI command'''
print "%s %s" % (self.cmd_prefix, " ".join(args));
# return self.jli.cmd(self.cmd_prefix, *args)
def debug(self, debug):
'''Enable debuggin on the jli'''
self.debug = debug
if self.jli != None:
self.jli['debug'] = debug
def _log_error(self, msg):
'''Log an error in case we need to log it..'''
print msg
sys.exit(4);
def _unsupported(self):
'''Function which tells the user the called function is not
supported..'''
print "Unsupported function '%s.%s()' called" % (self.cmd_prefix,
inspect.stack()[1][3])
def print_me(self):
'''Function just here for testing.. to be removed'''
print self.cmd_prefix
print dir(self)
DepotSoftware.py:
#!/usr/bin/env bljython
import baseclass
import inspect
class DepotSoftware(baseclass.baseclass):
'''The DepotSoftware name space contains commands to add software to
the Depot.
The commands in this name space sometimes refer to software
packages. A
software package is a BLPackage containing one or more software
items.
'''
def _add2(self, *args):
calling = [ k.capitalize() for k in
inspect.stack()[1][3].split('_') ]
return self._cmd("add" + "".join(calling) +
"ToDepotByGroupName", *args)
def os_hotfix(self, *args):
return self._add2(*args)
def rpm(self, *args):
return self._add2(*args)
def service_pack(self, *args):
return self._add2(*args)
def solaris_package(self, *args):
return self._add2(*args)
def solaris_patch(self, *args):
return self._add2(*args)
def solaris_patch_cluster(self, *args):
return self._add2(*args)
def aix_package(self, *args):
return self._add2(*args)
def aix_patch(self, *args):
return self._add2(*args)
def custom_software(self, *args):
return self._add2(*args)
def hpux_bundle(self, *args):
return self._add2(*args)
def hpux_patch(self, *args):
return self._add2(*args)
def hpux_product(self, *args):
return self._add2(*args)
def install_shield_package(self, *args):
return self._add2(*args)
def msi_package(self, *args):
return self._add2(*args)
In pylogic.py (testscript) I have the following functions, calling all
the public functions from the class:
def test_depot_software():
k = DepotSoftware.DepotSoftware()
k.jli(cli) # cli can be a anything, as long as it is set. You don't
have the Bladelogic cli class I assume :)
k.aix_package()
k.aix_patch()
k.custom_software()
k.hpux_bundle()
k.hpux_patch()
k.hpux_product()
k.install_shield_package()
k.msi_package()
k.os_hotfix()
k.rpm()
k.service_pack()
k.solaris_package()
k.solaris_patch()
k.solaris_patch_cluster()
When this code is run with Jython 2.5a1:
Traceback (most recent call last):
File "./pylogic.py", line 160, in <module>
test_depot_software()
File "./pylogic.py", line 109, in test_depot_software
k.aix_package()
File "./../lib/OSS/bladelogic/DepotSoftware.py", line 35, in aix_package
return self._add2(*args)
File "./../lib/OSS/bladelogic/DepotSoftware.py", line 13, in _add2
calling = [ k.capitalize() for k in inspect.stack()[1][3].split('_') ]
File "/opt/bladelogic/jython.2.5a1/Lib/inspect.py", line 888, in stack
return getouterframes(sys._getframe(1), context)
File "/opt/bladelogic/jython.2.5a1/Lib/inspect.py", line 869, in
getouterframes
framelist.append((frame,) + getframeinfo(frame, context))
File "/opt/bladelogic/jython.2.5a1/Lib/inspect.py", line 844, in
getframeinfo
lines, lnum = findsource(frame)
File "/opt/bladelogic/jython.2.5a1/Lib/inspect.py", line 510, in
findsource
if pat.match(lines[lnum]): break
IndexError: index out of range: 747
Jython 2.2.1:
DepotSoftware addAixPackageToDepotByGroupName
DepotSoftware addAixPatchToDepotByGroupName
DepotSoftware addCustomSoftwareToDepotByGroupName
DepotSoftware addHpuxBundleToDepotByGroupName
DepotSoftware addHpuxPatchToDepotByGroupName
DepotSoftware addHpuxProductToDepotByGroupName
DepotSoftware addInstallShieldPackageToDepotByGroupName
DepotSoftware addMsiPackageToDepotByGroupName
DepotSoftware addOsHotfixToDepotByGroupName
DepotSoftware addRpmToDepotByGroupName
DepotSoftware addServicePackToDepotByGroupName
DepotSoftware addSolarisPackageToDepotByGroupName
DepotSoftware addSolarisPatchToDepotByGroupName
DepotSoftware addSolarisPatchClusterToDepotByGroupName
|
|||
| msg3748 (view) | Author: Wesley Schwengle (wesleys) | Date: 2008-11-04.10:57:33 | |
I saw an update to 2.5a3, installed that one and the bug is resolved in that release. So the bug can remain closed. |
|||
| msg3751 (view) | Author: Frank Wierzbicki (fwierzbicki) | Date: 2008-11-04.15:27:34 | |
Wesley: Excellent! Thanks for taking the time to test this! |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2008-11-04 15:27:35 | fwierzbicki | set | messages: + msg3751 |
| 2008-11-04 10:57:35 | wesleys | set | messages: + msg3748 |
| 2008-11-04 10:42:00 | wesleys | set | messages: + msg3747 |
| 2008-11-03 19:52:39 | zyasoft | set | status: open -> closed resolution: postponed -> works for me title: inspect.stack() not working as intented -> inspect.stack() not working as intended |
| 2008-11-03 19:22:56 | fwierzbicki | set | status: closed -> open resolution: works for me -> postponed messages: + msg3734 |
| 2008-11-03 19:06:30 | fwierzbicki | set | status: open -> closed resolution: postponed -> works for me messages: + msg3733 nosy: + fwierzbicki |
| 2008-09-13 18:19:19 | zyasoft | set | assignee: zyasoft resolution: postponed messages: + msg3518 nosy: + zyasoft |
| 2008-08-22 10:31:27 | wesleys | create | |
Supported by Python Software Foundation,
Powered by Roundup