[Python-Dev] pep 362 - 5th edition
Yury Selivanov
yselivanov.ml at gmail.com
Wed Jun 20 05:28:29 CEST 2012
On 2012-06-19, at 11:24 PM, Nick Coghlan wrote:
> On Wed, Jun 20, 2012 at 12:36 PM, Yury Selivanov
> <yselivanov.ml at gmail.com> wrote:
>> On 2012-06-19, at 9:22 PM, Yury Selivanov wrote:
>>> On 2012-06-19, at 8:39 PM, Nick Coghlan wrote:
>>>> 7. The idea of immutable Signature objects does highlight an annoyance
>>>> with the "attribute may be missing" style APIs. To actually duplicate
>>>> a signature correctly, including its return annotation (and assuming
>>>> the attribute is renamed), you would have to do something like:
>>>>
>>>> try:
>>>> note = {"annotation": old_sig.annotation}
>>>> except AttributeError:
>>>> note = {}
>>>> new_sig = Signature(old_sig.parameters[1:], **note)
>>
>> BTW, we don't have slices for OrderedDict. Since the slice object is
>> not hashable, we can implement it safely. I can create an issue (and draft
>> implementation), as I think it'd be quite a useful feature.
>
> No need, my example was just wrong, it should be:
>
> new_sig = Signature(old_sig.parameters.values()[1:])
>
> The constructor accepts an iterable of Parameter objects rather than a mapping.
That's the code I've ended up with:
sig = signature(obj.__func__)
return Signature(OrderedDict(tuple(sig.parameters.items())[1:]),
**sig.optional)
Still looks better than creating implicit & explicit copies ;)
As for slices support in OrderedDict -- it would return values, so
it won't solve the problem anyways.
-
Yury
More information about the Python-Dev
mailing list