Skip to content

pylint

read_payload(payload)

Transform a pylint payload to a list of FileReport instances.

Parameters:

Name Type Description Default
payload str

The raw payload from pylint.

required

Returns:

Type Description
OneOf[Issue, List[FileReport]]

A OneOf containing an Issue or a list of FileReport instances.

Source code in m/ci/celt/post_processors/pylint.py
def read_payload(payload: str) -> OneOf[Issue, List[FileReport]]:
    """Transform a pylint payload to a list of `FileReport` instances.

    Args:
        payload: The raw payload from pylint.

    Returns:
        A `OneOf` containing an `Issue` or a list of `FileReport` instances.
    """
    res = json.parse_json(payload)
    if res.is_bad:
        return res
    violations = cast(List[Any], res.value)
    report: Dict[str, List[Violation]] = {}
    for v_item in violations:
        violation = Violation(
            rule_id=v_item['symbol'],
            message=v_item['message'],
            line=int(v_item['line']),
            column=int(v_item['column']),
            file_path=v_item['path'],
        )
        if violation.file_path not in report:
            report[violation.file_path] = []
        report[violation.file_path].append(violation)
    return Good([
        FileReport(file_path=name, violations=violations)
        for name, violations in report.items()
    ])