Yury Selivanov added the comment:
@Nick: oh, it took me some time to realize that your suggestion to transform
positional-or-keyword to keyword-only parameters is correct. If we do this, we
no longer need '_partial_kwarg' hack. I'll work on the patch. Thank you.
--
___
Yury Selivanov added the comment:
@Nick:
Agreed on positional-only stuff.
> If arguments bound by position disappear from the signature, and those
> bound by keyword are mapped to keyword-only parameters with a default, we
> should get a valid and accurate signature.
But what about my example
Nick Coghlan added the comment:
On 1 Apr 2014 08:17, "Yury Selivanov" wrote:
>
> > I'm +0 on new types to clean that up if necessary, but would prefer it
if
> we could just improve the translation to ordinary signature objects
instead.
>
> I'm not sure I understand what you mean by "translation
Yury Selivanov added the comment:
@Nick:
> Oops: already bound positional-*only* arguments should be hidden.
Hm, good catch. I'm not sure we currently do this. I'll check if this needs to
be fixed (in 3.4.1 too).
> I'm +0 on new types to clean that up if necessary, but would prefer it if
we co
Nick Coghlan added the comment:
On 1 Apr 2014 07:36, "Nick Coghlan" wrote:
>
>
> Nick Coghlan added the comment:
>
> The already bound arguments should be treated as additional keyword-only
> arguments, and already bound positional arguments hidden completely.
Oops: already bound positional-*on
Nick Coghlan added the comment:
The already bound arguments should be treated as additional keyword-only
arguments, and already bound positional arguments hidden completely.
I'm +0 on new types to clean that up if necessary, but would prefer it if
we could just improve the translation to ordinar
R. David Murray added the comment:
I believe it is a python invariant that a == b implies hash(a) == hash(b). I
don't see why the two signatures should be equal. I'm not even sure why the
bound argument shows up in the signature of the partial. That surprises me.
--
nosy: +r.david.m
New submission from Yury Selivanov:
There is a small detail in the current Signature class implementation, in
regards to how partial signatures are treated. Consider the following example:
def foo(a, b): pass
foo_partial = functools.partial(foo, 'spam')
Now, the signature of 'foo_partial