[pylint] Add add_argument utility and autofix for PLW1514#8928
[pylint] Add add_argument utility and autofix for PLW1514#8928charliermarsh merged 7 commits intoastral-sh:mainfrom
pylint] Add add_argument utility and autofix for PLW1514#8928Conversation
|
|
|
||
| if checker.settings.target_version >= PythonVersion::Py310 { | ||
| diagnostic.set_fix(Fix::unsafe_edit(Edit::insertion( | ||
| ", encoding=\"locale\"".to_string(), |
There was a problem hiding this comment.
Would this introduce a syntax error if the call contains no arguments? Are you interested in writing a more robust add_argument utility, similar to the remove_argument that exists today?
There was a problem hiding this comment.
Yes it would. open() and similar calls all have a required first argument AFAIK but it's still a pretty dirty and unsafe fix.
I'd be interested in adding that utility for sure! Will set this to draft and use the autofix as a test case for the utility if there is no urgency behind it.
There was a problem hiding this comment.
Implemented a coarse first version which only handles keyword arguments, but does check for trailing commas and work with empty calls. It explicitly forbids positional arguments but could still maybe break when adding a first argument to a class instantiation.
I could either use the lexer to check for parentheses and panic if they aren't there and leave the implementation of that to a future PR or implement it in this one. What's your preference? If the latter is preferred, if you happen to know of a rule where something like that happens on which I can test the util in absence of unit test infrastructure let me know.
There was a problem hiding this comment.
I think it's fine to leave this as function-only for now, so we can assume the parentheses always exist.
pylint] Add autofix for PLW1514pylint] Add add_argument utility and autofix for PLW1514
591313e to
d4c7cca
Compare
parent astral-sh#15584 fix was made unsafe at astral-sh#8928
Summary
add_argumentsimilar to existingremove_argumentutility to safely add arguments to functions.PLW1514as per specs requested in Feature request: PLW1514 autofix #8883 as a testTest Plan
Checks on existing fixtures as well as additional test and fixture for Python 3.9 and lower fix
Issue Link
Closes: #8883