Gregory (Grisha) Trubetskoy
grisha at modpython.org
Thu Jan 10 18:01:22 EST 2002
Thanks - someone already submitted a patch for this and version 3 will behave this way. On Fri, 11 Jan 2002, Jonathan Gardner wrote: > I expected to be able to get all the script args with a piece of code like > this: > > def scriptname(req, **args): > ... > > but instead I got none of them at all. > > Here is the patch that does what I expect. If I need to submit this > differently, let me know. > > *** publisher.py Mon Jul 9 21:54:40 2001 > --- /usr/local/lib/python2.0/site-packages/mod_python/publisher.py Fri Jan 11 > 07:08:51 2002 > *************** > *** 150,155 **** > --- 150,157 ---- > # and for that we need to get a list of them. There > # are a few options for callable objects here: > > + # Whether or not there is a **args argument in the function list. > + has_keyarg = 0 > if str(type(object)) == "<type 'instance'>": > # instances are callable when they have __call__() > object = object.__call__ > *************** > *** 158,172 **** > # 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] > > # remove unexpected args > ! for name in args.keys(): > ! if name not in expected: > ! del args[name] > > result = apply(object, (), args) > > --- 160,177 ---- > # function > fc = object.func_code > expected = fc.co_varnames[0:fc.co_argcount] > + has_keyarg = fc.co_flags & 0x08 > elif hasattr(object, 'im_func'): > # method > fc = object.im_func.func_code > expected = fc.co_varnames[1:fc.co_argcount] > + has_keyarg = fc.co_flags & 0x08 > > # remove unexpected args > ! if not has_keyarg: > ! for name in args.keys(): > ! if name not in expected: > ! del args[name] > > result = apply(object, (), args) > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://www.modpython.org/mailman/listinfo/mod_python >
|