[ https://issues.apache.org/jira/browse/MODPYTHON-198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Graham Dumpleton closed MODPYTHON-198. -------------------------------------- > Python 2.5 nested auth functions in publisher. > ---------------------------------------------- > > Key: MODPYTHON-198 > URL: https://issues.apache.org/jira/browse/MODPYTHON-198 > Project: mod_python > Issue Type: Bug > Components: publisher > Affects Versions: 3.2.10 > Reporter: Graham Dumpleton > Assigned To: Graham Dumpleton > Fix For: 3.3 > > > Jim Gallacher wrote: > With python 2.5 I get 2 failures: > test_publisher_auth_nested > test_publisher_auth_method_nested > It looks like something has changed in python 2.5 introspection that is > messing up publisher. > Test script testme.py > --------------------- > def testfunc(): > print 'stuff' > def __auth__(): > print '__auth__ called' > def __access__(): > print '__access__ called' > def main(): > func_obj = testfunc > func_code = func_obj.func_code > print func_code.co_names > if __name__ == '__main__': > main() > Results > ------- > $ python2.3 testme.py > ('__auth__', '__access__') > $ python2.4 testme.py > ('__auth__', '__access__') > $ python2.5 testme.py > () > Dan Eloff points out that information is now in co_varnames. > >>> fc.co_names > () > >>> fc.co_varnames > ('__auth__', '__access__') > >>> def foo(a,b): > d = 5 > def bar(c): > return c > >>> fc.co_names > () > >>> fc.co_varnames > ('a', 'b', 'd', 'bar') > To get just args, try: > >>> fc.co_varnames[:fc.co_argcount] > ('a', 'b') > And for just local vars: > >>> fc.co_varnames[fc.co_argcount:] > ('d', 'bar') > Still need to work out if actual code objects for the functions are available > in co_consts or not. Ie., need to replace: > if "__auth__" in func_code.co_names: > i = list(func_code.co_names).index("__auth__") > __auth__ = func_code.co_consts[i+1] > if hasattr(__auth__, "co_name"): > __auth__ = new.function(__auth__, func_globals) > found_auth = 1 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.