mirror of https://github.com/python/cpython
27 lines
638 B
Python
27 lines
638 B
Python
import dataclasses as dc
|
|
|
|
|
|
@dc.dataclass
|
|
class ClinicError(Exception):
|
|
message: str
|
|
_: dc.KW_ONLY
|
|
lineno: int | None = None
|
|
filename: str | None = None
|
|
|
|
def __post_init__(self) -> None:
|
|
super().__init__(self.message)
|
|
|
|
def report(self, *, warn_only: bool = False) -> str:
|
|
msg = "Warning" if warn_only else "Error"
|
|
if self.filename is not None:
|
|
msg += f" in file {self.filename!r}"
|
|
if self.lineno is not None:
|
|
msg += f" on line {self.lineno}"
|
|
msg += ":\n"
|
|
msg += f"{self.message}\n"
|
|
return msg
|
|
|
|
|
|
class ParseError(ClinicError):
|
|
pass
|