-
Notifications
You must be signed in to change notification settings - Fork 1.4k
[pyupgrade
] Better messages and diagnostic range (UP015
)
#15872
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
Conversation
Is it necessary to add a "Preview" section to the rule documentation? |
|
code | total | + violation | - violation | + fix | - fix |
---|---|---|---|---|---|
UP015 | 110 | 55 | 55 | 0 | 0 |
Linter (preview)
ℹ️ ecosystem check detected linter changes. (+55 -55 violations, +0 -0 fixes in 3 projects; 52 projects unchanged)
binary-husky/gpt_academic (+46 -46 violations, +0 -0 fixes)
ruff check --no-cache --exit-zero --ignore RUF9 --no-fix --output-format concise --preview
- check_proxy.py:161:14: UP015 [*] Unnecessary open mode parameters + check_proxy.py:161:32: UP015 [*] Unnecessary mode argument - check_proxy.py:191:14: UP015 [*] Unnecessary open mode parameters + check_proxy.py:191:32: UP015 [*] Unnecessary mode argument - crazy_functions/Conversation_To_File.py:73:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/Conversation_To_File.py:73:30: UP015 [*] Unnecessary mode argument - crazy_functions/Conversation_To_File.py:87:10: UP015 [*] Unnecessary open mode parameters + crazy_functions/Conversation_To_File.py:87:26: UP015 [*] Unnecessary mode argument - crazy_functions/Latex_Project_Polish.py:66:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/Latex_Project_Polish.py:66:23: UP015 [*] Unnecessary mode argument - crazy_functions/Latex_Project_Translate_Legacy.py:46:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/Latex_Project_Translate_Legacy.py:46:23: UP015 [*] Unnecessary mode argument - crazy_functions/Markdown_Translate.py:61:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/Markdown_Translate.py:61:23: UP015 [*] Unnecessary mode argument - crazy_functions/SourceCode_Analyse.py:22:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/SourceCode_Analyse.py:22:23: UP015 [*] Unnecessary mode argument - crazy_functions/SourceCode_Comment.py:33:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/SourceCode_Comment.py:33:23: UP015 [*] Unnecessary mode argument - crazy_functions/SourceCode_Comment.py:79:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/SourceCode_Comment.py:79:76: UP015 [*] Unnecessary mode argument - crazy_functions/agent_fns/python_comment_agent.py:207:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/agent_fns/python_comment_agent.py:207:25: UP015 [*] Unnecessary mode argument - crazy_functions/ast_fns/comment_remove.py:48:10: UP015 [*] Unnecessary open mode parameters + crazy_functions/ast_fns/comment_remove.py:48:28: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_actions.py:239:10: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_actions.py:239:24: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_actions.py:322:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_actions.py:322:29: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_actions.py:358:18: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_actions.py:358:33: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_toolbox.py:294:14: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_toolbox.py:294:25: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_toolbox.py:321:18: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_toolbox.py:321:29: UP015 [*] Unnecessary mode argument - crazy_functions/latex_fns/latex_toolbox.py:386:22: UP015 [*] Unnecessary open mode parameters + crazy_functions/latex_fns/latex_toolbox.py:386:32: UP015 [*] Unnecessary mode argument - crazy_functions/pdf_fns/parse_pdf_via_doc2x.py:250:18: UP015 [*] Unnecessary open mode parameters + crazy_functions/pdf_fns/parse_pdf_via_doc2x.py:250:37: UP015 [*] Unnecessary mode argument - crazy_functions/pdf_fns/parse_pdf_via_doc2x.py:269:18: UP015 [*] Unnecessary open mode parameters + crazy_functions/pdf_fns/parse_pdf_via_doc2x.py:269:37: UP015 [*] Unnecessary mode argument - crazy_functions/pdf_fns/parse_pdf_via_doc2x.py:298:18: UP015 [*] Unnecessary open mode parameters ... 51 additional changes omitted for project
latchbio/latch (+8 -8 violations, +0 -0 fixes)
ruff check --no-cache --exit-zero --ignore RUF9 --no-fix --output-format concise --preview
- src/latch/executions.py:56:14: UP015 [*] Unnecessary open mode parameters + src/latch/executions.py:56:36: UP015 [*] Unnecessary mode argument - src/latch_cli/exceptions/traceback.py:24:14: UP015 [*] Unnecessary open mode parameters + src/latch_cli/exceptions/traceback.py:24:34: UP015 [*] Unnecessary mode argument - src/latch_cli/main.py:975:10: UP015 [*] Unnecessary open mode parameters + src/latch_cli/main.py:975:57: UP015 [*] Unnecessary mode argument - src/latch_cli/services/get_executions.py:377:14: UP015 [*] Unnecessary open mode parameters + src/latch_cli/services/get_executions.py:377:29: UP015 [*] Unnecessary mode argument - src/latch_cli/services/launch.py:48:10: UP015 [*] Unnecessary open mode parameters + src/latch_cli/services/launch.py:48:28: UP015 [*] Unnecessary mode argument ... 6 additional changes omitted for project
milvus-io/pymilvus (+1 -1 violations, +0 -0 fixes)
ruff check --no-cache --exit-zero --ignore RUF9 --no-fix --output-format concise --preview
- examples/bulk_import/example_bulkwriter.py:263:18: UP015 [*] Unnecessary open mode parameters + examples/bulk_import/example_bulkwriter.py:263:34: UP015 [*] Unnecessary mode argument
Changes by rule (1 rules affected)
code | total | + violation | - violation | + fix | - fix |
---|---|---|---|---|---|
UP015 | 110 | 55 | 55 | 0 | 0 |
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.
Thanks. A few small nits but overall this looks good
crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs
Outdated
Show resolved
Hide resolved
crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs
Outdated
Show resolved
Hide resolved
…P015`) (#16672) ## Summary This PR stabilizes the behavior change introduced in #15872 The diagnostic range is now the range of the redundant `mode` argument where it previously was the range of the entire `open` call: Before: ``` UP015.py:2:1: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^^^^^^^^^^^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` Now: ``` UP015.py:2:13: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` This is a breaking change because it may require moving a `noqa` comment onto a different line, e.g if you have ```py open( "foo", "Ur", ) # noqa: UP015 ``` Needs to be rewritten to ```py open( "foo", "Ur", # noqa: UP015 ) ``` There have been now new issues or PRs since the new preview behavior was implemented. It first was released as part of Ruff 0.9.5 on the 5th of Feb (a little more than a month ago) ## Test Plan I reviewed the snapshot tests
…P015`) (#16672) ## Summary This PR stabilizes the behavior change introduced in #15872 The diagnostic range is now the range of the redundant `mode` argument where it previously was the range of the entire `open` call: Before: ``` UP015.py:2:1: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^^^^^^^^^^^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` Now: ``` UP015.py:2:13: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` This is a breaking change because it may require moving a `noqa` comment onto a different line, e.g if you have ```py open( "foo", "Ur", ) # noqa: UP015 ``` Needs to be rewritten to ```py open( "foo", "Ur", # noqa: UP015 ) ``` There have been now new issues or PRs since the new preview behavior was implemented. It first was released as part of Ruff 0.9.5 on the 5th of Feb (a little more than a month ago) ## Test Plan I reviewed the snapshot tests
…P015`) (#16672) ## Summary This PR stabilizes the behavior change introduced in #15872 The diagnostic range is now the range of the redundant `mode` argument where it previously was the range of the entire `open` call: Before: ``` UP015.py:2:1: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^^^^^^^^^^^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` Now: ``` UP015.py:2:13: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") | ^^^^ UP015 3 | open("foo", "Ub") 4 | open("foo", "rUb") | = help: Remove mode argument ``` This is a breaking change because it may require moving a `noqa` comment onto a different line, e.g if you have ```py open( "foo", "Ur", ) # noqa: UP015 ``` Needs to be rewritten to ```py open( "foo", "Ur", # noqa: UP015 ) ``` There have been now new issues or PRs since the new preview behavior was implemented. It first was released as part of Ruff 0.9.5 on the 5th of Feb (a little more than a month ago) ## Test Plan I reviewed the snapshot tests
Summary
Resolves #15863.
In preview, diagnostic ranges will now be limited to that of the argument. Rule documentation, variable names, error messages and fix titles have all been modified to use "argument" consistently.
Test Plan
cargo nextest run
andcargo insta test
.