But this means the reader could miss the star, especially with a very large function call over multiple lines, and if that reader happens to use that particular function A LOT and know the parameter order without having to look they would pretty easily believe the arguments are doing something different than what is actually happening.

Thank you for giving an actual scenario explaining how confusion could occur. Personally I think it's a very unlikely edge case (particularly someone comparing argument order to their memory), and someone falsely thinking that correct code is buggy is not a major problem anyway.

I propose using two asterisks instead of one as the magical argument separator. `**` is more closely associated with keyword arguments, it's harder to visually miss, and it avoids the problem mentioned [here](https://mail.python.org/archives/list/python-ideas@python.org/message/XFZ5VH5DKIFJ423FKCTHXPHDONAO3DFI/) which I think was a valid point. So a call would look like:

    function(**, dunder, invert, private, meta, ignorecase)