Source code for violations.pep8

from django.template.loader import render_to_string
from tasks.const import STATUS_SUCCESS, STATUS_FAILED
from .base import library


def _prepare_source_line(line):
    """Prepare source line"""
    source, violation = line.split(': ')
    file_name, line, symbol = source.split(':')
    return file_name, line, symbol, violation


def _prepare_lines_for_comments(lines):
    """Prepare lines to comments"""
    for line in lines:
        try:
            yield {
                'body': line[3],
                'line': int(line[1]),
                'path': line[0][2:] if line[0].startswith('./') else line[0],
                'position': int(line[2]),
            }
        except Exception:
            pass


@library.register('pep8')
[docs]def pep8_violation(data): """PEP8 violation parser :param data: task data :type data: dict :returns: dict """ count = len(data['raw'].split('\n')) - 1 data['status'] = STATUS_SUCCESS if count == 0 else STATUS_FAILED data['preview'] = render_to_string('violations/pep8/preview.html', { 'count': count, }) lines = map(_prepare_source_line, data['raw'].split('\n')[:-1]) data['prepared'] = render_to_string('violations/pep8/prepared.html', { 'violations': lines, }) if not data.get('nocomment'): data['lines'] = list(_prepare_lines_for_comments(lines)) data['plot'] = { 'count': count, } return data