Files
Buffteks-Website/venv/lib/python3.12/site-packages/deptry/reporters/json.py
2025-05-08 21:10:14 -05:00

39 lines
1.1 KiB
Python

from __future__ import annotations
import json
from dataclasses import dataclass
from pathlib import Path
from typing import TYPE_CHECKING
from deptry.reporters.base import Reporter
if TYPE_CHECKING:
from typing import Any
@dataclass
class JSONReporter(Reporter):
json_output: str
def report(self) -> None:
output: list[dict[str, str | dict[str, Any]]] = []
for violation in self.violations:
output.append(
{
"error": {
"code": violation.error_code,
"message": violation.get_error_message(),
},
"module": violation.issue.name,
"location": {
"file": str(violation.location.file),
"line": violation.location.line,
"column": violation.location.column,
},
},
)
with Path(self.json_output).open("w", encoding="utf-8") as f:
json.dump(output, f, ensure_ascii=False, indent=4)