You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Nicolas Lehuen (JIRA)" <ji...@apache.org> on 2005/01/29 12:11:17 UTC
[jira] Assigned: (MODPYTHON-13) Builtin functions not callable with mod_python.publisher.
[ http://issues.apache.org/jira/browse/MODPYTHON-13?page=history ]
Nicolas Lehuen reassigned MODPYTHON-13:
---------------------------------------
Assign To: Nicolas Lehuen
> Builtin functions not callable with mod_python.publisher.
> ---------------------------------------------------------
>
> Key: MODPYTHON-13
> URL: http://issues.apache.org/jira/browse/MODPYTHON-13
> Project: mod_python
> Type: Bug
> Versions: 3.1.3
> Reporter: Graham Dumpleton
> Assignee: Nicolas Lehuen
>
> Create a handler file containing:
> _dict = { "a": 1 }
> keys = _dict.keys
> Where this file is called "builtin.py", access "builtin.py/keys".
> This yields the error:
> Mod_python error: "PythonHandler mod_python.publisher"
> Traceback (most recent call last):
> File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", line 308, in HandlerDispatch
> result = object(req)
> File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/publisher.py", line 136, in handler
> result = util.apply_fs_data(object, req.form, req=req)
> File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/util.py", line 356, in apply_fs_data
> if not (fc.co_flags & 0x08):
> UnboundLocalError: local variable 'fc' referenced before assignment
> To fix this, mod_python.util needs to be modified in apply_fs_data(). The
> modified section of code is:
> fc = None
> expected = []
> if hasattr(object, "func_code"):
> # function
> fc = object.func_code
> expected = fc.co_varnames[0:fc.co_argcount]
> elif hasattr(object, 'im_func'):
> # method
> fc = object.im_func.func_code
> expected = fc.co_varnames[1:fc.co_argcount]
> elif type(object) is ClassType:
> # class
> fc = object.__init__.im_func.func_code
> expected = fc.co_varnames[1:fc.co_argcount]
>
> # remove unexpected args unless co_flags & 0x08,
> # meaning function accepts **kw syntax
> if not fc:
> args = {}
> elif not (fc.co_flags & 0x08):
> for name in args.keys():
> if name not in expected:
> del args[name]
> Ie., give "fc" a default value, and if it is not able to be set in if clauses, wipe
> out "args" altogether.
> This change then correctly yields:
> ['a']
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira