Remove Int wrapper type from parser (#7577)

## Summary

This is only used for the `level` field in relative imports (e.g., `from
..foo import bar`). It seems unnecessary to use a wrapper here, so this
PR changes to a `u32` directly.
This commit is contained in:
Charlie Marsh 2023-09-21 13:01:44 -04:00 committed by GitHub
parent 6c3378edb1
commit 4d6f5ff0a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 75 additions and 101 deletions

View file

@ -695,7 +695,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) {
},
) => {
let module = module.as_deref();
let level = level.map(|level| level.to_u32());
let level = *level;
if checker.enabled(Rule::ModuleImportNotAtTopOfFile) {
pycodestyle::rules::module_import_not_at_top_of_file(checker, stmt);
}

View file

@ -358,7 +358,7 @@ where
range: _,
}) => {
let module = module.as_deref();
let level = level.map(|level| level.to_u32());
let level = *level;
for alias in names {
if let Some("__future__") = module {
let name = alias.asname.as_ref().unwrap_or(&alias.name);

View file

@ -44,7 +44,7 @@ fn extract_import_map(path: &Path, package: Option<&Path>, blocks: &[&Block]) ->
level,
range: _,
}) => {
let level = level.map_or(0, |level| level.to_usize());
let level = level.unwrap_or_default() as usize;
let module = if let Some(module) = module {
let module: &String = module.as_ref();
if level == 0 {
@ -95,6 +95,7 @@ pub(crate) fn check_imports(
tracker.visit_body(python_ast);
tracker
};
let blocks: Vec<&Block> = tracker.iter().collect();
// Enforce import rules.

View file

@ -308,7 +308,7 @@ impl<'a> Importer<'a> {
range: _,
}) = stmt
{
if level.map_or(true, |level| level.to_u32() == 0)
if level.map_or(true, |level| level == 0)
&& name.as_ref().is_some_and(|name| name == module)
&& names.iter().all(|alias| alias.name.as_str() != "*")
{

View file

@ -1,4 +1,4 @@
use ruff_python_ast::{self as ast, Identifier, Int, Stmt};
use ruff_python_ast::{self as ast, Identifier, Stmt};
use ruff_text_size::{Ranged, TextRange};
use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation};
@ -99,7 +99,7 @@ fn fix_banned_relative_import(
TextRange::default(),
)),
names: names.clone(),
level: Some(Int::new(0)),
level: Some(0),
range: TextRange::default(),
};
let content = generator.stmt(&node.into());

View file

@ -118,7 +118,7 @@ pub(crate) fn annotate_imports<'a>(
AnnotatedImport::ImportFrom {
module: module.as_deref(),
names: aliases,
level: level.map(|level| level.to_u32()),
level: *level,
trailing_comma: if split_on_trailing_comma {
trailing_comma(import, locator, source_type)
} else {

View file

@ -75,7 +75,7 @@ fn includes_import(stmt: &Stmt, target: &AnyImport) -> bool {
return false;
};
module.as_deref() == target.module
&& level.map(|level| level.to_u32()) == target.level
&& *level == target.level
&& names.iter().any(|alias| {
&alias.name == target.name.name
&& alias.asname.as_deref() == target.name.as_name
@ -166,7 +166,7 @@ pub(crate) fn add_required_imports(
name: name.name.as_str(),
as_name: name.asname.as_deref(),
},
level: level.map(|level| level.to_u32()),
level: *level,
}),
python_ast,
locator,

View file

@ -1,4 +1,4 @@
use ruff_python_ast::{self as ast, Alias, Identifier, Int, Stmt};
use ruff_python_ast::{self as ast, Alias, Identifier, Stmt};
use ruff_text_size::{Ranged, TextRange};
use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation};
@ -80,7 +80,7 @@ pub(crate) fn manual_from_import(
asname: None,
range: TextRange::default(),
}],
level: Some(Int::new(0)),
level: Some(0),
range: TextRange::default(),
};
diagnostic.set_fix(Fix::automatic(Edit::range_replacement(

View file

@ -71,7 +71,7 @@ pub(crate) fn deprecated_c_element_tree(checker: &mut Checker, stmt: &Stmt) {
level,
range: _,
}) => {
if level.is_some_and(|level| level.to_u32() > 0) {
if level.is_some_and(|level| level > 0) {
// Ex) `import .xml.etree.cElementTree as ET`
} else if let Some(module) = module {
if module == "xml.etree.cElementTree" {

View file

@ -323,7 +323,7 @@ pub(crate) fn deprecated_mock_import(checker: &mut Checker, stmt: &Stmt) {
level,
..
}) => {
if level.is_some_and(|level| level.to_u32() > 0) {
if level.is_some_and(|level| level > 0) {
return;
}