On 19 Feb 2008, at 10:49, Nick Coghlan wrote: [...] >> Such obscure features warrant an obscure yet well-named decorator, >> not >> an obscure syntax that's difficult to get help on. > > It's difficult to handle this in a decorator, as the problem that > occurs is the underlying function reporting duplicate definitions > for a parameter. > > >>> def f(self, **kwds): > ... print self, kwds > ... > >>> f(1, self=2) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: f() got multiple values for keyword argument 'self' > > There really isn't a lot a decorator can do to prevent this, unless > we modify function calls to permit direct assignment of the keywords > dictionary without unpacking it. Then it would become possible to > provide a decorator in functools along the lines of: > > def positional_only(required=1): > def wrap(f): > @wraps(f) > def wrapper(*args, **kwds): > if len(args) < required: > raise TypeError("Need %d positional arguments " > "(%d given)" % (required, len(args))) > f(*args, **=kwds) >
[...] > We've also veered fairly far off topic for the Py3k list - further > ideas for positional-only argument syntax or decorators should > probably be kicked around on python-ideas rather than here or python- > dev. For reference, here was a long thread on this on python-ideas [1]. Several syntax options were discussed, I proposed using a decorator and several ways of achieving this were posted: * by Steven Bethard [2] * by me [3], [4] I posted a cookbook recipe based on [4]. [1] http://mail.python.org/pipermail/python-ideas/2007-May/000704.html [2] http://mail.python.org/pipermail/python-ideas/2007-May/000763.html [3] http://mail.python.org/pipermail/python-ideas/2007-May/000808.html [4] http://mail.python.org/pipermail/python-ideas/2007-May/000860.html -- Arnaud _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com