Here's a script to find places where this proposal could be useful. Try it
on a directory.

```python
import ast
import linecache
import sys
from pathlib import Path

root = Path(sys.argv[1])


def main():
    for path in root.rglob("**/*.py"):
        source = path.read_text()
        try:
            tree = ast.parse(source)
        except SyntaxError:
            continue

        for node in ast.walk(tree):
            if isinstance(node, ast.Call):
                def is_same_name(keyword: ast.keyword):
                    return (
                            isinstance(keyword.value, ast.Name)
                            and keyword.value.id == keyword.arg
                    )

                args = node.keywords
            elif isinstance(node, ast.Dict):
                def is_same_name(pair):
                    key, value = pair
                    return (
                            isinstance(value, ast.Name) and
                            isinstance(key, (ast.Constant, ast.Str)) and
                            value.id == key.s
                    )

                args = zip(node.keys, node.values)
            else:
                continue

            threshold = 3
            if sum(map(is_same_name, args)) < threshold:
                continue
            print(f'File "{path}", line {node.lineno}')
            for lineno in range(node.lineno, node.end_lineno + 1):
                print(linecache.getline(str(path), lineno), end="")
            print()


main()
```

On Fri, Apr 17, 2020 at 8:40 PM Paul Svensson <paul-pyt...@svensson.org>
wrote:

> On Fri, 17 Apr 2020, Alex Hall wrote:
>
> >Perhaps an easier next step would be to get better data about people's
> opinions with a simple poll? Is there a standard way to vote on things in
> this
> >but it's easy and may inform what to do next.
>
> For what it's worth, I'm a strong -1 on this whole thing, regardless of
> syntax.
> I think passing a lot of same-named parameters is an anti-pattern, that
> should be discouraged, not made easier.
> Passing an occasional x=x to so some function no disaster;
> if it happens often enough to be a problem, IMNSHO, you should look to
> change your coding style, not the language.
>
>         /Paul
> _______________________________________________
> 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/B3R63FC2NUOJUJRVQDFHIV4BARKXLYTP/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/QNWCWM65TPYBYIHRBL6EUGM42LHMEGDL/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to