On 20 Feb 2014, at 08:09, Nick Coghlan <ncogh...@gmail.com> wrote:

> On 20 February 2014 16:42, Ronald Oussoren <ronaldousso...@mac.com> wrote:
>> 
>> On 17 Feb 2014, at 00:43, Nick Coghlan <ncogh...@gmail.com> wrote:
>> 
>>> 
>>> On 17 Feb 2014 08:36, "Greg Ewing" <greg.ew...@canterbury.ac.nz> wrote:
>>>> 
>>>> Larry Hastings wrote:
>>>> 
>>>>> 3) We hold off on merging the rest of the Derby patches until after 3.4.0 
>>>>> final ships, then we merge them into the 3.4 maintenance branch so they 
>>>>> go into 3.4.1.
>>>> 
>>>> 
>>>> But wouldn't that be introducing a new feature into a
>>>> maintenance release? (I.e. some functions that didn't
>>>> have introspectable signatures before would gain them.)
>>> 
>>> From a compatibility point of view, 3.4.0 will already force introspection 
>>> users and tool developers to cope with the fact that some, but not all, 
>>> builtin and extension types provide valid signature data. Additional clinic 
>>> conversions that don't alter semantics then just move additional callables 
>>> into the "supports programmatic introspection" category.
>>> 
>>> It's certainly in a grey area, but "What's in the best interest of end 
>>> users?" pushes me in the direction of counting clinic conversions that 
>>> don't change semantics as bug fixes - they get improved introspection 
>>> support sooner, and it shouldn't make life any harder for tool developers 
>>> because all of the adjustments for 3.4 will be to the associated functional 
>>> changes in the inspect module.
>>> 
>>> The key thing is to make sure to postpone any changes that impact 
>>> *semantics* (like adding keyword argument support).
>> 
>> But there is a semantic change: some functions without a signature in 3.4.0 
>> would have a signature in 3.4.1. That's unlikely to affect user code much 
>> because AFAIK signatures aren't used a lot yet, but it is a semantic change 
>> non the less :-)
> 
> Heh, you must have managed to miss all the Argument Clinic debates -
> "semantics" there is shorthand for "the semantics of the call" :)

I skipped most of that discussion, due to the sheer volume and limited time to 
add something meaningful to that discussion.

> 
> It turns out there are some current C signatures where we either need
> to slightly change the semantics of the API or else add new features
> to the inspect module before we can represent them properly at the
> Python layer. So, for the life of Python 3.4, those are off limits for
> conversion, and we'll sort them out as part of PEP 457 for 3.5.

That much I noticed, and IIRC it was noticed fairly early on in Argument 
Clinic’s history that there are C functions that have an API that cannot easily 
be represented in a pure Python function (other than using ‘*args, **kw’ and 
manually parsing the argument list). 

I totally agree that changing the signature of functions should wait for 3.5, 
but that’s the easy bit.

> 
> However, there are plenty of others where the signature *can* be
> adequately represented in 3.4, they just aren't (yet). So the approach
> Larry has taken is to declare that "could expose valid signature data,
> but doesn't" counts as a bug fix for Python 3.4 maintenance release
> purposes. We'll make sure the porting section of the What's New guide
> addresses that explicitly for the benefit of anyone porting
> introspection tools to Python 3.4 (having all of the argument
> introspection in the inspect module be based on inspect.signature and
> various enhancements to inspect.signature itself has significantly
> increased the number of callables that now support introspection).

I can live with that, but don’t really agree that exposing new signature data 
is a bug fix. But maybe I’m just too conservative :-)

To end on a positive not, I do like signature objects, and have added support 
for them to PyObjC to enrich its introspection capabilities.

Ronald

> 
> Cheers,
> Nick.
> 
> -- 
> Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to