@@ -3,9 +3,9 @@ use std::borrow::Cow;
33use itertools:: Itertools ;
44
55use ruff_macros:: { ViolationMetadata , derive_message_formats} ;
6- use ruff_python_ast:: { helpers:: is_dunder, name:: QualifiedName } ;
6+ use ruff_python_ast:: { self as ast , helpers:: is_dunder, name:: QualifiedName } ;
77use ruff_python_semantic:: { FromImport , Import , Imported , ResolvedReference , Scope } ;
8- use ruff_text_size:: Ranged ;
8+ use ruff_text_size:: { Ranged , TextLen , TextRange , TextSize } ;
99
1010use crate :: Violation ;
1111use crate :: checkers:: ast:: Checker ;
@@ -138,26 +138,18 @@ pub(crate) fn import_private_name(checker: &Checker, scope: &Scope) {
138138 None
139139 } ;
140140 let range = match binding. source . map ( |id| checker. semantic ( ) . statement ( id) ) {
141- Some ( ruff_python_ast :: Stmt :: ImportFrom ( import_from ) ) => {
141+ Some ( ast :: Stmt :: ImportFrom ( ast :: StmtImportFrom { module , names , .. } ) ) => {
142142 if index < import_info. module_name . len ( ) {
143- import_from
144- . module
145- . as_ref ( )
146- . map_or ( binding. range ( ) , |module| {
147- let start = module. start ( ) ;
148- let offset: usize = import_info. qualified_name . segments ( ) [ ..index]
149- . iter ( )
150- . map ( |segment| segment. len ( ) + 1 )
151- . sum ( ) ;
152-
153- ruff_text_size:: TextRange :: at (
154- start + ruff_text_size:: TextSize :: try_from ( offset) . unwrap ( ) ,
155- ruff_text_size:: TextSize :: try_from ( private_name. len ( ) ) . unwrap ( ) ,
156- )
157- } )
143+ module. as_ref ( ) . map_or ( binding. range ( ) , |module| {
144+ let offset: TextSize = import_info. qualified_name . segments ( ) [ ..index]
145+ . iter ( )
146+ . map ( |segment| segment. text_len ( ) + TextSize :: new ( 1 ) )
147+ . sum ( ) ;
148+
149+ TextRange :: at ( module. start ( ) + offset, private_name. text_len ( ) )
150+ } )
158151 } else {
159- import_from
160- . names
152+ names
161153 . iter ( )
162154 . find ( |alias| alias. name . as_str ( ) == import_info. member_name )
163155 . map_or ( binding. range ( ) , |alias| alias. name . range ( ) )
0 commit comments