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;