Chrisian,

How would these namedtuple/structseq values be used? I have a similar design 
with PyObjC: pass-by-reference “return” values are returned in a tuple, e.g.:

    void getpoint(pointclass* v, int* x, int *y)    =>    def get point(v: 
pointless) -> (int, int)
    BOOL getvalue(someclass* v, int* val)      =>    def getvalue(v: someclass) 
-> (bool, int)

I rarely, if ever, see code that actually stores the return tuple as-is. The 
return tuple is just deconstructed immediately, like “x, y = 
getpoint(mypoint)”. 

Ronald
—

Twitter: @ronaldoussoren
Blog: https://blog.ronaldoussoren.net/

> On 8 Aug 2019, at 10:42, Christian Tismer <tis...@stackless.com> wrote:
> 
> Hi Guido,
> 
> If a C++ function already has a return value, plus some primitive
> pointer variables that need to be moved into the result in Python,
> then we have the case with a first, single unnamed field.
> Only one such field can exist.
> 
> I'm not sure if that case exists in the ~25000 Qt5 functions, but in
> that case, I think to give that single field the name "unnamed"
> or maybe better "result".
> 
> Thank you very much for pointing me to that example!
> 
> Cheers -- Chris
> 
> 
> On 08.08.19 06:41, Guido van Rossum wrote:
>> Alas, we didn't think of struct sequences when we designed PEP 484. It
>> seems they are a hybrid of Tuple and NamedTuple; both of these are
>> currently special-cased in mypy in ways that cannot easily be combined.
>> 
>> Do you really need anonymous fields?
>> 
>> I see an example in typeshed/stdlib/3/os/__init__.pyi (in
>> github.com/python/typeshed <http://github.com/python/typeshed>), for
>> stat_result. It defines names for all the fields, plus a __getitem__()
>> method that indicates that indexing returns an int. This doesn't help if
>> anonymous fields could have different types, not does it teach the type
>> checker about the number of anonymous fields.
>> 
>> --Guido
>> 
>> On Wed, Aug 7, 2019 at 1:51 AM Christian Tismer <tis...@stackless.com
>> <mailto:tis...@stackless.com>> wrote:
>> 
>>    Hi all,
>> 
>>    Ok, I am about to implement generation of such structures
>>    automatically using the struct sequence concept.
>> 
>> 
>>    One more question:
>>    ------------------
>> 
>>    Struct sequences are not yet members of the typing types.
>>    I would like to add that, because a major use case is also to
>>    show nice .pyi files with all the functions and types.
>> 
>>    * namedtuple has made the transition to NamedTuple
>> 
>>    * What would I need to do that for StructSequence as well?
>> 
>>    Things get also a bit more complicated since struct sequence
>>    objects can contain unnamed fields.
>> 
>>    Any advice would be appreciated, I am no typing expert (yet :-)
>> 
>>    cheers -- Chris
>> 
>> 
>>    On 30.07.19 17:10, Guido van Rossum wrote:
>>> I think I have to agree with Petr. Define explicit type names.
>>> 
>>> On Tue, Jul 30, 2019 at 2:45 AM Paul Moore <p.f.mo...@gmail.com
>>    <mailto:p.f.mo...@gmail.com>
>>> <mailto:p.f.mo...@gmail.com <mailto:p.f.mo...@gmail.com>>> wrote:
>>> 
>>>      On Tue, 30 Jul 2019 at 09:33, Christian Tismer
>>    <tis...@stackless.com <mailto:tis...@stackless.com>
>>>      <mailto:tis...@stackless.com <mailto:tis...@stackless.com>>>
>>    wrote:
>>>      > >>> typing.NamedTuple("__f", x=int, y=int)
>>>      > <class '__main__.__f'>
>>>      > >>> typing.NamedTuple("__f", x=int, y=int) is
>>    typing.NamedTuple("__f",
>>>      > x=int, y=int)
>>>      > False
>>> 
>>>      This appears to go right back to collections.namedtuple:
>>> 
>>>      >>> from collections import namedtuple
>>>      >>> n1 = namedtuple('f', ['a', 'b', 'c'])
>>>      >>> n2 = namedtuple('f', ['a', 'b', 'c'])
>>>      >>> n1 is n2
>>>      False
>>> 
>>>      I found that surprising, as I expected the named tuple type to be
>>>      cached based on the declared name 'f'. But it's been that way
>>    forever
>>>      so obviously my intuition here is wrong. But maybe it would be
>>    useful
>>>      for this case if there *was* a way to base named tuple
>>    identity off
>>>      the name/fields? It could be as simple as caching the results:
>>> 
>>>      >>> from functools import lru_cache
>>>      >>> cached_namedtuple = lru_cache(None)(namedtuple)
>>>      >>> n1 = cached_namedtuple('f', ('a', 'b', 'c')) # A tuple rather
>>>      than a list of field names, as lists aren't hashable
>>>      >>> n2 = cached_namedtuple('f', ('a', 'b', 'c'))
>>>      >>> n1 is n2
>>>      True
>>> 
>>>      Paul
>>> 
>>> 
>>> 
>>> --
>>> --Guido van Rossum (python.org/~guido <http://python.org/~guido>
>>    <http://python.org/~guido>)
>>> /Pronouns: he/him/his //(why is my pronoun here?)/
>>> 
>>    
>> <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
>>> 
>>> _______________________________________________
>>> Python-Dev mailing list -- python-dev@python.org
>>    <mailto:python-dev@python.org>
>>> To unsubscribe send an email to python-dev-le...@python.org
>>    <mailto:python-dev-le...@python.org>
>>> https://mail.python.org/mailman3/lists/python-dev.python.org/
>>> Message archived at
>>    
>> https://mail.python.org/archives/list/python-dev@python.org/message/GIFRTFWPEGKZ33PTW63YXKGXHHAQJ35I/
>>> 
>> 
>> 
>>    -- 
>>    Christian Tismer             :^)   tis...@stackless.com
>>    <mailto:tis...@stackless.com>
>>    Software Consulting          :     http://www.stackless.com/
>>    Karl-Liebknecht-Str. 121     :     https://github.com/PySide
>>    14482 Potsdam                :     GPG key -> 0xFB7BEE0E
>>    phone +49 173 24 18 776  fax +49 (30) 700143-0023
>> 
>> 
>> 
>> -- 
>> --Guido van Rossum (python.org/~guido <http://python.org/~guido>)
>> /Pronouns: he/him/his //(why is my pronoun here?)/
>> <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
>> 
>> _______________________________________________
>> Python-Dev mailing list -- python-dev@python.org
>> To unsubscribe send an email to python-dev-le...@python.org
>> https://mail.python.org/mailman3/lists/python-dev.python.org/
>> Message archived at 
>> https://mail.python.org/archives/list/python-dev@python.org/message/QZ44KHLLNL54ZCHEAQ5WBWCOV7AU2HGW/
>> 
> 
> 
> -- 
> Christian Tismer             :^)   tis...@stackless.com
> Software Consulting          :     http://www.stackless.com/
> Karl-Liebknecht-Str. 121     :     https://github.com/PySide
> 14482 Potsdam                :     GPG key -> 0xFB7BEE0E
> phone +49 173 24 18 776  fax +49 (30) 700143-0023
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-dev@python.org/message/I4LGR6Q6QJ5L4AIWI4BRMXUTXEGIMYJ2/

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/X5H4CP7D5SMF2LVDPDPJTQCRPJETRYEQ/

Reply via email to