Skip to content

Commit 5f11bf1

Browse files
committed
gh-113317: Move warn() and fail() to libclinic.utils
1 parent 8c6db45 commit 5f11bf1

File tree

3 files changed

+55
-48
lines changed

3 files changed

+55
-48
lines changed

Tools/clinic/clinic.py

+1-47
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,13 @@
4444
Protocol,
4545
TypeVar,
4646
cast,
47-
overload,
4847
)
4948

5049

5150
# Local imports.
5251
import libclinic
5352
import libclinic.cpp
54-
from libclinic import ClinicError
53+
from libclinic import ClinicError, fail, warn
5554

5655

5756
# TODO:
@@ -94,51 +93,6 @@ def __repr__(self) -> str:
9493
TemplateDict = dict[str, str]
9594

9695

97-
@overload
98-
def warn_or_fail(
99-
*args: object,
100-
fail: Literal[True],
101-
filename: str | None = None,
102-
line_number: int | None = None,
103-
) -> NoReturn: ...
104-
105-
@overload
106-
def warn_or_fail(
107-
*args: object,
108-
fail: Literal[False] = False,
109-
filename: str | None = None,
110-
line_number: int | None = None,
111-
) -> None: ...
112-
113-
def warn_or_fail(
114-
*args: object,
115-
fail: bool = False,
116-
filename: str | None = None,
117-
line_number: int | None = None,
118-
) -> None:
119-
joined = " ".join([str(a) for a in args])
120-
error = ClinicError(joined, filename=filename, lineno=line_number)
121-
if fail:
122-
raise error
123-
else:
124-
print(error.report(warn_only=True))
125-
126-
127-
def warn(
128-
*args: object,
129-
filename: str | None = None,
130-
line_number: int | None = None,
131-
) -> None:
132-
return warn_or_fail(*args, filename=filename, line_number=line_number, fail=False)
133-
134-
def fail(
135-
*args: object,
136-
filename: str | None = None,
137-
line_number: int | None = None,
138-
) -> NoReturn:
139-
warn_or_fail(*args, filename=filename, line_number=line_number, fail=True)
140-
141-
14296
class CRenderData:
14397
def __init__(self) -> None:
14498

Tools/clinic/libclinic/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
is_legal_py_identifier,
2323
)
2424
from .utils import (
25+
warn,
26+
fail,
2527
FormatCounterFormatter,
2628
compute_checksum,
2729
create_regex,
@@ -52,6 +54,8 @@
5254
"is_legal_py_identifier",
5355

5456
# Utility functions
57+
"warn",
58+
"fail",
5559
"FormatCounterFormatter",
5660
"compute_checksum",
5761
"create_regex",

Tools/clinic/libclinic/utils.py

+50-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,56 @@
33
import os
44
import re
55
import string
6-
from typing import Literal
6+
from typing import Literal, overload, NoReturn
7+
8+
from .errors import (
9+
ClinicError,
10+
)
11+
12+
13+
@overload
14+
def warn_or_fail(
15+
*args: object,
16+
fail: Literal[True],
17+
filename: str | None = None,
18+
line_number: int | None = None,
19+
) -> NoReturn: ...
20+
21+
@overload
22+
def warn_or_fail(
23+
*args: object,
24+
fail: Literal[False] = False,
25+
filename: str | None = None,
26+
line_number: int | None = None,
27+
) -> None: ...
28+
29+
def warn_or_fail(
30+
*args: object,
31+
fail: bool = False,
32+
filename: str | None = None,
33+
line_number: int | None = None,
34+
) -> None:
35+
joined = " ".join([str(a) for a in args])
36+
error = ClinicError(joined, filename=filename, lineno=line_number)
37+
if fail:
38+
raise error
39+
else:
40+
print(error.report(warn_only=True))
41+
42+
43+
def warn(
44+
*args: object,
45+
filename: str | None = None,
46+
line_number: int | None = None,
47+
) -> None:
48+
return warn_or_fail(*args, filename=filename, line_number=line_number, fail=False)
49+
50+
def fail(
51+
*args: object,
52+
filename: str | None = None,
53+
line_number: int | None = None,
54+
) -> NoReturn:
55+
warn_or_fail(*args, filename=filename, line_number=line_number, fail=True)
756

857

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

0 commit comments

Comments
 (0)