We are discussing a proposal to extend Python's syntax to allow
    d[1, 2, a=3, b=4]

We are also discussing the associated semantics. At present
    d[1, 2]
    d[(1, 2)]
are semantically equivalent.

There is a proposal, that
    d[1, 2, a=3, b=4]
    d[(1, 2), a=3, b=4]
be semantically equivalent.

I find this troubling, for example because
   fn(1, 2, a=3, b=4)
   fn((1, 2), a=3, b=4)
are semantically different.

Here's another example. If we are allowed to write
    d[*argv, a=3, b=4]
then the proposal makes this equivalent to
   d[argv, a=3, b=4]
when type(argv) is tuple.

Consider now
    >>> def fn(*argv): print(argv)
    >>> argv = 'key'
    >>> fn(*argv)
    ('k', 'e', 'y')

I think it would be a trap for the unwary, that the equivalence of
   d[argv, a=3, b=4]
   d[*argv, a=3, b=4]
depends on the type of argv.
   
The root of the proposal that
    d[1, 2, a=3, b=4]
    d[(1, 2), a=3, b=4]
be semantically equivalent is this: At present
    d[1, 2]
    d[(1, 2)]
are semantically equivalent.

Why not instead , as part of the proposed semantics, make
    d[1, 2]
    d[(1, 2)]
semantically different, but only for those classes that ask for it. (This would automatically preserve backwards compatibility.)

I believe this is possible and straightforward in the future, and also in the present via the 'o' and K mechanism. I'm happy to implement this in kwkeys, when I have time.

An aside: I also strongly believe that writing and studying examples that use the new syntax, via the 'o' and K mechanism, is essential to making good choices regarding the semantics, the writing and approval of the PEP, and the success of the extension to Python (should the PEP be accepted).

I hope this helps us come to a shared understanding.
-- 
Jonathan