src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Imports/ImportsChecker.py

branch
eric7
changeset 9479
b4dff37325de
parent 9477
903ee653bf23
child 9653
e67609152c5e
equal deleted inserted replaced
9478:634062017057 9479:b4dff37325de
444 for n in imports[1:]: 444 for n in imports[1:]:
445 if n.error is not None: 445 if n.error is not None:
446 errors.append(n.error) 446 errors.append(n.error)
447 447
448 if n == p: 448 if n == p:
449 if ( 449 if self.__args.get("CombinedAsImports", False) or (
450 self.__args.get("CombinedAsImports", False) 450 not n.asImport and not p.asImport
451 or (not n.asImport and not p.asImport)
452 ): 451 ):
453 errors.append((n.node, "I203", str(p), str(n))) 452 errors.append((n.node, "I203", str(p), str(n)))
454 elif n < p: 453 elif n < p:
455 errors.append((n.node, "I201", str(n), str(p))) 454 errors.append((n.node, "I201", str(n), str(p)))
456 455
511 actualList.append(el.s) 510 actualList.append(el.s)
512 else: 511 else:
513 # Can't handle anything that isn't a string literal 512 # Can't handle anything that isn't a string literal
514 return None 513 return None
515 514
516 expectedList = self.sorted(actualList, key=self.moduleKey) 515 expectedList = self.sorted(
516 actualList,
517 key=lambda k: self.moduleKey(k, subImports=True),
518 )
517 if expectedList != actualList: 519 if expectedList != actualList:
518 return (node, "I204", ", ".join(expectedList)) 520 return (node, "I204", ", ".join(expectedList))
519 521
520 return None 522 return None
521 523
580 @return key for natural sorting 582 @return key for natural sorting
581 @rtype list of str or int 583 @rtype list of str or int
582 """ 584 """
583 return [self.__atoi(c) for c in re.split(r"(\d+)", text)] 585 return [self.__atoi(c) for c in re.split(r"(\d+)", text)]
584 586
585 def moduleKey(self, moduleName): 587 def moduleKey(self, moduleName, subImports=False):
586 """ 588 """
587 Public method to generate a key for the given module name. 589 Public method to generate a key for the given module name.
588 590
589 @param moduleName module name 591 @param moduleName module name
590 @type str 592 @type str
593 @param subImports flag indicating a sub import like in
594 'from foo import bar, baz' (defaults to False)
595 @type bool (optional)
591 @return generated key 596 @return generated key
592 @rtype str 597 @rtype str
593 """ 598 """
594 prefix = "" 599 prefix = ""
595 600
596 if moduleName.isupper() and len(moduleName) > 1: 601 if subImports:
597 prefix = "A" 602 if moduleName.isupper() and len(moduleName) > 1:
598 elif moduleName[0:1].isupper(): 603 prefix = "A"
599 prefix = "B" 604 elif moduleName[0:1].isupper():
600 else: 605 prefix = "B"
601 prefix = "C" 606 else:
607 prefix = "C"
602 if not self.__sortCaseSensitive: 608 if not self.__sortCaseSensitive:
603 moduleName = moduleName.lower() 609 moduleName = moduleName.lower()
604 610
605 return f"{prefix}{moduleName}" 611 return f"{prefix}{moduleName}"
606 612

eric ide

mercurial