mirror of https://github.com/python/cpython
gh-113317, AC: Move warn() and fail() to libclinic.errors (#116770)
This commit is contained in:
parent
3a25d9c5a9
commit
a18c9854e8
|
@ -44,14 +44,13 @@ from typing import (
|
|||
Protocol,
|
||||
TypeVar,
|
||||
cast,
|
||||
overload,
|
||||
)
|
||||
|
||||
|
||||
# Local imports.
|
||||
import libclinic
|
||||
import libclinic.cpp
|
||||
from libclinic import ClinicError
|
||||
from libclinic import ClinicError, fail, warn
|
||||
|
||||
|
||||
# TODO:
|
||||
|
@ -94,51 +93,6 @@ NULL = Null()
|
|||
TemplateDict = dict[str, str]
|
||||
|
||||
|
||||
@overload
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: Literal[True],
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> NoReturn: ...
|
||||
|
||||
@overload
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: Literal[False] = False,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None: ...
|
||||
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: bool = False,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None:
|
||||
joined = " ".join([str(a) for a in args])
|
||||
error = ClinicError(joined, filename=filename, lineno=line_number)
|
||||
if fail:
|
||||
raise error
|
||||
else:
|
||||
print(error.report(warn_only=True))
|
||||
|
||||
|
||||
def warn(
|
||||
*args: object,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None:
|
||||
return warn_or_fail(*args, filename=filename, line_number=line_number, fail=False)
|
||||
|
||||
def fail(
|
||||
*args: object,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> NoReturn:
|
||||
warn_or_fail(*args, filename=filename, line_number=line_number, fail=True)
|
||||
|
||||
|
||||
class CRenderData:
|
||||
def __init__(self) -> None:
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ from typing import Final
|
|||
|
||||
from .errors import (
|
||||
ClinicError,
|
||||
warn,
|
||||
fail,
|
||||
)
|
||||
from .formatting import (
|
||||
SIG_END_MARKER,
|
||||
|
@ -32,6 +34,8 @@ from .utils import (
|
|||
__all__ = [
|
||||
# Error handling
|
||||
"ClinicError",
|
||||
"warn",
|
||||
"fail",
|
||||
|
||||
# Formatting helpers
|
||||
"SIG_END_MARKER",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import dataclasses as dc
|
||||
from typing import Literal, NoReturn, overload
|
||||
|
||||
|
||||
@dc.dataclass
|
||||
|
@ -24,3 +25,48 @@ class ClinicError(Exception):
|
|||
|
||||
class ParseError(ClinicError):
|
||||
pass
|
||||
|
||||
|
||||
@overload
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: Literal[True],
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> NoReturn: ...
|
||||
|
||||
@overload
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: Literal[False] = False,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None: ...
|
||||
|
||||
def warn_or_fail(
|
||||
*args: object,
|
||||
fail: bool = False,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None:
|
||||
joined = " ".join([str(a) for a in args])
|
||||
error = ClinicError(joined, filename=filename, lineno=line_number)
|
||||
if fail:
|
||||
raise error
|
||||
else:
|
||||
print(error.report(warn_only=True))
|
||||
|
||||
|
||||
def warn(
|
||||
*args: object,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> None:
|
||||
return warn_or_fail(*args, filename=filename, line_number=line_number, fail=False)
|
||||
|
||||
def fail(
|
||||
*args: object,
|
||||
filename: str | None = None,
|
||||
line_number: int | None = None,
|
||||
) -> NoReturn:
|
||||
warn_or_fail(*args, filename=filename, line_number=line_number, fail=True)
|
||||
|
|
Loading…
Reference in New Issue