summaryrefslogtreecommitdiff
path: root/isort/pylama_isort.py
blob: a8e508e9875209ca2904342e67b8eb9971e18207 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 []