Skip to content

Impact text

impact_text

Text rendering for ast_impact reports.

render_impact_batch_text(reports)

Render multiple impact reports as human-readable text.

Source code in packages/axm-ast/src/axm_ast/tools/impact_text.py
Python
def render_impact_batch_text(reports: list[dict[str, Any]]) -> str:
    """Render multiple impact reports as human-readable text."""
    if not reports:
        return ""

    try:
        score_order = {"LOW": 0, "MEDIUM": 1, "HIGH": 2}
        best = "LOW"
        for r in reports:
            s = r.get("score", "LOW")
            if score_order.get(s, 0) > score_order.get(best, 0):
                best = s
        header = f"ast_impact | {len(reports)} symbols | max={best}"
        sections: list[str] = [header]
        for r in reports:
            symbol = r.get("symbol", "?")
            score = r.get("score", "UNKNOWN")
            section_header = f"## {symbol} | {score}"
            body = _render_impact_single(r)
            body_lines = body.split("\n")[1:]
            sections.append(section_header + "\n" + "\n".join(body_lines))
        return "\n\n".join(sections)
    except (KeyError, TypeError, AttributeError):
        return ""

render_impact_text(report)

Render a single impact report as human-readable text.

Source code in packages/axm-ast/src/axm_ast/tools/impact_text.py
Python
def render_impact_text(report: dict[str, Any]) -> str:
    """Render a single impact report as human-readable text."""
    try:
        return _render_impact_single(report)
    except (KeyError, TypeError, AttributeError):
        symbol = report.get("symbol", "?") if isinstance(report, dict) else "?"
        return f"ast_impact | {symbol} | render error"