-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pylint
] Add add_argument
utility and autofix for PLW1514
#8928
Conversation
|
|
||
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks @qdegraaf!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 PLW1514
pylint
] Add add_argument
utility and autofix for PLW1514
591313e
to
d4c7cca
Compare
Summary
add_argument
similar to existingremove_argument
utility to safely add arguments to functions.PLW1514
as 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