diff --git a/crates/ruff_linter/src/rules/pyupgrade/mod.rs b/crates/ruff_linter/src/rules/pyupgrade/mod.rs index f10421e4ffaeef..36a2c980626e8e 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/mod.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/mod.rs @@ -116,6 +116,25 @@ mod tests { Ok(()) } + #[test_case(Rule::RedundantOpenModes, Path::new("UP015.py"))] + #[test_case(Rule::RedundantOpenModes, Path::new("UP015_1.py"))] + fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> { + let snapshot = format!( + "preview__{}_{}", + rule_code.noqa_code(), + path.to_string_lossy() + ); + let diagnostics = test_path( + Path::new("pyupgrade").join(path).as_path(), + &settings::LinterSettings { + preview: PreviewMode::Enabled, + ..settings::LinterSettings::for_rule(rule_code) + }, + )?; + assert_messages!(snapshot, diagnostics); + Ok(()) + } + #[test] fn up007_preview() -> Result<()> { let diagnostics = test_path( diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs index b08937a06e8efa..b6fcfbaf7fd40e 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/redundant_open_modes.rs @@ -2,7 +2,6 @@ use anyhow::Result; use ruff_diagnostics::{AlwaysFixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, ViolationMetadata}; use ruff_python_ast::{self as ast, Expr}; -use ruff_python_codegen::Stylist; use ruff_python_parser::{TokenKind, Tokens}; use ruff_python_stdlib::open_mode::OpenMode; use ruff_text_size::{Ranged, TextSize}; @@ -10,10 +9,10 @@ use ruff_text_size::{Ranged, TextSize}; use crate::checkers::ast::Checker; /// ## What it does -/// Checks for redundant `open` mode parameters. +/// Checks for redundant `open` mode arguments. /// /// ## Why is this bad? -/// Redundant `open` mode parameters are unnecessary and should be removed to +/// Redundant `open` mode arguments are unnecessary and should be removed to /// avoid confusion. /// /// ## Example @@ -40,18 +39,18 @@ impl AlwaysFixableViolation for RedundantOpenModes { fn message(&self) -> String { let RedundantOpenModes { replacement } = self; if replacement.is_empty() { - "Unnecessary open mode parameters".to_string() + "Unnecessary mode argument".to_string() } else { - format!("Unnecessary open mode parameters, use \"{replacement}\"") + format!("Unnecessary modes, use `{replacement}`") } } fn fix_title(&self) -> String { let RedundantOpenModes { replacement } = self; if replacement.is_empty() { - "Remove open mode parameters".to_string() + "Remove mode argument".to_string() } else { - format!("Replace with \"{replacement}\"") + format!("Replace with `{replacement}`") } } } @@ -71,10 +70,10 @@ pub(crate) fn redundant_open_modes(checker: &mut Checker, call: &ast::ExprCall) return; } - let Some(mode_param) = call.arguments.find_argument_value("mode", 1) else { + let Some(mode_arg) = call.arguments.find_argument_value("mode", 1) else { return; }; - let Expr::StringLiteral(ast::ExprStringLiteral { value, .. }) = &mode_param else { + let Expr::StringLiteral(ast::ExprStringLiteral { value, .. }) = &mode_arg else { return; }; let Ok(mode) = OpenMode::from_chars(value.chars()) else { @@ -82,57 +81,60 @@ pub(crate) fn redundant_open_modes(checker: &mut Checker, call: &ast::ExprCall) }; let reduced = mode.reduce(); if reduced != mode { - checker.diagnostics.push(create_diagnostic( - call, - mode_param, - reduced, - checker.tokens(), - checker.stylist(), - )); + checker + .diagnostics + .push(create_diagnostic(call, mode_arg, reduced, checker)); } } fn create_diagnostic( call: &ast::ExprCall, - mode_param: &Expr, + mode_arg: &Expr, mode: OpenMode, - tokens: &Tokens, - stylist: &Stylist, + checker: &Checker, ) -> Diagnostic { + let range = if checker.settings.preview.is_enabled() { + mode_arg.range() + } else { + call.range + }; + let mut diagnostic = Diagnostic::new( RedundantOpenModes { replacement: mode.to_string(), }, - call.range(), + range, ); if mode.is_empty() { - diagnostic - .try_set_fix(|| create_remove_param_fix(call, mode_param, tokens).map(Fix::safe_edit)); + diagnostic.try_set_fix(|| { + create_remove_argument_fix(call, mode_arg, checker.tokens()).map(Fix::safe_edit) + }); } else { + let stylist = checker.stylist(); diagnostic.set_fix(Fix::safe_edit(Edit::range_replacement( format!("{}{mode}{}", stylist.quote(), stylist.quote()), - mode_param.range(), + mode_arg.range(), ))); } diagnostic } -fn create_remove_param_fix( +fn create_remove_argument_fix( call: &ast::ExprCall, - mode_param: &Expr, + mode_arg: &Expr, tokens: &Tokens, ) -> Result { - // Find the last comma before mode_param and create a deletion fix - // starting from the comma and ending after mode_param. + // Find the last comma before mode_arg and create a deletion fix + // starting from the comma and ending after mode_arg. let mut fix_start: Option = None; let mut fix_end: Option = None; let mut is_first_arg: bool = false; let mut delete_first_arg: bool = false; for token in tokens.in_range(call.range()) { - if token.start() == mode_param.start() { + if token.start() == mode_arg.start() { if is_first_arg { delete_first_arg = true; continue; diff --git a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015.py.snap b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015.py.snap index 57b1ab13c81c88..d171df8601f764 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015.py.snap +++ b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015.py.snap @@ -1,14 +1,14 @@ --- source: crates/ruff_linter/src/rules/pyupgrade/mod.rs --- -UP015.py:1:1: UP015 [*] Unnecessary open mode parameters +UP015.py:1:1: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") | ^^^^^^^^^^^^^^^^ UP015 2 | open("foo", "Ur") 3 | open("foo", "Ub") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 1 |-open("foo", "U") @@ -17,7 +17,7 @@ UP015.py:1:1: UP015 [*] Unnecessary open mode parameters 3 3 | open("foo", "Ub") 4 4 | open("foo", "rUb") -UP015.py:2:1: UP015 [*] Unnecessary open mode parameters +UP015.py:2:1: UP015 [*] Unnecessary mode argument | 1 | open("foo", "U") 2 | open("foo", "Ur") @@ -25,7 +25,7 @@ UP015.py:2:1: UP015 [*] Unnecessary open mode parameters 3 | open("foo", "Ub") 4 | open("foo", "rUb") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 1 1 | open("foo", "U") @@ -35,7 +35,7 @@ UP015.py:2:1: UP015 [*] Unnecessary open mode parameters 4 4 | open("foo", "rUb") 5 5 | open("foo", "r") -UP015.py:3:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:3:1: UP015 [*] Unnecessary modes, use `rb` | 1 | open("foo", "U") 2 | open("foo", "Ur") @@ -44,7 +44,7 @@ UP015.py:3:1: UP015 [*] Unnecessary open mode parameters, use "rb" 4 | open("foo", "rUb") 5 | open("foo", "r") | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 1 1 | open("foo", "U") @@ -55,7 +55,7 @@ UP015.py:3:1: UP015 [*] Unnecessary open mode parameters, use "rb" 5 5 | open("foo", "r") 6 6 | open("foo", "rt") -UP015.py:4:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:4:1: UP015 [*] Unnecessary modes, use `rb` | 2 | open("foo", "Ur") 3 | open("foo", "Ub") @@ -64,7 +64,7 @@ UP015.py:4:1: UP015 [*] Unnecessary open mode parameters, use "rb" 5 | open("foo", "r") 6 | open("foo", "rt") | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 1 1 | open("foo", "U") @@ -76,7 +76,7 @@ UP015.py:4:1: UP015 [*] Unnecessary open mode parameters, use "rb" 6 6 | open("foo", "rt") 7 7 | open("f", "r", encoding="UTF-8") -UP015.py:5:1: UP015 [*] Unnecessary open mode parameters +UP015.py:5:1: UP015 [*] Unnecessary mode argument | 3 | open("foo", "Ub") 4 | open("foo", "rUb") @@ -85,7 +85,7 @@ UP015.py:5:1: UP015 [*] Unnecessary open mode parameters 6 | open("foo", "rt") 7 | open("f", "r", encoding="UTF-8") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 2 2 | open("foo", "Ur") @@ -97,7 +97,7 @@ UP015.py:5:1: UP015 [*] Unnecessary open mode parameters 7 7 | open("f", "r", encoding="UTF-8") 8 8 | open("f", "wt") -UP015.py:6:1: UP015 [*] Unnecessary open mode parameters +UP015.py:6:1: UP015 [*] Unnecessary mode argument | 4 | open("foo", "rUb") 5 | open("foo", "r") @@ -106,7 +106,7 @@ UP015.py:6:1: UP015 [*] Unnecessary open mode parameters 7 | open("f", "r", encoding="UTF-8") 8 | open("f", "wt") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 3 3 | open("foo", "Ub") @@ -118,7 +118,7 @@ UP015.py:6:1: UP015 [*] Unnecessary open mode parameters 8 8 | open("f", "wt") 9 9 | open("f", "tw") -UP015.py:7:1: UP015 [*] Unnecessary open mode parameters +UP015.py:7:1: UP015 [*] Unnecessary mode argument | 5 | open("foo", "r") 6 | open("foo", "rt") @@ -127,7 +127,7 @@ UP015.py:7:1: UP015 [*] Unnecessary open mode parameters 8 | open("f", "wt") 9 | open("f", "tw") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 4 4 | open("foo", "rUb") @@ -139,7 +139,7 @@ UP015.py:7:1: UP015 [*] Unnecessary open mode parameters 9 9 | open("f", "tw") 10 10 | -UP015.py:8:1: UP015 [*] Unnecessary open mode parameters, use "w" +UP015.py:8:1: UP015 [*] Unnecessary modes, use `w` | 6 | open("foo", "rt") 7 | open("f", "r", encoding="UTF-8") @@ -147,7 +147,7 @@ UP015.py:8:1: UP015 [*] Unnecessary open mode parameters, use "w" | ^^^^^^^^^^^^^^^ UP015 9 | open("f", "tw") | - = help: Replace with "w" + = help: Replace with `w` ℹ Safe fix 5 5 | open("foo", "r") @@ -159,7 +159,7 @@ UP015.py:8:1: UP015 [*] Unnecessary open mode parameters, use "w" 10 10 | 11 11 | with open("foo", "U") as f: -UP015.py:9:1: UP015 [*] Unnecessary open mode parameters, use "w" +UP015.py:9:1: UP015 [*] Unnecessary modes, use `w` | 7 | open("f", "r", encoding="UTF-8") 8 | open("f", "wt") @@ -168,7 +168,7 @@ UP015.py:9:1: UP015 [*] Unnecessary open mode parameters, use "w" 10 | 11 | with open("foo", "U") as f: | - = help: Replace with "w" + = help: Replace with `w` ℹ Safe fix 6 6 | open("foo", "rt") @@ -180,7 +180,7 @@ UP015.py:9:1: UP015 [*] Unnecessary open mode parameters, use "w" 11 11 | with open("foo", "U") as f: 12 12 | pass -UP015.py:11:6: UP015 [*] Unnecessary open mode parameters +UP015.py:11:6: UP015 [*] Unnecessary mode argument | 9 | open("f", "tw") 10 | @@ -189,7 +189,7 @@ UP015.py:11:6: UP015 [*] Unnecessary open mode parameters 12 | pass 13 | with open("foo", "Ur") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 8 8 | open("f", "wt") @@ -201,7 +201,7 @@ UP015.py:11:6: UP015 [*] Unnecessary open mode parameters 13 13 | with open("foo", "Ur") as f: 14 14 | pass -UP015.py:13:6: UP015 [*] Unnecessary open mode parameters +UP015.py:13:6: UP015 [*] Unnecessary mode argument | 11 | with open("foo", "U") as f: 12 | pass @@ -210,7 +210,7 @@ UP015.py:13:6: UP015 [*] Unnecessary open mode parameters 14 | pass 15 | with open("foo", "Ub") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 10 10 | @@ -222,7 +222,7 @@ UP015.py:13:6: UP015 [*] Unnecessary open mode parameters 15 15 | with open("foo", "Ub") as f: 16 16 | pass -UP015.py:15:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:15:6: UP015 [*] Unnecessary modes, use `rb` | 13 | with open("foo", "Ur") as f: 14 | pass @@ -231,7 +231,7 @@ UP015.py:15:6: UP015 [*] Unnecessary open mode parameters, use "rb" 16 | pass 17 | with open("foo", "rUb") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 12 12 | pass @@ -243,7 +243,7 @@ UP015.py:15:6: UP015 [*] Unnecessary open mode parameters, use "rb" 17 17 | with open("foo", "rUb") as f: 18 18 | pass -UP015.py:17:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:17:6: UP015 [*] Unnecessary modes, use `rb` | 15 | with open("foo", "Ub") as f: 16 | pass @@ -252,7 +252,7 @@ UP015.py:17:6: UP015 [*] Unnecessary open mode parameters, use "rb" 18 | pass 19 | with open("foo", "r") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 14 14 | pass @@ -264,7 +264,7 @@ UP015.py:17:6: UP015 [*] Unnecessary open mode parameters, use "rb" 19 19 | with open("foo", "r") as f: 20 20 | pass -UP015.py:19:6: UP015 [*] Unnecessary open mode parameters +UP015.py:19:6: UP015 [*] Unnecessary mode argument | 17 | with open("foo", "rUb") as f: 18 | pass @@ -273,7 +273,7 @@ UP015.py:19:6: UP015 [*] Unnecessary open mode parameters 20 | pass 21 | with open("foo", "rt") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 16 16 | pass @@ -285,7 +285,7 @@ UP015.py:19:6: UP015 [*] Unnecessary open mode parameters 21 21 | with open("foo", "rt") as f: 22 22 | pass -UP015.py:21:6: UP015 [*] Unnecessary open mode parameters +UP015.py:21:6: UP015 [*] Unnecessary mode argument | 19 | with open("foo", "r") as f: 20 | pass @@ -294,7 +294,7 @@ UP015.py:21:6: UP015 [*] Unnecessary open mode parameters 22 | pass 23 | with open("foo", "r", encoding="UTF-8") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 18 18 | pass @@ -306,7 +306,7 @@ UP015.py:21:6: UP015 [*] Unnecessary open mode parameters 23 23 | with open("foo", "r", encoding="UTF-8") as f: 24 24 | pass -UP015.py:23:6: UP015 [*] Unnecessary open mode parameters +UP015.py:23:6: UP015 [*] Unnecessary mode argument | 21 | with open("foo", "rt") as f: 22 | pass @@ -315,7 +315,7 @@ UP015.py:23:6: UP015 [*] Unnecessary open mode parameters 24 | pass 25 | with open("foo", "wt") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 20 20 | pass @@ -327,7 +327,7 @@ UP015.py:23:6: UP015 [*] Unnecessary open mode parameters 25 25 | with open("foo", "wt") as f: 26 26 | pass -UP015.py:25:6: UP015 [*] Unnecessary open mode parameters, use "w" +UP015.py:25:6: UP015 [*] Unnecessary modes, use `w` | 23 | with open("foo", "r", encoding="UTF-8") as f: 24 | pass @@ -335,7 +335,7 @@ UP015.py:25:6: UP015 [*] Unnecessary open mode parameters, use "w" | ^^^^^^^^^^^^^^^^^ UP015 26 | pass | - = help: Replace with "w" + = help: Replace with `w` ℹ Safe fix 22 22 | pass @@ -347,7 +347,7 @@ UP015.py:25:6: UP015 [*] Unnecessary open mode parameters, use "w" 27 27 | 28 28 | open(f("a", "b", "c"), "U") -UP015.py:28:1: UP015 [*] Unnecessary open mode parameters +UP015.py:28:1: UP015 [*] Unnecessary mode argument | 26 | pass 27 | @@ -355,7 +355,7 @@ UP015.py:28:1: UP015 [*] Unnecessary open mode parameters | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 29 | open(f("a", "b", "c"), "Ub") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 25 25 | with open("foo", "wt") as f: @@ -367,7 +367,7 @@ UP015.py:28:1: UP015 [*] Unnecessary open mode parameters 30 30 | 31 31 | with open(f("a", "b", "c"), "U") as f: -UP015.py:29:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:29:1: UP015 [*] Unnecessary modes, use `rb` | 28 | open(f("a", "b", "c"), "U") 29 | open(f("a", "b", "c"), "Ub") @@ -375,7 +375,7 @@ UP015.py:29:1: UP015 [*] Unnecessary open mode parameters, use "rb" 30 | 31 | with open(f("a", "b", "c"), "U") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 26 26 | pass @@ -387,7 +387,7 @@ UP015.py:29:1: UP015 [*] Unnecessary open mode parameters, use "rb" 31 31 | with open(f("a", "b", "c"), "U") as f: 32 32 | pass -UP015.py:31:6: UP015 [*] Unnecessary open mode parameters +UP015.py:31:6: UP015 [*] Unnecessary mode argument | 29 | open(f("a", "b", "c"), "Ub") 30 | @@ -396,7 +396,7 @@ UP015.py:31:6: UP015 [*] Unnecessary open mode parameters 32 | pass 33 | with open(f("a", "b", "c"), "Ub") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 28 28 | open(f("a", "b", "c"), "U") @@ -408,7 +408,7 @@ UP015.py:31:6: UP015 [*] Unnecessary open mode parameters 33 33 | with open(f("a", "b", "c"), "Ub") as f: 34 34 | pass -UP015.py:33:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:33:6: UP015 [*] Unnecessary modes, use `rb` | 31 | with open(f("a", "b", "c"), "U") as f: 32 | pass @@ -416,7 +416,7 @@ UP015.py:33:6: UP015 [*] Unnecessary open mode parameters, use "rb" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 34 | pass | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 30 30 | @@ -428,7 +428,7 @@ UP015.py:33:6: UP015 [*] Unnecessary open mode parameters, use "rb" 35 35 | 36 36 | with open("foo", "U") as fa, open("bar", "U") as fb: -UP015.py:36:6: UP015 [*] Unnecessary open mode parameters +UP015.py:36:6: UP015 [*] Unnecessary mode argument | 34 | pass 35 | @@ -437,7 +437,7 @@ UP015.py:36:6: UP015 [*] Unnecessary open mode parameters 37 | pass 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 33 33 | with open(f("a", "b", "c"), "Ub") as f: @@ -449,7 +449,7 @@ UP015.py:36:6: UP015 [*] Unnecessary open mode parameters 38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: 39 39 | pass -UP015.py:36:30: UP015 [*] Unnecessary open mode parameters +UP015.py:36:30: UP015 [*] Unnecessary mode argument | 34 | pass 35 | @@ -458,7 +458,7 @@ UP015.py:36:30: UP015 [*] Unnecessary open mode parameters 37 | pass 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 33 33 | with open(f("a", "b", "c"), "Ub") as f: @@ -470,7 +470,7 @@ UP015.py:36:30: UP015 [*] Unnecessary open mode parameters 38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: 39 39 | pass -UP015.py:38:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:38:6: UP015 [*] Unnecessary modes, use `rb` | 36 | with open("foo", "U") as fa, open("bar", "U") as fb: 37 | pass @@ -478,7 +478,7 @@ UP015.py:38:6: UP015 [*] Unnecessary open mode parameters, use "rb" | ^^^^^^^^^^^^^^^^^ UP015 39 | pass | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 35 35 | @@ -490,7 +490,7 @@ UP015.py:38:6: UP015 [*] Unnecessary open mode parameters, use "rb" 40 40 | 41 41 | open("foo", mode="U") -UP015.py:38:31: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:38:31: UP015 [*] Unnecessary modes, use `rb` | 36 | with open("foo", "U") as fa, open("bar", "U") as fb: 37 | pass @@ -498,7 +498,7 @@ UP015.py:38:31: UP015 [*] Unnecessary open mode parameters, use "rb" | ^^^^^^^^^^^^^^^^^ UP015 39 | pass | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 35 35 | @@ -510,7 +510,7 @@ UP015.py:38:31: UP015 [*] Unnecessary open mode parameters, use "rb" 40 40 | 41 41 | open("foo", mode="U") -UP015.py:41:1: UP015 [*] Unnecessary open mode parameters +UP015.py:41:1: UP015 [*] Unnecessary mode argument | 39 | pass 40 | @@ -519,7 +519,7 @@ UP015.py:41:1: UP015 [*] Unnecessary open mode parameters 42 | open(name="foo", mode="U") 43 | open(mode="U", name="foo") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: @@ -531,14 +531,14 @@ UP015.py:41:1: UP015 [*] Unnecessary open mode parameters 43 43 | open(mode="U", name="foo") 44 44 | -UP015.py:42:1: UP015 [*] Unnecessary open mode parameters +UP015.py:42:1: UP015 [*] Unnecessary mode argument | 41 | open("foo", mode="U") 42 | open(name="foo", mode="U") | ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 43 | open(mode="U", name="foo") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 39 39 | pass @@ -550,7 +550,7 @@ UP015.py:42:1: UP015 [*] Unnecessary open mode parameters 44 44 | 45 45 | with open("foo", mode="U") as f: -UP015.py:43:1: UP015 [*] Unnecessary open mode parameters +UP015.py:43:1: UP015 [*] Unnecessary mode argument | 41 | open("foo", mode="U") 42 | open(name="foo", mode="U") @@ -559,7 +559,7 @@ UP015.py:43:1: UP015 [*] Unnecessary open mode parameters 44 | 45 | with open("foo", mode="U") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 40 40 | @@ -571,7 +571,7 @@ UP015.py:43:1: UP015 [*] Unnecessary open mode parameters 45 45 | with open("foo", mode="U") as f: 46 46 | pass -UP015.py:45:6: UP015 [*] Unnecessary open mode parameters +UP015.py:45:6: UP015 [*] Unnecessary mode argument | 43 | open(mode="U", name="foo") 44 | @@ -580,7 +580,7 @@ UP015.py:45:6: UP015 [*] Unnecessary open mode parameters 46 | pass 47 | with open(name="foo", mode="U") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 42 42 | open(name="foo", mode="U") @@ -592,7 +592,7 @@ UP015.py:45:6: UP015 [*] Unnecessary open mode parameters 47 47 | with open(name="foo", mode="U") as f: 48 48 | pass -UP015.py:47:6: UP015 [*] Unnecessary open mode parameters +UP015.py:47:6: UP015 [*] Unnecessary mode argument | 45 | with open("foo", mode="U") as f: 46 | pass @@ -601,7 +601,7 @@ UP015.py:47:6: UP015 [*] Unnecessary open mode parameters 48 | pass 49 | with open(mode="U", name="foo") as f: | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 44 44 | @@ -613,7 +613,7 @@ UP015.py:47:6: UP015 [*] Unnecessary open mode parameters 49 49 | with open(mode="U", name="foo") as f: 50 50 | pass -UP015.py:49:6: UP015 [*] Unnecessary open mode parameters +UP015.py:49:6: UP015 [*] Unnecessary mode argument | 47 | with open(name="foo", mode="U") as f: 48 | pass @@ -621,7 +621,7 @@ UP015.py:49:6: UP015 [*] Unnecessary open mode parameters | ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 50 | pass | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 46 46 | pass @@ -633,7 +633,7 @@ UP015.py:49:6: UP015 [*] Unnecessary open mode parameters 51 51 | 52 52 | open("foo", mode="Ub") -UP015.py:52:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:52:1: UP015 [*] Unnecessary modes, use `rb` | 50 | pass 51 | @@ -642,7 +642,7 @@ UP015.py:52:1: UP015 [*] Unnecessary open mode parameters, use "rb" 53 | open(name="foo", mode="Ub") 54 | open(mode="Ub", name="foo") | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 49 49 | with open(mode="U", name="foo") as f: @@ -654,14 +654,14 @@ UP015.py:52:1: UP015 [*] Unnecessary open mode parameters, use "rb" 54 54 | open(mode="Ub", name="foo") 55 55 | -UP015.py:53:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:53:1: UP015 [*] Unnecessary modes, use `rb` | 52 | open("foo", mode="Ub") 53 | open(name="foo", mode="Ub") | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 54 | open(mode="Ub", name="foo") | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 50 50 | pass @@ -673,7 +673,7 @@ UP015.py:53:1: UP015 [*] Unnecessary open mode parameters, use "rb" 55 55 | 56 56 | with open("foo", mode="Ub") as f: -UP015.py:54:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:54:1: UP015 [*] Unnecessary modes, use `rb` | 52 | open("foo", mode="Ub") 53 | open(name="foo", mode="Ub") @@ -682,7 +682,7 @@ UP015.py:54:1: UP015 [*] Unnecessary open mode parameters, use "rb" 55 | 56 | with open("foo", mode="Ub") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 51 51 | @@ -694,7 +694,7 @@ UP015.py:54:1: UP015 [*] Unnecessary open mode parameters, use "rb" 56 56 | with open("foo", mode="Ub") as f: 57 57 | pass -UP015.py:56:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:56:6: UP015 [*] Unnecessary modes, use `rb` | 54 | open(mode="Ub", name="foo") 55 | @@ -703,7 +703,7 @@ UP015.py:56:6: UP015 [*] Unnecessary open mode parameters, use "rb" 57 | pass 58 | with open(name="foo", mode="Ub") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 53 53 | open(name="foo", mode="Ub") @@ -715,7 +715,7 @@ UP015.py:56:6: UP015 [*] Unnecessary open mode parameters, use "rb" 58 58 | with open(name="foo", mode="Ub") as f: 59 59 | pass -UP015.py:58:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:58:6: UP015 [*] Unnecessary modes, use `rb` | 56 | with open("foo", mode="Ub") as f: 57 | pass @@ -724,7 +724,7 @@ UP015.py:58:6: UP015 [*] Unnecessary open mode parameters, use "rb" 59 | pass 60 | with open(mode="Ub", name="foo") as f: | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 55 55 | @@ -736,7 +736,7 @@ UP015.py:58:6: UP015 [*] Unnecessary open mode parameters, use "rb" 60 60 | with open(mode="Ub", name="foo") as f: 61 61 | pass -UP015.py:60:6: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:60:6: UP015 [*] Unnecessary modes, use `rb` | 58 | with open(name="foo", mode="Ub") as f: 59 | pass @@ -744,7 +744,7 @@ UP015.py:60:6: UP015 [*] Unnecessary open mode parameters, use "rb" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 61 | pass | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 57 57 | pass @@ -756,7 +756,7 @@ UP015.py:60:6: UP015 [*] Unnecessary open mode parameters, use "rb" 62 62 | 63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -UP015.py:63:1: UP015 [*] Unnecessary open mode parameters +UP015.py:63:1: UP015 [*] Unnecessary mode argument | 61 | pass 62 | @@ -765,7 +765,7 @@ UP015.py:63:1: UP015 [*] Unnecessary open mode parameters 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 60 60 | with open(mode="Ub", name="foo") as f: @@ -777,7 +777,7 @@ UP015.py:63:1: UP015 [*] Unnecessary open mode parameters 65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) 66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -UP015.py:64:1: UP015 [*] Unnecessary open mode parameters +UP015.py:64:1: UP015 [*] Unnecessary mode argument | 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') @@ -785,7 +785,7 @@ UP015.py:64:1: UP015 [*] Unnecessary open mode parameters 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 61 61 | pass @@ -797,7 +797,7 @@ UP015.py:64:1: UP015 [*] Unnecessary open mode parameters 66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 67 67 | -UP015.py:65:1: UP015 [*] Unnecessary open mode parameters +UP015.py:65:1: UP015 [*] Unnecessary mode argument | 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') @@ -805,7 +805,7 @@ UP015.py:65:1: UP015 [*] Unnecessary open mode parameters | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 62 62 | @@ -817,7 +817,7 @@ UP015.py:65:1: UP015 [*] Unnecessary open mode parameters 67 67 | 68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -UP015.py:66:1: UP015 [*] Unnecessary open mode parameters +UP015.py:66:1: UP015 [*] Unnecessary mode argument | 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) @@ -826,7 +826,7 @@ UP015.py:66:1: UP015 [*] Unnecessary open mode parameters 67 | 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) @@ -838,7 +838,7 @@ UP015.py:66:1: UP015 [*] Unnecessary open mode parameters 68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 69 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') -UP015.py:68:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:68:1: UP015 [*] Unnecessary modes, use `rb` | 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 67 | @@ -847,7 +847,7 @@ UP015.py:68:1: UP015 [*] Unnecessary open mode parameters, use "rb" 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) @@ -859,7 +859,7 @@ UP015.py:68:1: UP015 [*] Unnecessary open mode parameters, use "rb" 70 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) 71 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -UP015.py:69:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:69:1: UP015 [*] Unnecessary modes, use `rb` | 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') @@ -867,7 +867,7 @@ UP015.py:69:1: UP015 [*] Unnecessary open mode parameters, use "rb" 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) @@ -879,7 +879,7 @@ UP015.py:69:1: UP015 [*] Unnecessary open mode parameters, use "rb" 71 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 72 72 | -UP015.py:70:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:70:1: UP015 [*] Unnecessary modes, use `rb` | 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') @@ -887,7 +887,7 @@ UP015.py:70:1: UP015 [*] Unnecessary open mode parameters, use "rb" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 67 67 | @@ -899,7 +899,7 @@ UP015.py:70:1: UP015 [*] Unnecessary open mode parameters, use "rb" 72 72 | 73 73 | import aiofiles -UP015.py:71:1: UP015 [*] Unnecessary open mode parameters, use "rb" +UP015.py:71:1: UP015 [*] Unnecessary modes, use `rb` | 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) @@ -908,7 +908,7 @@ UP015.py:71:1: UP015 [*] Unnecessary open mode parameters, use "rb" 72 | 73 | import aiofiles | - = help: Replace with "rb" + = help: Replace with `rb` ℹ Safe fix 68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) @@ -920,7 +920,7 @@ UP015.py:71:1: UP015 [*] Unnecessary open mode parameters, use "rb" 73 73 | import aiofiles 74 74 | -UP015.py:75:1: UP015 [*] Unnecessary open mode parameters +UP015.py:75:1: UP015 [*] Unnecessary mode argument | 73 | import aiofiles 74 | @@ -929,7 +929,7 @@ UP015.py:75:1: UP015 [*] Unnecessary open mode parameters 76 | aiofiles.open("foo", "r") 77 | aiofiles.open("foo", mode="r") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 72 72 | @@ -941,14 +941,14 @@ UP015.py:75:1: UP015 [*] Unnecessary open mode parameters 77 77 | aiofiles.open("foo", mode="r") 78 78 | -UP015.py:76:1: UP015 [*] Unnecessary open mode parameters +UP015.py:76:1: UP015 [*] Unnecessary mode argument | 75 | aiofiles.open("foo", "U") 76 | aiofiles.open("foo", "r") | ^^^^^^^^^^^^^^^^^^^^^^^^^ UP015 77 | aiofiles.open("foo", mode="r") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 73 73 | import aiofiles @@ -960,7 +960,7 @@ UP015.py:76:1: UP015 [*] Unnecessary open mode parameters 78 78 | 79 79 | open("foo", "r+") -UP015.py:77:1: UP015 [*] Unnecessary open mode parameters +UP015.py:77:1: UP015 [*] Unnecessary mode argument | 75 | aiofiles.open("foo", "U") 76 | aiofiles.open("foo", "r") @@ -969,7 +969,7 @@ UP015.py:77:1: UP015 [*] Unnecessary open mode parameters 78 | 79 | open("foo", "r+") | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 74 74 | diff --git a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015_1.py.snap b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015_1.py.snap index 41be987802c07f..e727ebbd897a24 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015_1.py.snap +++ b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__UP015_1.py.snap @@ -1,15 +1,14 @@ --- source: crates/ruff_linter/src/rules/pyupgrade/mod.rs -snapshot_kind: text --- -UP015_1.py:3:5: UP015 [*] Unnecessary open mode parameters +UP015_1.py:3:5: UP015 [*] Unnecessary mode argument | 1 | # Not a valid type annotation but this test shouldn't result in a panic. 2 | # Refer: https://github.com/astral-sh/ruff/issues/11736 3 | x: 'open("foo", "r")' | ^^^^^^^^^^^^^^^^ UP015 | - = help: Remove open mode parameters + = help: Remove mode argument ℹ Safe fix 1 1 | # Not a valid type annotation but this test shouldn't result in a panic. diff --git a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015.py.snap b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015.py.snap new file mode 100644 index 00000000000000..b265b7e8030fc6 --- /dev/null +++ b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015.py.snap @@ -0,0 +1,982 @@ +--- +source: crates/ruff_linter/src/rules/pyupgrade/mod.rs +--- +UP015.py:1:13: UP015 [*] Unnecessary mode argument + | +1 | open("foo", "U") + | ^^^ UP015 +2 | open("foo", "Ur") +3 | open("foo", "Ub") + | + = help: Remove mode argument + +ℹ Safe fix +1 |-open("foo", "U") + 1 |+open("foo") +2 2 | open("foo", "Ur") +3 3 | open("foo", "Ub") +4 4 | open("foo", "rUb") + +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 + +ℹ Safe fix +1 1 | open("foo", "U") +2 |-open("foo", "Ur") + 2 |+open("foo") +3 3 | open("foo", "Ub") +4 4 | open("foo", "rUb") +5 5 | open("foo", "r") + +UP015.py:3:13: UP015 [*] Unnecessary modes, use `rb` + | +1 | open("foo", "U") +2 | open("foo", "Ur") +3 | open("foo", "Ub") + | ^^^^ UP015 +4 | open("foo", "rUb") +5 | open("foo", "r") + | + = help: Replace with `rb` + +ℹ Safe fix +1 1 | open("foo", "U") +2 2 | open("foo", "Ur") +3 |-open("foo", "Ub") + 3 |+open("foo", "rb") +4 4 | open("foo", "rUb") +5 5 | open("foo", "r") +6 6 | open("foo", "rt") + +UP015.py:4:13: UP015 [*] Unnecessary modes, use `rb` + | +2 | open("foo", "Ur") +3 | open("foo", "Ub") +4 | open("foo", "rUb") + | ^^^^^ UP015 +5 | open("foo", "r") +6 | open("foo", "rt") + | + = help: Replace with `rb` + +ℹ Safe fix +1 1 | open("foo", "U") +2 2 | open("foo", "Ur") +3 3 | open("foo", "Ub") +4 |-open("foo", "rUb") + 4 |+open("foo", "rb") +5 5 | open("foo", "r") +6 6 | open("foo", "rt") +7 7 | open("f", "r", encoding="UTF-8") + +UP015.py:5:13: UP015 [*] Unnecessary mode argument + | +3 | open("foo", "Ub") +4 | open("foo", "rUb") +5 | open("foo", "r") + | ^^^ UP015 +6 | open("foo", "rt") +7 | open("f", "r", encoding="UTF-8") + | + = help: Remove mode argument + +ℹ Safe fix +2 2 | open("foo", "Ur") +3 3 | open("foo", "Ub") +4 4 | open("foo", "rUb") +5 |-open("foo", "r") + 5 |+open("foo") +6 6 | open("foo", "rt") +7 7 | open("f", "r", encoding="UTF-8") +8 8 | open("f", "wt") + +UP015.py:6:13: UP015 [*] Unnecessary mode argument + | +4 | open("foo", "rUb") +5 | open("foo", "r") +6 | open("foo", "rt") + | ^^^^ UP015 +7 | open("f", "r", encoding="UTF-8") +8 | open("f", "wt") + | + = help: Remove mode argument + +ℹ Safe fix +3 3 | open("foo", "Ub") +4 4 | open("foo", "rUb") +5 5 | open("foo", "r") +6 |-open("foo", "rt") + 6 |+open("foo") +7 7 | open("f", "r", encoding="UTF-8") +8 8 | open("f", "wt") +9 9 | open("f", "tw") + +UP015.py:7:11: UP015 [*] Unnecessary mode argument + | +5 | open("foo", "r") +6 | open("foo", "rt") +7 | open("f", "r", encoding="UTF-8") + | ^^^ UP015 +8 | open("f", "wt") +9 | open("f", "tw") + | + = help: Remove mode argument + +ℹ Safe fix +4 4 | open("foo", "rUb") +5 5 | open("foo", "r") +6 6 | open("foo", "rt") +7 |-open("f", "r", encoding="UTF-8") + 7 |+open("f", encoding="UTF-8") +8 8 | open("f", "wt") +9 9 | open("f", "tw") +10 10 | + +UP015.py:8:11: UP015 [*] Unnecessary modes, use `w` + | +6 | open("foo", "rt") +7 | open("f", "r", encoding="UTF-8") +8 | open("f", "wt") + | ^^^^ UP015 +9 | open("f", "tw") + | + = help: Replace with `w` + +ℹ Safe fix +5 5 | open("foo", "r") +6 6 | open("foo", "rt") +7 7 | open("f", "r", encoding="UTF-8") +8 |-open("f", "wt") + 8 |+open("f", "w") +9 9 | open("f", "tw") +10 10 | +11 11 | with open("foo", "U") as f: + +UP015.py:9:11: UP015 [*] Unnecessary modes, use `w` + | + 7 | open("f", "r", encoding="UTF-8") + 8 | open("f", "wt") + 9 | open("f", "tw") + | ^^^^ UP015 +10 | +11 | with open("foo", "U") as f: + | + = help: Replace with `w` + +ℹ Safe fix +6 6 | open("foo", "rt") +7 7 | open("f", "r", encoding="UTF-8") +8 8 | open("f", "wt") +9 |-open("f", "tw") + 9 |+open("f", "w") +10 10 | +11 11 | with open("foo", "U") as f: +12 12 | pass + +UP015.py:11:18: UP015 [*] Unnecessary mode argument + | + 9 | open("f", "tw") +10 | +11 | with open("foo", "U") as f: + | ^^^ UP015 +12 | pass +13 | with open("foo", "Ur") as f: + | + = help: Remove mode argument + +ℹ Safe fix +8 8 | open("f", "wt") +9 9 | open("f", "tw") +10 10 | +11 |-with open("foo", "U") as f: + 11 |+with open("foo") as f: +12 12 | pass +13 13 | with open("foo", "Ur") as f: +14 14 | pass + +UP015.py:13:18: UP015 [*] Unnecessary mode argument + | +11 | with open("foo", "U") as f: +12 | pass +13 | with open("foo", "Ur") as f: + | ^^^^ UP015 +14 | pass +15 | with open("foo", "Ub") as f: + | + = help: Remove mode argument + +ℹ Safe fix +10 10 | +11 11 | with open("foo", "U") as f: +12 12 | pass +13 |-with open("foo", "Ur") as f: + 13 |+with open("foo") as f: +14 14 | pass +15 15 | with open("foo", "Ub") as f: +16 16 | pass + +UP015.py:15:18: UP015 [*] Unnecessary modes, use `rb` + | +13 | with open("foo", "Ur") as f: +14 | pass +15 | with open("foo", "Ub") as f: + | ^^^^ UP015 +16 | pass +17 | with open("foo", "rUb") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +12 12 | pass +13 13 | with open("foo", "Ur") as f: +14 14 | pass +15 |-with open("foo", "Ub") as f: + 15 |+with open("foo", "rb") as f: +16 16 | pass +17 17 | with open("foo", "rUb") as f: +18 18 | pass + +UP015.py:17:18: UP015 [*] Unnecessary modes, use `rb` + | +15 | with open("foo", "Ub") as f: +16 | pass +17 | with open("foo", "rUb") as f: + | ^^^^^ UP015 +18 | pass +19 | with open("foo", "r") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +14 14 | pass +15 15 | with open("foo", "Ub") as f: +16 16 | pass +17 |-with open("foo", "rUb") as f: + 17 |+with open("foo", "rb") as f: +18 18 | pass +19 19 | with open("foo", "r") as f: +20 20 | pass + +UP015.py:19:18: UP015 [*] Unnecessary mode argument + | +17 | with open("foo", "rUb") as f: +18 | pass +19 | with open("foo", "r") as f: + | ^^^ UP015 +20 | pass +21 | with open("foo", "rt") as f: + | + = help: Remove mode argument + +ℹ Safe fix +16 16 | pass +17 17 | with open("foo", "rUb") as f: +18 18 | pass +19 |-with open("foo", "r") as f: + 19 |+with open("foo") as f: +20 20 | pass +21 21 | with open("foo", "rt") as f: +22 22 | pass + +UP015.py:21:18: UP015 [*] Unnecessary mode argument + | +19 | with open("foo", "r") as f: +20 | pass +21 | with open("foo", "rt") as f: + | ^^^^ UP015 +22 | pass +23 | with open("foo", "r", encoding="UTF-8") as f: + | + = help: Remove mode argument + +ℹ Safe fix +18 18 | pass +19 19 | with open("foo", "r") as f: +20 20 | pass +21 |-with open("foo", "rt") as f: + 21 |+with open("foo") as f: +22 22 | pass +23 23 | with open("foo", "r", encoding="UTF-8") as f: +24 24 | pass + +UP015.py:23:18: UP015 [*] Unnecessary mode argument + | +21 | with open("foo", "rt") as f: +22 | pass +23 | with open("foo", "r", encoding="UTF-8") as f: + | ^^^ UP015 +24 | pass +25 | with open("foo", "wt") as f: + | + = help: Remove mode argument + +ℹ Safe fix +20 20 | pass +21 21 | with open("foo", "rt") as f: +22 22 | pass +23 |-with open("foo", "r", encoding="UTF-8") as f: + 23 |+with open("foo", encoding="UTF-8") as f: +24 24 | pass +25 25 | with open("foo", "wt") as f: +26 26 | pass + +UP015.py:25:18: UP015 [*] Unnecessary modes, use `w` + | +23 | with open("foo", "r", encoding="UTF-8") as f: +24 | pass +25 | with open("foo", "wt") as f: + | ^^^^ UP015 +26 | pass + | + = help: Replace with `w` + +ℹ Safe fix +22 22 | pass +23 23 | with open("foo", "r", encoding="UTF-8") as f: +24 24 | pass +25 |-with open("foo", "wt") as f: + 25 |+with open("foo", "w") as f: +26 26 | pass +27 27 | +28 28 | open(f("a", "b", "c"), "U") + +UP015.py:28:24: UP015 [*] Unnecessary mode argument + | +26 | pass +27 | +28 | open(f("a", "b", "c"), "U") + | ^^^ UP015 +29 | open(f("a", "b", "c"), "Ub") + | + = help: Remove mode argument + +ℹ Safe fix +25 25 | with open("foo", "wt") as f: +26 26 | pass +27 27 | +28 |-open(f("a", "b", "c"), "U") + 28 |+open(f("a", "b", "c")) +29 29 | open(f("a", "b", "c"), "Ub") +30 30 | +31 31 | with open(f("a", "b", "c"), "U") as f: + +UP015.py:29:24: UP015 [*] Unnecessary modes, use `rb` + | +28 | open(f("a", "b", "c"), "U") +29 | open(f("a", "b", "c"), "Ub") + | ^^^^ UP015 +30 | +31 | with open(f("a", "b", "c"), "U") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +26 26 | pass +27 27 | +28 28 | open(f("a", "b", "c"), "U") +29 |-open(f("a", "b", "c"), "Ub") + 29 |+open(f("a", "b", "c"), "rb") +30 30 | +31 31 | with open(f("a", "b", "c"), "U") as f: +32 32 | pass + +UP015.py:31:29: UP015 [*] Unnecessary mode argument + | +29 | open(f("a", "b", "c"), "Ub") +30 | +31 | with open(f("a", "b", "c"), "U") as f: + | ^^^ UP015 +32 | pass +33 | with open(f("a", "b", "c"), "Ub") as f: + | + = help: Remove mode argument + +ℹ Safe fix +28 28 | open(f("a", "b", "c"), "U") +29 29 | open(f("a", "b", "c"), "Ub") +30 30 | +31 |-with open(f("a", "b", "c"), "U") as f: + 31 |+with open(f("a", "b", "c")) as f: +32 32 | pass +33 33 | with open(f("a", "b", "c"), "Ub") as f: +34 34 | pass + +UP015.py:33:29: UP015 [*] Unnecessary modes, use `rb` + | +31 | with open(f("a", "b", "c"), "U") as f: +32 | pass +33 | with open(f("a", "b", "c"), "Ub") as f: + | ^^^^ UP015 +34 | pass + | + = help: Replace with `rb` + +ℹ Safe fix +30 30 | +31 31 | with open(f("a", "b", "c"), "U") as f: +32 32 | pass +33 |-with open(f("a", "b", "c"), "Ub") as f: + 33 |+with open(f("a", "b", "c"), "rb") as f: +34 34 | pass +35 35 | +36 36 | with open("foo", "U") as fa, open("bar", "U") as fb: + +UP015.py:36:18: UP015 [*] Unnecessary mode argument + | +34 | pass +35 | +36 | with open("foo", "U") as fa, open("bar", "U") as fb: + | ^^^ UP015 +37 | pass +38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + | + = help: Remove mode argument + +ℹ Safe fix +33 33 | with open(f("a", "b", "c"), "Ub") as f: +34 34 | pass +35 35 | +36 |-with open("foo", "U") as fa, open("bar", "U") as fb: + 36 |+with open("foo") as fa, open("bar", "U") as fb: +37 37 | pass +38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: +39 39 | pass + +UP015.py:36:42: UP015 [*] Unnecessary mode argument + | +34 | pass +35 | +36 | with open("foo", "U") as fa, open("bar", "U") as fb: + | ^^^ UP015 +37 | pass +38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + | + = help: Remove mode argument + +ℹ Safe fix +33 33 | with open(f("a", "b", "c"), "Ub") as f: +34 34 | pass +35 35 | +36 |-with open("foo", "U") as fa, open("bar", "U") as fb: + 36 |+with open("foo", "U") as fa, open("bar") as fb: +37 37 | pass +38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: +39 39 | pass + +UP015.py:38:18: UP015 [*] Unnecessary modes, use `rb` + | +36 | with open("foo", "U") as fa, open("bar", "U") as fb: +37 | pass +38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + | ^^^^ UP015 +39 | pass + | + = help: Replace with `rb` + +ℹ Safe fix +35 35 | +36 36 | with open("foo", "U") as fa, open("bar", "U") as fb: +37 37 | pass +38 |-with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + 38 |+with open("foo", "rb") as fa, open("bar", "Ub") as fb: +39 39 | pass +40 40 | +41 41 | open("foo", mode="U") + +UP015.py:38:43: UP015 [*] Unnecessary modes, use `rb` + | +36 | with open("foo", "U") as fa, open("bar", "U") as fb: +37 | pass +38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + | ^^^^ UP015 +39 | pass + | + = help: Replace with `rb` + +ℹ Safe fix +35 35 | +36 36 | with open("foo", "U") as fa, open("bar", "U") as fb: +37 37 | pass +38 |-with open("foo", "Ub") as fa, open("bar", "Ub") as fb: + 38 |+with open("foo", "Ub") as fa, open("bar", "rb") as fb: +39 39 | pass +40 40 | +41 41 | open("foo", mode="U") + +UP015.py:41:18: UP015 [*] Unnecessary mode argument + | +39 | pass +40 | +41 | open("foo", mode="U") + | ^^^ UP015 +42 | open(name="foo", mode="U") +43 | open(mode="U", name="foo") + | + = help: Remove mode argument + +ℹ Safe fix +38 38 | with open("foo", "Ub") as fa, open("bar", "Ub") as fb: +39 39 | pass +40 40 | +41 |-open("foo", mode="U") + 41 |+open("foo") +42 42 | open(name="foo", mode="U") +43 43 | open(mode="U", name="foo") +44 44 | + +UP015.py:42:23: UP015 [*] Unnecessary mode argument + | +41 | open("foo", mode="U") +42 | open(name="foo", mode="U") + | ^^^ UP015 +43 | open(mode="U", name="foo") + | + = help: Remove mode argument + +ℹ Safe fix +39 39 | pass +40 40 | +41 41 | open("foo", mode="U") +42 |-open(name="foo", mode="U") + 42 |+open(name="foo") +43 43 | open(mode="U", name="foo") +44 44 | +45 45 | with open("foo", mode="U") as f: + +UP015.py:43:11: UP015 [*] Unnecessary mode argument + | +41 | open("foo", mode="U") +42 | open(name="foo", mode="U") +43 | open(mode="U", name="foo") + | ^^^ UP015 +44 | +45 | with open("foo", mode="U") as f: + | + = help: Remove mode argument + +ℹ Safe fix +40 40 | +41 41 | open("foo", mode="U") +42 42 | open(name="foo", mode="U") +43 |-open(mode="U", name="foo") + 43 |+open(name="foo") +44 44 | +45 45 | with open("foo", mode="U") as f: +46 46 | pass + +UP015.py:45:23: UP015 [*] Unnecessary mode argument + | +43 | open(mode="U", name="foo") +44 | +45 | with open("foo", mode="U") as f: + | ^^^ UP015 +46 | pass +47 | with open(name="foo", mode="U") as f: + | + = help: Remove mode argument + +ℹ Safe fix +42 42 | open(name="foo", mode="U") +43 43 | open(mode="U", name="foo") +44 44 | +45 |-with open("foo", mode="U") as f: + 45 |+with open("foo") as f: +46 46 | pass +47 47 | with open(name="foo", mode="U") as f: +48 48 | pass + +UP015.py:47:28: UP015 [*] Unnecessary mode argument + | +45 | with open("foo", mode="U") as f: +46 | pass +47 | with open(name="foo", mode="U") as f: + | ^^^ UP015 +48 | pass +49 | with open(mode="U", name="foo") as f: + | + = help: Remove mode argument + +ℹ Safe fix +44 44 | +45 45 | with open("foo", mode="U") as f: +46 46 | pass +47 |-with open(name="foo", mode="U") as f: + 47 |+with open(name="foo") as f: +48 48 | pass +49 49 | with open(mode="U", name="foo") as f: +50 50 | pass + +UP015.py:49:16: UP015 [*] Unnecessary mode argument + | +47 | with open(name="foo", mode="U") as f: +48 | pass +49 | with open(mode="U", name="foo") as f: + | ^^^ UP015 +50 | pass + | + = help: Remove mode argument + +ℹ Safe fix +46 46 | pass +47 47 | with open(name="foo", mode="U") as f: +48 48 | pass +49 |-with open(mode="U", name="foo") as f: + 49 |+with open(name="foo") as f: +50 50 | pass +51 51 | +52 52 | open("foo", mode="Ub") + +UP015.py:52:18: UP015 [*] Unnecessary modes, use `rb` + | +50 | pass +51 | +52 | open("foo", mode="Ub") + | ^^^^ UP015 +53 | open(name="foo", mode="Ub") +54 | open(mode="Ub", name="foo") + | + = help: Replace with `rb` + +ℹ Safe fix +49 49 | with open(mode="U", name="foo") as f: +50 50 | pass +51 51 | +52 |-open("foo", mode="Ub") + 52 |+open("foo", mode="rb") +53 53 | open(name="foo", mode="Ub") +54 54 | open(mode="Ub", name="foo") +55 55 | + +UP015.py:53:23: UP015 [*] Unnecessary modes, use `rb` + | +52 | open("foo", mode="Ub") +53 | open(name="foo", mode="Ub") + | ^^^^ UP015 +54 | open(mode="Ub", name="foo") + | + = help: Replace with `rb` + +ℹ Safe fix +50 50 | pass +51 51 | +52 52 | open("foo", mode="Ub") +53 |-open(name="foo", mode="Ub") + 53 |+open(name="foo", mode="rb") +54 54 | open(mode="Ub", name="foo") +55 55 | +56 56 | with open("foo", mode="Ub") as f: + +UP015.py:54:11: UP015 [*] Unnecessary modes, use `rb` + | +52 | open("foo", mode="Ub") +53 | open(name="foo", mode="Ub") +54 | open(mode="Ub", name="foo") + | ^^^^ UP015 +55 | +56 | with open("foo", mode="Ub") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +51 51 | +52 52 | open("foo", mode="Ub") +53 53 | open(name="foo", mode="Ub") +54 |-open(mode="Ub", name="foo") + 54 |+open(mode="rb", name="foo") +55 55 | +56 56 | with open("foo", mode="Ub") as f: +57 57 | pass + +UP015.py:56:23: UP015 [*] Unnecessary modes, use `rb` + | +54 | open(mode="Ub", name="foo") +55 | +56 | with open("foo", mode="Ub") as f: + | ^^^^ UP015 +57 | pass +58 | with open(name="foo", mode="Ub") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +53 53 | open(name="foo", mode="Ub") +54 54 | open(mode="Ub", name="foo") +55 55 | +56 |-with open("foo", mode="Ub") as f: + 56 |+with open("foo", mode="rb") as f: +57 57 | pass +58 58 | with open(name="foo", mode="Ub") as f: +59 59 | pass + +UP015.py:58:28: UP015 [*] Unnecessary modes, use `rb` + | +56 | with open("foo", mode="Ub") as f: +57 | pass +58 | with open(name="foo", mode="Ub") as f: + | ^^^^ UP015 +59 | pass +60 | with open(mode="Ub", name="foo") as f: + | + = help: Replace with `rb` + +ℹ Safe fix +55 55 | +56 56 | with open("foo", mode="Ub") as f: +57 57 | pass +58 |-with open(name="foo", mode="Ub") as f: + 58 |+with open(name="foo", mode="rb") as f: +59 59 | pass +60 60 | with open(mode="Ub", name="foo") as f: +61 61 | pass + +UP015.py:60:16: UP015 [*] Unnecessary modes, use `rb` + | +58 | with open(name="foo", mode="Ub") as f: +59 | pass +60 | with open(mode="Ub", name="foo") as f: + | ^^^^ UP015 +61 | pass + | + = help: Replace with `rb` + +ℹ Safe fix +57 57 | pass +58 58 | with open(name="foo", mode="Ub") as f: +59 59 | pass +60 |-with open(mode="Ub", name="foo") as f: + 60 |+with open(mode="rb", name="foo") as f: +61 61 | pass +62 62 | +63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + +UP015.py:63:23: UP015 [*] Unnecessary mode argument + | +61 | pass +62 | +63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | ^^^ UP015 +64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) + | + = help: Remove mode argument + +ℹ Safe fix +60 60 | with open(mode="Ub", name="foo") as f: +61 61 | pass +62 62 | +63 |-open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + 63 |+open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + +UP015.py:64:106: UP015 [*] Unnecessary mode argument + | +63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') + | ^^^ UP015 +65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | + = help: Remove mode argument + +ℹ Safe fix +61 61 | pass +62 62 | +63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 |-open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') + 64 |+open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 67 | + +UP015.py:65:65: UP015 [*] Unnecessary mode argument + | +63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) + | ^^^ UP015 +66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | + = help: Remove mode argument + +ℹ Safe fix +62 62 | +63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 |-open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) + 65 |+open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 67 | +68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + +UP015.py:66:11: UP015 [*] Unnecessary mode argument + | +64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | ^^^ UP015 +67 | +68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | + = help: Remove mode argument + +ℹ Safe fix +63 63 | open(file="foo", mode='U', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +64 64 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='U') +65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 |-open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + 66 |+open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 67 | +68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') + +UP015.py:68:23: UP015 [*] Unnecessary modes, use `rb` + | +66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 | +68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | ^^^^ UP015 +69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) + | + = help: Replace with `rb` + +ℹ Safe fix +65 65 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='U', newline=None, closefd=True, opener=None) +66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 67 | +68 |-open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + 68 |+open(file="foo", mode="rb", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) +71 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + +UP015.py:69:106: UP015 [*] Unnecessary modes, use `rb` + | +68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') + | ^^^^ UP015 +70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) +71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | + = help: Replace with `rb` + +ℹ Safe fix +66 66 | open(mode='U', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +67 67 | +68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 |-open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') + 69 |+open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode="rb") +70 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) +71 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +72 72 | + +UP015.py:70:65: UP015 [*] Unnecessary modes, use `rb` + | +68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) + | ^^^^ UP015 +71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | + = help: Replace with `rb` + +ℹ Safe fix +67 67 | +68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 |-open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) + 70 |+open(file="foo", buffering=-1, encoding=None, errors=None, mode="rb", newline=None, closefd=True, opener=None) +71 71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +72 72 | +73 73 | import aiofiles + +UP015.py:71:11: UP015 [*] Unnecessary modes, use `rb` + | +69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) +71 | open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + | ^^^^ UP015 +72 | +73 | import aiofiles + | + = help: Replace with `rb` + +ℹ Safe fix +68 68 | open(file="foo", mode='Ub', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +69 69 | open(file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None, mode='Ub') +70 70 | open(file="foo", buffering=-1, encoding=None, errors=None, mode='Ub', newline=None, closefd=True, opener=None) +71 |-open(mode='Ub', file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) + 71 |+open(mode="rb", file="foo", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) +72 72 | +73 73 | import aiofiles +74 74 | + +UP015.py:75:22: UP015 [*] Unnecessary mode argument + | +73 | import aiofiles +74 | +75 | aiofiles.open("foo", "U") + | ^^^ UP015 +76 | aiofiles.open("foo", "r") +77 | aiofiles.open("foo", mode="r") + | + = help: Remove mode argument + +ℹ Safe fix +72 72 | +73 73 | import aiofiles +74 74 | +75 |-aiofiles.open("foo", "U") + 75 |+aiofiles.open("foo") +76 76 | aiofiles.open("foo", "r") +77 77 | aiofiles.open("foo", mode="r") +78 78 | + +UP015.py:76:22: UP015 [*] Unnecessary mode argument + | +75 | aiofiles.open("foo", "U") +76 | aiofiles.open("foo", "r") + | ^^^ UP015 +77 | aiofiles.open("foo", mode="r") + | + = help: Remove mode argument + +ℹ Safe fix +73 73 | import aiofiles +74 74 | +75 75 | aiofiles.open("foo", "U") +76 |-aiofiles.open("foo", "r") + 76 |+aiofiles.open("foo") +77 77 | aiofiles.open("foo", mode="r") +78 78 | +79 79 | open("foo", "r+") + +UP015.py:77:27: UP015 [*] Unnecessary mode argument + | +75 | aiofiles.open("foo", "U") +76 | aiofiles.open("foo", "r") +77 | aiofiles.open("foo", mode="r") + | ^^^ UP015 +78 | +79 | open("foo", "r+") + | + = help: Remove mode argument + +ℹ Safe fix +74 74 | +75 75 | aiofiles.open("foo", "U") +76 76 | aiofiles.open("foo", "r") +77 |-aiofiles.open("foo", mode="r") + 77 |+aiofiles.open("foo") +78 78 | +79 79 | open("foo", "r+") +80 80 | open("foo", "rb") diff --git a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015_1.py.snap b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015_1.py.snap new file mode 100644 index 00000000000000..a3f9d68f6cb431 --- /dev/null +++ b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__preview__UP015_UP015_1.py.snap @@ -0,0 +1,18 @@ +--- +source: crates/ruff_linter/src/rules/pyupgrade/mod.rs +--- +UP015_1.py:3:17: UP015 [*] Unnecessary mode argument + | +1 | # Not a valid type annotation but this test shouldn't result in a panic. +2 | # Refer: https://github.com/astral-sh/ruff/issues/11736 +3 | x: 'open("foo", "r")' + | ^^^ UP015 + | + = help: Remove mode argument + +ℹ Safe fix +1 1 | # Not a valid type annotation but this test shouldn't result in a panic. +2 2 | # Refer: https://github.com/astral-sh/ruff/issues/11736 +3 |-x: 'open("foo", "r")' + 3 |+x: 'open("foo")' +4 4 |