diff --git a/crates/ruff_linter/resources/test/fixtures/flake8_simplify/SIM112.py b/crates/ruff_linter/resources/test/fixtures/flake8_simplify/SIM112.py index 74b44d63325dc..937a2555c98e5 100644 --- a/crates/ruff_linter/resources/test/fixtures/flake8_simplify/SIM112.py +++ b/crates/ruff_linter/resources/test/fixtures/flake8_simplify/SIM112.py @@ -38,3 +38,7 @@ if env := os.environ['FOO']: pass + +os.environ['https_proxy'] +os.environ.get['http_proxy'] +os.getenv('no_proxy') diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs index dc3b165b21d56..511a0e373b9a3 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs @@ -110,6 +110,15 @@ impl AlwaysFixableViolation for DictGetWithNoneDefault { } } +/// Returns whether the given environment variable is allowed to be lowercase. +/// +/// References: +/// - +/// - +fn is_lowercase_allowed(env_var: &str) -> bool { + matches!(env_var, "https_proxy" | "http_proxy" | "no_proxy") +} + /// SIM112 pub(crate) fn use_capital_environment_variables(checker: &mut Checker, expr: &Expr) { // Ex) `os.environ['foo']` @@ -150,6 +159,10 @@ pub(crate) fn use_capital_environment_variables(checker: &mut Checker, expr: &Ex return; } + if is_lowercase_allowed(env_var) { + return; + } + let capital_env_var = env_var.to_ascii_uppercase(); if &capital_env_var == env_var { return; @@ -194,6 +207,11 @@ fn check_os_environ_subscript(checker: &mut Checker, expr: &Expr) { else { return; }; + + if is_lowercase_allowed(env_var) { + return; + } + let capital_env_var = env_var.to_ascii_uppercase(); if &capital_env_var == env_var { return;