Because

>>> dict(foo=:1)
  File "<string>", line 1
    dict(foo=:1)
             ^
SyntaxError: invalid syntax

I don't see how that's an argument, we are talking about a syntax extension.   Slice builder syntax is only every allowed in a subscript.  Edit my original grammar change proposal to:

```
subscriptlist: ... | kwargsubscript (','  kwargsubscript )* [',']
kwargsubscript: NAME '=' subscript
```    

Now slices are allowed in keyword arguments.

-- Caleb Donovick

On Tue, Oct 8, 2019 at 1:09 PM Anders Hovmöller <boxed@killingar.net> wrote:


On 8 Oct 2019, at 18:59, Todd <toddrjen@gmail.com> wrote:




On Tue, Oct 8, 2019, 12:46 Anders Hovmöller <boxed@killingar.net> wrote:


On 8 Oct 2019, at 18:35, Todd <toddrjen@gmail.com> wrote:

On Tue, Oct 8, 2019 at 12:22 PM Andrew Barnert via Python-ideas <python-ideas@python.org> wrote:
On Oct 7, 2019, at 21:21, Caleb Donovick <donovick@cs.stanford.edu> wrote:
> 
> >  But what if you wanted to take both positional AND keyword?
> 
> I was suggesting that that wouldn't be allowed.  So subscript either has a single argument, a tuple of arguments, or a dictionary of arguments.  Allowing both has some advantages but is less cleanly integratible. 

The problem is that half the examples people conjure up involve both: using the keywords as options, while using the positional arguments for the actual indices. Calling the proposal “kwargs in getitem” encourages that thinking, because that’s the prototypical reason for kwargs in function calls.

If there were non-toy examples, so people didn’t have to imagine how it would be used for themselves, that might be helpful.


Here is an example modified from the xarray documentation, where you want to assign to a subset of your array:

da.isel(space=0, time=slice(None, 2))[...] = spam

With this syntax this could be changed to:

da[space=0, time=:2] = spam

I must have missed something... when did the proposal we're discussing start allowing : there? 

/ Anders

Why wouldn't it?  

Because

>>> dict(foo=:1)
  File "<string>", line 1
    dict(foo=:1)
             ^
SyntaxError: invalid syntax

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@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/ZJDP2H7EVGOFDVAE4ZYLUMKNNZN6UFCR/
Code of Conduct: http://python.org/psf/codeofconduct/