Skip to content

Miscellaneous

Error dataclass

Base class for rich error messages that can be created within strategies, while providing a chance to generate meaningful feedback. Parser errors are a particular case (ParseError).

Attributes:

Name Type Description
label str | None

A concise label for the error.

description str | None

A more detailed description of the error.

meta Any | None

Additional metadata that can be used to provide more context about the error.

Source code in src/delphyne/core/errors.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@dataclass
class Error:
    """
    Base class for rich error messages that can be created within
    strategies, while providing a chance to generate meaningful
    feedback. Parser errors are a particular case (`ParseError`).

    Attributes:
        label: A concise label for the error.
        description: A more detailed description of the error.
        meta: Additional metadata that can be used to provide more
            context about the error.
    """

    label: str | None = None
    description: str | None = None
    meta: Any | None = None

    def __init__(
        self,
        *,
        label: str | None = None,
        description: str | None = None,
        meta: Any | None = None,
    ):
        if label is not None:
            assert label
            # Should we prevent some characters in labels?
            # assert not any(c in label for c in [" ", "\n", "\t"])
        # assert label or description
        self.label = label
        self.description = description
        self.meta = meta

    def __str__(self):
        elts: list[str] = []
        if self.label:
            elts.append(self.label)
        if self.description:
            elts.append(self.description)
        if self.meta:
            elts.append(pprint.pformat(self.meta))
        return "\n\n".join(elts)