Author vstinner
Recipients vstinner
Date 2016-08-23.21:44:34
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1471988674.88.0.138357624643.issue27845@psf.upfronthosting.co.za>
In-reply-to
Content
In the review of my issue #27830 "Add _PyObject_FastCallKeywords(): pass keyword arguments as (key, value) pairs", Antoine Pitrou wrote about _PyStack_AsDict():

"It's a pity that you're doing two dict lookups per keyword argument.
Another strategy would be to check that `PyDict_Size() == nk` at the end, and if not, try to find the duplicate keyword."

https://bugs.python.org/review/27830/diff/18203/Objects/abstract.c#newcode2326_Objects/abstract.c:2326


In fact, I simply copied code from update_keyword_args(), helper function used by do_call() and ext_do_call() in Python/ceval.c.

This function is quite old, the last major change was made in 2001:
---
changeset:   15711:2481b5fe86d6
branch:      legacy-trunk
user:        Jeremy Hylton <jeremy@alum.mit.edu>
date:        Wed Jan 03 23:52:36 2001 +0000
files:       Python/ceval.c
description:
Revised implementation of CALL_FUNCTION and friends.
More revision still needed.

(...)
---


But this change just moved code. It looks like the real code was in fact added by this change made in 2000:
---
changeset:   12082:603db0d0aed1
branch:      legacy-trunk
user:        Jeremy Hylton <jeremy@alum.mit.edu>
date:        Tue Mar 28 23:49:17 2000 +0000
files:       Grammar/Grammar Include/opcode.h Lib/dis.py Misc/ACKS Python/ceval.c Python/compile.c Python/graminit.c
description:
slightly modified version of Greg Ewing's extended call syntax patch

executive summary:
Instead of typing 'apply(f, args, kwargs)' you can type 'f(*arg, **kwargs)'.
Some file-by-file details follow.

(...)
---
History
Date User Action Args
2016-08-23 21:44:34vstinnersetrecipients: + vstinner
2016-08-23 21:44:34vstinnersetmessageid: <1471988674.88.0.138357624643.issue27845@psf.upfronthosting.co.za>
2016-08-23 21:44:34vstinnerlinkissue27845 messages
2016-08-23 21:44:34vstinnercreate