Skip to content

Commit cb7b242

Browse files
blueyedmsullivan
authored andcommitted
Use level "note" for reveal_type and reveal_locals (#6919)
Tests were fixed using: - sed -i 's/# E: Revealed type/# N: Revealed type/g' test-data/**/*.test - sed -i 's/: error: Revealed type/: note: Revealed type/g' test-data/**/*.test Fixes #6901.
1 parent 5a95f96 commit cb7b242

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3263
-3263
lines changed

docs/source/common_issues.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,8 @@ to see the types of all local variables at once. Example:
456456
b = 'one'
457457
reveal_locals()
458458
# Revealed local types are:
459-
# a: builtins.int
460-
# b: builtins.str
459+
# a: builtins.int
460+
# b: builtins.str
461461
.. note::
462462

463463
``reveal_type`` and ``reveal_locals`` are only understood by mypy and

mypy/messages.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,15 +1068,15 @@ def invalid_signature_for_special_method(
10681068
self.fail('Invalid signature "{}" for "{}"'.format(func_type, method_name), context)
10691069

10701070
def reveal_type(self, typ: Type, context: Context) -> None:
1071-
self.fail('Revealed type is \'{}\''.format(typ), context)
1071+
self.note('Revealed type is \'{}\''.format(typ), context)
10721072

10731073
def reveal_locals(self, type_map: Dict[str, Optional[Type]], context: Context) -> None:
10741074
# To ensure that the output is predictable on Python < 3.6,
10751075
# use an ordered dictionary sorted by variable name
10761076
sorted_locals = OrderedDict(sorted(type_map.items(), key=lambda t: t[0]))
1077-
self.fail("Revealed local types are:", context)
1078-
for line in ['{}: {}'.format(k, v) for k, v in sorted_locals.items()]:
1079-
self.fail(line, context)
1077+
self.note("Revealed local types are:", context)
1078+
for line in [' {}: {}'.format(k, v) for k, v in sorted_locals.items()]:
1079+
self.note(line, context)
10801080

10811081
def unsupported_type_type(self, item: Type, context: Context) -> None:
10821082
self.fail('Unsupported type Type[{}]'.format(self.format(item)), context)

mypy/test/testpep561.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ class NSImportStyle(Enum):
5454

5555
class SimpleMsg(Enum):
5656
msg_dne = "{tempfile}:3: error: Module 'typedpkg' has no attribute 'dne'"
57-
msg_list = "{tempfile}:5: error: Revealed type is 'builtins.list[builtins.str]'"
58-
msg_tuple = "{tempfile}:5: error: Revealed type is 'builtins.tuple[builtins.str]'"
57+
msg_list = "{tempfile}:5: note: Revealed type is 'builtins.list[builtins.str]'"
58+
msg_tuple = "{tempfile}:5: note: Revealed type is 'builtins.tuple[builtins.str]'"
5959

6060

6161
class NamespaceMsg(Enum):

scripts/find_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def run_mypy(mypy_and_args: List[str], filename: str, tmp_name: str) -> str:
4242
return proc.stdout.decode(encoding="utf-8")
4343

4444
def get_revealed_type(line: str, relevant_file: str, relevant_line: int) -> Optional[str]:
45-
m = re.match(r"(.+?):(\d+): error: Revealed type is '(.*)'$", line)
45+
m = re.match(r"(.+?):(\d+): note: Revealed type is '(.*)'$", line)
4646
if (m and
4747
int(m.group(2)) == relevant_line and
4848
os.path.samefile(relevant_file, m.group(1))):

test-data/unit/check-async-await.test

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ async def f() -> int:
1212

1313
async def f() -> int:
1414
return 0
15-
reveal_type(f()) # E: Revealed type is 'typing.Coroutine[Any, Any, builtins.int]'
15+
reveal_type(f()) # N: Revealed type is 'typing.Coroutine[Any, Any, builtins.int]'
1616
[builtins fixtures/async_await.pyi]
1717
[typing fixtures/typing-full.pyi]
1818

@@ -39,7 +39,7 @@ main:4: error: Return value expected
3939

4040
async def f() -> int:
4141
x = await f()
42-
reveal_type(x) # E: Revealed type is 'builtins.int*'
42+
reveal_type(x) # N: Revealed type is 'builtins.int*'
4343
return x
4444
[builtins fixtures/async_await.pyi]
4545
[typing fixtures/typing-full.pyi]
@@ -55,7 +55,7 @@ async def f(x: T) -> T:
5555
return y
5656
[typing fixtures/typing-full.pyi]
5757
[out]
58-
main:6: error: Revealed type is 'T`-1'
58+
main:6: note: Revealed type is 'T`-1'
5959

6060
[case testAwaitAnyContext]
6161

@@ -67,7 +67,7 @@ async def f(x: T) -> T:
6767
return y
6868
[typing fixtures/typing-full.pyi]
6969
[out]
70-
main:6: error: Revealed type is 'Any'
70+
main:6: note: Revealed type is 'Any'
7171

7272
[case testAwaitExplicitContext]
7373

@@ -80,7 +80,7 @@ async def f(x: T) -> T:
8080
[typing fixtures/typing-full.pyi]
8181
[out]
8282
main:5: error: Argument 1 to "f" has incompatible type "T"; expected "int"
83-
main:6: error: Revealed type is 'builtins.int'
83+
main:6: note: Revealed type is 'builtins.int'
8484

8585
[case testAwaitGeneratorError]
8686

@@ -150,7 +150,7 @@ class C(AsyncIterator[int]):
150150
async def __anext__(self) -> int: return 0
151151
async def f() -> None:
152152
async for x in C():
153-
reveal_type(x) # E: Revealed type is 'builtins.int*'
153+
reveal_type(x) # N: Revealed type is 'builtins.int*'
154154
[builtins fixtures/async_await.pyi]
155155
[typing fixtures/typing-full.pyi]
156156

@@ -178,7 +178,7 @@ async def f() -> None:
178178
pass
179179

180180
async for z in C(): # type: Union[int, str]
181-
reveal_type(z) # E: Revealed type is 'Union[builtins.int, builtins.str]'
181+
reveal_type(z) # N: Revealed type is 'Union[builtins.int, builtins.str]'
182182
[builtins fixtures/async_await.pyi]
183183
[typing fixtures/typing-full.pyi]
184184

@@ -201,23 +201,23 @@ class asyncify(Generic[T], AsyncIterator[T]):
201201

202202
async def listcomp(obj: Iterable[int]):
203203
lst = [i async for i in asyncify(obj)]
204-
reveal_type(lst) # E: Revealed type is 'builtins.list[builtins.int*]'
204+
reveal_type(lst) # N: Revealed type is 'builtins.list[builtins.int*]'
205205
lst2 = [i async for i in asyncify(obj) for j in obj]
206-
reveal_type(lst2) # E: Revealed type is 'builtins.list[builtins.int*]'
206+
reveal_type(lst2) # N: Revealed type is 'builtins.list[builtins.int*]'
207207

208208
async def setcomp(obj: Iterable[int]):
209209
lst = {i async for i in asyncify(obj)}
210-
reveal_type(lst) # E: Revealed type is 'builtins.set[builtins.int*]'
210+
reveal_type(lst) # N: Revealed type is 'builtins.set[builtins.int*]'
211211

212212
async def dictcomp(obj: Iterable[Tuple[int, str]]):
213213
lst = {i: j async for i, j in asyncify(obj)}
214-
reveal_type(lst) # E: Revealed type is 'builtins.dict[builtins.int*, builtins.str*]'
214+
reveal_type(lst) # N: Revealed type is 'builtins.dict[builtins.int*, builtins.str*]'
215215

216216
async def generatorexp(obj: Iterable[int]):
217217
lst = (i async for i in asyncify(obj))
218-
reveal_type(lst) # E: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
218+
reveal_type(lst) # N: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
219219
lst2 = (i async for i in asyncify(obj) for i in obj)
220-
reveal_type(lst2) # E: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
220+
reveal_type(lst2) # N: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
221221

222222
[builtins fixtures/async_await.pyi]
223223
[typing fixtures/typing-full.pyi]
@@ -260,7 +260,7 @@ class C:
260260
async def __aexit__(self, x, y, z) -> None: pass
261261
async def f() -> None:
262262
async with C() as x:
263-
reveal_type(x) # E: Revealed type is 'builtins.int*'
263+
reveal_type(x) # N: Revealed type is 'builtins.int*'
264264
[builtins fixtures/async_await.pyi]
265265
[typing fixtures/typing-full.pyi]
266266

@@ -399,11 +399,11 @@ class I(AsyncIterator[int]):
399399
return A()
400400
async def main() -> None:
401401
x = await A()
402-
reveal_type(x) # E: Revealed type is 'builtins.int'
402+
reveal_type(x) # N: Revealed type is 'builtins.int'
403403
async with C() as y:
404-
reveal_type(y) # E: Revealed type is 'builtins.int'
404+
reveal_type(y) # N: Revealed type is 'builtins.int'
405405
async for z in I():
406-
reveal_type(z) # E: Revealed type is 'builtins.int'
406+
reveal_type(z) # N: Revealed type is 'builtins.int'
407407
[builtins fixtures/async_await.pyi]
408408
[typing fixtures/typing-full.pyi]
409409

@@ -415,7 +415,7 @@ from types import coroutine
415415
def f() -> Generator[int, str, int]:
416416
x = yield 0
417417
x = yield '' # E: Incompatible types in "yield" (actual type "str", expected type "int")
418-
reveal_type(x) # E: Revealed type is 'builtins.str'
418+
reveal_type(x) # N: Revealed type is 'builtins.str'
419419
if x:
420420
return 0
421421
else:
@@ -435,18 +435,18 @@ async def f() -> int:
435435

436436
async def g() -> AsyncGenerator[int, None]:
437437
value = await f()
438-
reveal_type(value) # E: Revealed type is 'builtins.int*'
438+
reveal_type(value) # N: Revealed type is 'builtins.int*'
439439
yield value
440440

441441
yield 'not an int' # E: Incompatible types in "yield" (actual type "str", expected type "int")
442442
# return without a value is fine
443443
return
444-
reveal_type(g) # E: Revealed type is 'def () -> typing.AsyncGenerator[builtins.int, None]'
445-
reveal_type(g()) # E: Revealed type is 'typing.AsyncGenerator[builtins.int, None]'
444+
reveal_type(g) # N: Revealed type is 'def () -> typing.AsyncGenerator[builtins.int, None]'
445+
reveal_type(g()) # N: Revealed type is 'typing.AsyncGenerator[builtins.int, None]'
446446

447447
async def h() -> None:
448448
async for item in g():
449-
reveal_type(item) # E: Revealed type is 'builtins.int*'
449+
reveal_type(item) # N: Revealed type is 'builtins.int*'
450450

451451
async def wrong_return() -> Generator[int, None, None]: # E: The return type of an async generator function should be "AsyncGenerator" or one of its supertypes
452452
yield 3
@@ -465,7 +465,7 @@ async def gen() -> AsyncIterator[int]:
465465

466466
async def use_gen() -> None:
467467
async for item in gen():
468-
reveal_type(item) # E: Revealed type is 'builtins.int*'
468+
reveal_type(item) # N: Revealed type is 'builtins.int*'
469469

470470
[builtins fixtures/dict.pyi]
471471
[typing fixtures/typing-full.pyi]
@@ -481,9 +481,9 @@ async def genfunc() -> AsyncGenerator[int, None]:
481481
async def user() -> None:
482482
gen = genfunc()
483483

484-
reveal_type(gen.__aiter__()) # E: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
484+
reveal_type(gen.__aiter__()) # N: Revealed type is 'typing.AsyncGenerator[builtins.int*, None]'
485485

486-
reveal_type(await gen.__anext__()) # E: Revealed type is 'builtins.int*'
486+
reveal_type(await gen.__anext__()) # N: Revealed type is 'builtins.int*'
487487

488488
[builtins fixtures/dict.pyi]
489489
[typing fixtures/typing-full.pyi]
@@ -498,13 +498,13 @@ async def f() -> None:
498498
async def gen() -> AsyncGenerator[int, str]:
499499
await f()
500500
v = yield 42
501-
reveal_type(v) # E: Revealed type is 'builtins.str'
501+
reveal_type(v) # N: Revealed type is 'builtins.str'
502502
await f()
503503

504504
async def h() -> None:
505505
g = gen()
506506
await g.asend(()) # E: Argument 1 to "asend" of "AsyncGenerator" has incompatible type "Tuple[]"; expected "str"
507-
reveal_type(await g.asend('hello')) # E: Revealed type is 'builtins.int*'
507+
reveal_type(await g.asend('hello')) # N: Revealed type is 'builtins.int*'
508508

509509
[builtins fixtures/dict.pyi]
510510
[typing fixtures/typing-full.pyi]
@@ -522,8 +522,8 @@ async def gen() -> AsyncGenerator[str, int]:
522522
async def h() -> None:
523523
g = gen()
524524
v = await g.asend(1)
525-
reveal_type(v) # E: Revealed type is 'builtins.str*'
526-
reveal_type(await g.athrow(BaseException)) # E: Revealed type is 'builtins.str*'
525+
reveal_type(v) # N: Revealed type is 'builtins.str*'
526+
reveal_type(await g.athrow(BaseException)) # N: Revealed type is 'builtins.str*'
527527

528528
[builtins fixtures/dict.pyi]
529529
[typing fixtures/typing-full.pyi]

0 commit comments

Comments
 (0)