Skip to content

liblaf.grapes.rich.traceback ¤

Classes:

Functions:

RichExceptionSummary ¤

Parameters:

Attributes:

Methods:

cause cached property ¤

cause: Self | None

context cached property ¤

context: Self | None

exc_type instance-attribute ¤

exc_type: type[BaseException]

exc_type_str cached property ¤

exc_type_str: str

exc_value instance-attribute ¤

exc_value: BaseException

exceptions cached property ¤

exceptions: list[Self]

highlighter class-attribute instance-attribute ¤

highlighter: Highlighter = field(
    repr=False, init=False, factory=ReprHighlighter
)

stack cached property ¤

traceback instance-attribute ¤

traceback: TracebackType | None

__attrs_post_init__ ¤

__attrs_post_init__() -> None
Source code in src/liblaf/grapes/rich/traceback/_exception.py
28
29
def __attrs_post_init__(self) -> None:
    self._seen.add(id(self.exc_value))

__rich_console__ ¤

__rich_console__(
    console: Console, options: ConsoleOptions
) -> RenderResult
Source code in src/liblaf/grapes/rich/traceback/_exception.py
31
32
33
34
def __rich_console__(
    self, console: Console, options: ConsoleOptions
) -> RenderResult:
    yield from self.render()

render ¤

render(
    options: RichTracebackOptions | None = None,
) -> Generator[RenderableType]
Source code in src/liblaf/grapes/rich/traceback/_exception.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
def render(
    self, options: RichTracebackOptions | None = None
) -> Generator[RenderableType]:
    if options is None:
        options = RichTracebackOptions()
    if self.cause is not None:
        yield from self.cause.render(options)
        yield Text(
            "\nThe above exception was the direct cause of the following exception:\n",
            style="italic",
        )
    if self.context is not None:
        yield from self.context.render(options)
        yield Text(
            "\nDuring handling of the above exception, another exception occurred:\n",
            style="italic",
        )
    yield from self.stack.render(options)
    yield from self._render_exception_only(options)
    if self.exceptions:
        yield from self._render_subexceptions(options)

RichFrameSummary ¤

Parameters:

Methods:

Attributes:

end_column property ¤

end_column: int | None

end_line property ¤

end_line: int | None

filename cached property ¤

filename: str

frame instance-attribute ¤

frame: FrameType

hidden cached property ¤

hidden: bool

lasti instance-attribute ¤

lasti: int

lineno instance-attribute ¤

lineno: int

locals cached property ¤

locals: dict[str, Any]

name cached property ¤

name: str

position cached property ¤

position: tuple[
    int | None, int | None, int | None, int | None
]

qualname cached property ¤

qualname: str

start_column property ¤

start_column: int | None

start_line property ¤

start_line: int | None

__rich_console__ ¤

__rich_console__(
    console: Console, options: ConsoleOptions
) -> RenderResult
Source code in src/liblaf/grapes/rich/traceback/_frame.py
26
27
28
29
def __rich_console__(
    self, console: Console, options: ConsoleOptions
) -> RenderResult:
    yield from self.render()

render ¤

render(
    options: RichTracebackOptions | None = None,
) -> Generator[RenderableType]
Source code in src/liblaf/grapes/rich/traceback/_frame.py
71
72
73
74
75
76
77
78
79
80
def render(
    self, options: RichTracebackOptions | None = None
) -> Generator[RenderableType]:
    if options is None:
        options = RichTracebackOptions()
    yield from self._render_location(options)
    if not self.hidden:
        yield from self._render_syntax(options)
        if options.show_locals:
            yield from self._render_locals(options)

RichStackSummary ¤

Parameters:

Methods:

Attributes:

frames cached property ¤

traceback instance-attribute ¤

traceback: TracebackType | None

__rich_console__ ¤

__rich_console__(
    console: Console, options: ConsoleOptions
) -> RenderResult
Source code in src/liblaf/grapes/rich/traceback/_stack.py
19
20
21
22
def __rich_console__(
    self, console: Console, options: ConsoleOptions
) -> RenderResult:
    yield from self.render()

render ¤

render(
    options: RichTracebackOptions | None = None,
) -> Generator[RenderableType]
Source code in src/liblaf/grapes/rich/traceback/_stack.py
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def render(
    self, options: RichTracebackOptions | None = None
) -> Generator[RenderableType]:
    if options is None:
        options = RichTracebackOptions()
    if not self.frames:
        return
    panel = Panel(
        self._render_frames(options),
        title=Text.assemble(
            "Traceback ",
            ("(most recent call last)", "dim"),
            style="traceback.title",
        ),
        expand=False,
        style=options.theme.get_background_style(),
        border_style="traceback.border",
    )
    yield panel

install ¤

install(*, console: Console | None = None) -> None
Source code in src/liblaf/grapes/rich/traceback/_install.py
11
12
13
14
15
16
17
18
19
20
21
22
23
def install(*, console: Console | None = None) -> None:
    if console is None:
        console = get_console(stderr=True)

    def excepthook(
        exc_type: type[BaseException],
        exc_value: BaseException,
        traceback: types.TracebackType | None,
    ) -> None:
        exc = RichExceptionSummary(exc_type, exc_value, traceback)
        console.print(exc)

    sys.excepthook = excepthook