mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 21:05:08 +00:00
Stabilize allowance of os.environ modifications between imports (#12047)
## Summary See: https://github.com/astral-sh/ruff/pull/10066.
This commit is contained in:
parent
bd845812c7
commit
fb1d7610ac
5 changed files with 4 additions and 22 deletions
|
@ -462,8 +462,7 @@ impl<'a> Visitor<'a> for Checker<'a> {
|
|||
|| helpers::in_nested_block(self.semantic.current_statements())
|
||||
|| imports::is_matplotlib_activation(stmt, self.semantic())
|
||||
|| imports::is_sys_path_modification(stmt, self.semantic())
|
||||
|| (self.settings.preview.is_enabled()
|
||||
&& imports::is_os_environ_modification(stmt, self.semantic())))
|
||||
|| imports::is_os_environ_modification(stmt, self.semantic()))
|
||||
{
|
||||
self.semantic.flags |= SemanticModelFlags::IMPORT_BOUNDARY;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,6 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test_case(Rule::IsLiteral, Path::new("constant_literals.py"))]
|
||||
#[test_case(Rule::ModuleImportNotAtTopOfFile, Path::new("E402_2.py"))]
|
||||
#[test_case(Rule::RedundantBackslash, Path::new("E502.py"))]
|
||||
#[test_case(Rule::TooManyNewlinesAtEndOfFile, Path::new("W391_0.py"))]
|
||||
#[test_case(Rule::TooManyNewlinesAtEndOfFile, Path::new("W391_1.py"))]
|
||||
|
|
|
@ -13,12 +13,9 @@ use crate::checkers::ast::Checker;
|
|||
/// According to [PEP 8], "imports are always put at the top of the file, just after any
|
||||
/// module comments and docstrings, and before module globals and constants."
|
||||
///
|
||||
/// This rule makes an exception for `sys.path` modifications, allowing for
|
||||
/// `sys.path.insert`, `sys.path.append`, and similar modifications between import
|
||||
/// statements.
|
||||
///
|
||||
/// In [preview], this rule also allows `os.environ` modifications between import
|
||||
/// statements.
|
||||
/// This rule makes an exception for both `sys.path` modifications (allowing for
|
||||
/// `sys.path.insert`, `sys.path.append`, etc.) and `os.environ` modifications
|
||||
/// between imports.
|
||||
///
|
||||
/// ## Example
|
||||
/// ```python
|
||||
|
@ -40,7 +37,6 @@ use crate::checkers::ast::Checker;
|
|||
/// ```
|
||||
///
|
||||
/// [PEP 8]: https://peps.python.org/pep-0008/#imports
|
||||
/// [preview]: https://docs.astral.sh/ruff/preview/
|
||||
#[violation]
|
||||
pub struct ModuleImportNotAtTopOfFile {
|
||||
source_type: PySourceType,
|
||||
|
|
|
@ -1,12 +1,4 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pycodestyle/mod.rs
|
||||
---
|
||||
E402_2.py:7:1: E402 Module level import not at top of file
|
||||
|
|
||||
5 | del os.environ["WORLD_SIZE"]
|
||||
6 |
|
||||
7 | import torch
|
||||
| ^^^^^^^^^^^^ E402
|
||||
|
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pycodestyle/mod.rs
|
||||
---
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue