Thanks Eric, On Fri, Sep 25, 2020 at 09:23:56AM +0100, Eric Wieser wrote:
Thanks for the PEP, and for pinging the numpy list about it. Some comments:
Sequence unpacking remains a syntax error inside subscripts: Reason: unpacking items would result it being immediately repacked into a tuple
A simple counter-example is [:, *args, :], which could be treated as [(slice(None), *args, slice(None))]. When there are index objects to the left or right of *args, it enables : syntax in places that would otherwise be forbidden.
This use-case is persuasive to me. I recommend that the PEP be changed to allow `*args` inside subscripts.
Keyword-only subscripts are permitted. The positional index will be the empty tuple
As discussed on the numpy mailing list, a better approach might be to not pass an argument at all, so that obj[spam=1, eggs=2] calls type(obj).__getitem__(obj, spam=1, eggs=2). Objects which want to support keyword-only indexing can provide a default of their own (and are free to choose between () and None, while objects which do not would just raise TypeError due to the missing positional argument
That's fine for getitem and delitem, but doesn't work with setitem. -- Steve