Skip to content

Commit

Permalink
gh-113317: Move warn() and fail() to libclinic.utils
Browse files Browse the repository at this point in the history
  • Loading branch information
vstinner committed Mar 13, 2024
1 parent 8c6db45 commit 5f11bf1
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 48 deletions.
48 changes: 1 addition & 47 deletions Tools/clinic/clinic.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,13 @@
Protocol,
TypeVar,
cast,
overload,
)


# Local imports.
import libclinic
import libclinic.cpp
from libclinic import ClinicError
from libclinic import ClinicError, fail, warn


# TODO:
Expand Down Expand Up @@ -94,51 +93,6 @@ def __repr__(self) -> str:
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:

Expand Down
4 changes: 4 additions & 0 deletions Tools/clinic/libclinic/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
is_legal_py_identifier,
)
from .utils import (
warn,
fail,
FormatCounterFormatter,
compute_checksum,
create_regex,
Expand Down Expand Up @@ -52,6 +54,8 @@
"is_legal_py_identifier",

# Utility functions
"warn",
"fail",
"FormatCounterFormatter",
"compute_checksum",
"create_regex",
Expand Down
51 changes: 50 additions & 1 deletion Tools/clinic/libclinic/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,56 @@
import os
import re
import string
from typing import Literal
from typing import Literal, overload, NoReturn

from .errors import (
ClinicError,
)


@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)


def write_file(filename: str, new_contents: str) -> None:
Expand Down

0 comments on commit 5f11bf1

Please sign in to comment.