Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7766c3d

Browse files
authored
Share more code between thewarn() andfail() branches (python#49)
1 parent90e1bc9 commit7766c3d

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

‎Lib/test/test_clinic.py‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,8 +1446,12 @@ def test_non_ascii_character_in_docstring(self):
14461446
self.parse(block)
14471447
# The line numbers are off; this is a known limitation.
14481448
expected=dedent("""\
1449-
Warning on line 0: Non-ascii characters are not allowed in docstrings: 'á'
1450-
Warning on line 0: Non-ascii characters are not allowed in docstrings: 'ü', 'á', 'ß'
1449+
Warning on line 0:
1450+
Non-ascii characters are not allowed in docstrings: 'á'
1451+
1452+
Warning on line 0:
1453+
Non-ascii characters are not allowed in docstrings: 'ü', 'á', 'ß'
1454+
14511455
""")
14521456
self.assertEqual(stdout.getvalue(),expected)
14531457

‎Tools/clinic/clinic.py‎

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -137,18 +137,25 @@ def text_accumulator() -> TextAccumulator:
137137
returnTextAccumulator(append,output)
138138

139139

140+
@dc.dataclass
140141
classClinicError(Exception):
141-
def__init__(
142-
self,
143-
message:str,
144-
/,
145-
*,
146-
lineno:int|None=None,
147-
filename:str|None=None
148-
)->None:
149-
super().__init__(message)
150-
self.lineno=lineno
151-
self.filename=filename
142+
message:str
143+
_:dc.KW_ONLY
144+
lineno:int|None=None
145+
filename:str|None=None
146+
147+
def__post_init__(self)->None:
148+
super().__init__(self.message)
149+
150+
defreport(self,*,warn_only:bool=False)->str:
151+
msg="Warning"ifwarn_onlyelse"Error"
152+
ifself.filenameisnotNone:
153+
msg+=f" in file{self.filename!r}"
154+
ifself.linenoisnotNone:
155+
msg+=f" on line{self.lineno}"
156+
msg+=":\n"
157+
msg+=f"{self.message}\n"
158+
returnmsg
152159

153160

154161
@overload
@@ -179,16 +186,11 @@ def warn_or_fail(
179186
filename=clinic.filename
180187
ifgetattr(clinic,'block_parser',None)and (line_numberisNone):
181188
line_number=clinic.block_parser.line_number
189+
error=ClinicError(joined,filename=filename,lineno=line_number)
182190
iffail:
183-
raiseClinicError(joined,lineno=line_number,filename=filename)
191+
raiseerror
184192
else:
185-
msg="Warning"
186-
iffilenameisnotNone:
187-
msg+=f" in file{filename!r}"
188-
ifline_numberisnotNone:
189-
msg+=f" on line{line_number}"
190-
msg+=f":{joined}"
191-
print(msg)
193+
print(error.report(warn_only=True))
192194

193195

194196
defwarn(
@@ -5734,13 +5736,7 @@ def main(argv: list[str] | None = None) -> NoReturn:
57345736
try:
57355737
run_clinic(parser,args)
57365738
exceptClinicErrorasexc:
5737-
sys.stderr.write("Error")
5738-
ifexc.filenameisnotNone:
5739-
sys.stderr.write(f" in file{exc.filename!r}")
5740-
ifexc.linenoisnotNone:
5741-
sys.stderr.write(f" on line{exc.lineno}")
5742-
sys.stderr.write(":\n")
5743-
sys.stderr.write(f"{exc}\n")
5739+
sys.stderr.write(exc.report())
57445740
sys.exit(1)
57455741
else:
57465742
sys.exit(0)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp