import os import sys from typing import Any, Dict, List from pylama.lint import Linter as BaseLinter from . import SortImports class Linter(BaseLinter): def allow(self, path: str) -> bool: """Determine if this path should be linted.""" return path.endswith(".py") def run(self, path: str, **meta: Any) -> List[Dict[str, Any]]: """Lint the file. Return an array of error dicts if appropriate.""" with open(os.devnull, "w") as devnull: # Suppress isort messages sys.stdout = devnull if SortImports(path, check=True).incorrectly_sorted: return [ {"lnum": 0, "col": 0, "text": "Incorrectly sorted imports.", "type": "ISORT"} ] else: return []