On Wed, Aug 26, 2020, 18:04 Stefano Borini <stefano.bor...@gmail.com> wrote:

> On Wed, 26 Aug 2020 at 17:50, David Mertz <me...@gnosis.cx> wrote:
> >
> > In my mind, *anything* other than the straightforward and obvious
> signature `__getitem__(self, index, **kws)` is a pointless distraction.
>
> It isn't.
> and the reason why it isn't is that it makes it much harder for the
> implementing code to decide how to proceed, for the following reasons:
> 1. you will have to check if the keywords you receive are actually in
> the acceptable set
> 2. you will have to disambiguate an argument that is supposed to be
> passed _either_ as position or with keyword. Always remember this use
> case: a matrix of acquired data, where the row is the time and the
> column is the detector.
> I've seen countless times situations where people were creating the
> matrix with the wrong orientation, putting the detector along the rows
> and the time along the column. so you want this
>
> acquired_data[time, detector]
>
> to be allowed to be written as
>
> acquired_data[time=time, detector=detector]
>
> so that it's unambiguous and you can even mess up the order, but the
> right thing will be done, without having to remember which one is
> along the row and which one is along the column.
>
> If you use the interface you propose, now the __getitem__ code has to
> resolve the ambiguity of intermediate cases, and do the appropriate
> mapping from keyword to positional. Which is annoying and you are
> basically doing manually what you would get for free in any standard
> function call.
>
> Can you do it with that implementation you propose? sure, why not,
> it's code after all. Is it easy and/or practical? not so sure. Is
> there a better way? I don't know. That's what we are here for.
>
> To me, most of the discussion is being derailed in deciding how this
> should look like on the __getitem__ end and how to implement it, but
> we haven't even decided what it should look like from the outside
> (although it's probably in the massive number of emails I am trying to
> aggregate in the new PEP).
>

Again, implicit on your argument here is the assumption that all keyword
indices necessarily map into positional indices.  This may be the case with
the use-case you had in mind.  But for other use-cases brought up so far
that assumption is false.  Your approach would make those use cases
extremely difficult if not impossible.

>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/WZZRIT7XOBTIN4PHVN24MNTESX73Q4UW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to