1
+ # -*- coding: utf-8 -*-
1
2
# Copyright (c) 2006-2015 LOGILAB S.A. (Paris, FRANCE) <[email protected] >
2
3
# Copyright (c) 2012-2014 Google, Inc.
3
4
# Copyright (c) 2014-2016 Claudiu Popa <[email protected] >
@@ -563,10 +564,14 @@ def _check_imports_order(self, _module_node):
563
564
564
565
Imports must follow this order: standard, 3rd party, local
565
566
"""
566
- extern_imports = []
567
- local_imports = []
568
567
std_imports = []
569
- extern_not_ignored = []
568
+ third_party_imports = []
569
+ first_party_imports = []
570
+ # need of a list that holds third or first party ordered import
571
+ external_imports = []
572
+ local_imports = []
573
+ third_party_not_ignored = []
574
+ first_party_not_ignored = []
570
575
local_not_ignored = []
571
576
isort_obj = isort .SortImports (
572
577
file_contents = '' , known_third_party = self .config .known_third_party ,
@@ -581,29 +586,42 @@ def _check_imports_order(self, _module_node):
581
586
ignore_for_import_order = not self .linter .is_message_enabled ('wrong-import-order' ,
582
587
node .fromlineno )
583
588
import_category = isort_obj .place_module (package )
589
+ node_and_package_import = (node , package )
584
590
if import_category in ('FUTURE' , 'STDLIB' ):
585
- std_imports .append ((node , package ))
586
- wrong_import = extern_not_ignored or local_not_ignored
591
+ std_imports .append (node_and_package_import )
592
+ wrong_import = (third_party_not_ignored or first_party_not_ignored
593
+ or local_not_ignored )
587
594
if self ._is_fallback_import (node , wrong_import ):
588
595
continue
589
596
if wrong_import and not nested :
590
597
self .add_message ('wrong-import-order' , node = node ,
591
598
args = ('standard import "%s"' % node .as_string (),
592
599
'"%s"' % wrong_import [0 ][0 ].as_string ()))
593
- elif import_category in ('FIRSTPARTY' , 'THIRDPARTY' ):
594
- extern_imports .append ((node , package ))
600
+ elif import_category == 'THIRDPARTY' :
601
+ third_party_imports .append (node_and_package_import )
602
+ external_imports .append (node_and_package_import )
603
+ if not nested and not ignore_for_import_order :
604
+ third_party_not_ignored .append (node_and_package_import )
605
+ wrong_import = first_party_not_ignored or local_not_ignored
606
+ if wrong_import and not nested :
607
+ self .add_message ('wrong-import-order' , node = node ,
608
+ args = ('third party import "%s"' % node .as_string (),
609
+ '"%s"' % wrong_import [0 ][0 ].as_string ()))
610
+ elif import_category == 'FIRSTPARTY' :
611
+ first_party_imports .append (node_and_package_import )
612
+ external_imports .append (node_and_package_import )
595
613
if not nested and not ignore_for_import_order :
596
- extern_not_ignored .append (( node , package ) )
614
+ first_party_not_ignored .append (node_and_package_import )
597
615
wrong_import = local_not_ignored
598
616
if wrong_import and not nested :
599
617
self .add_message ('wrong-import-order' , node = node ,
600
- args = ('external import "%s"' % node .as_string (),
618
+ args = ('first party import "%s"' % node .as_string (),
601
619
'"%s"' % wrong_import [0 ][0 ].as_string ()))
602
620
elif import_category == 'LOCALFOLDER' :
603
621
local_imports .append ((node , package ))
604
622
if not nested and not ignore_for_import_order :
605
623
local_not_ignored .append ((node , package ))
606
- return std_imports , extern_imports , local_imports
624
+ return std_imports , external_imports , local_imports
607
625
608
626
def _get_imported_module (self , importnode , modname ):
609
627
try :
0 commit comments