-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Bug Report
Mypy crashes (errors) when using an aliased Callable
with an unpacked Tuple
within the arguments part. The definition throws no errors and using the type without the use of an alias is also working fine.
mypy version: 1.7.0
python version: 3.11.2
To Reproduce
This is the smallest reproduction I could come up with. The error occours with the definition of f2
where the type alias _CallableValue
is used.
from typing import Callable, Any, Tuple, Unpack
_CallableValue = Callable[[Unpack[Tuple[Any, ...]]], Any] # This is fine
def f(fun: Callable[[Unpack[Tuple[Any, ...]]], Any]) -> None: ... # This is fine
def f2(fun: _CallableValue) -> None: ... # Mypy errors here with an internal error
Expected Behavior
I would expect mypy to not have an internal error and instead produce a success result.
Actual Behavior
Mypy has an internal error.
Output with my projects environment (VSCode, Python 3.11.2, mypy 1.7.0 (compiled: yes)):
2023-11-21 12:20:06.389 [info] [Trace - 12:20:06 PM] Sending notification 'textDocument/didSave'.
2023-11-21 12:20:06.397 [info] [Trace - 12:20:06 PM] Received notification 'window/logMessage'.
2023-11-21 12:20:06.397 [info] venv/Scripts/python.exe -m mypy --no-color-output --no-error-summary --show-absolute-path --show-column-numbers --show-error-codes --no-pretty --show-traceback --show-error-end c:\Users\[PROJECT_PATH]\.vscode\mypytest.py
2023-11-21 12:20:06.398 [info] [Trace - 12:20:06 PM] Received notification 'window/logMessage'.
2023-11-21 12:20:06.398 [info] CWD Server: c:\Users\[PROJECT_PATH]
2023-11-21 12:20:07.125 [info] [Trace - 12:20:07 PM] Received notification 'window/logMessage'.
2023-11-21 12:20:07.125 [info] c:\Users\[PROJECT_PATH]\.vscode\mypytest.py:7: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 1.7.0
c:\Users\[PROJECT_PATH]\.vscode\mypytest.py:7: : note: use --pdb to drop into pdb
2023-11-21 12:20:07.126 [info] [Trace - 12:20:07 PM] Received notification 'window/logMessage'.
2023-11-21 12:20:07.126 [info] file:///c%3A/Users/[PROJECT_PATH]/.vscode/mypytest.py :
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "mypy\semanal.py", line 6525, in accept
File "mypy\nodes.py", line 785, in accept
File "mypy\semanal.py", line 832, in visit_func_def
File "mypy\semanal.py", line 866, in analyze_func_def
File "mypy\semanal_shared.py", line 373, in has_placeholder
File "mypy\types.py", line 1964, in accept
File "mypy\type_visitor.py", line 505, in visit_callable_type
File "mypy\type_visitor.py", line 557, in query_types
File "mypy\types.py", line 395, in accept
File "mypy\type_visitor.py", line 550, in visit_type_alias_type
File "mypy\types.py", line 3072, in get_proper_type
File "mypy\types.py", line 337, in _expand_once
File "mypy\types.py", line 1964, in accept
File "mypy\expandtype.py", line 368, in visit_callable_type
File "mypy\expandtype.py", line 317, in interpolate_args_for_unpack
AssertionError:
2023-11-21 12:20:07.126 [info] [Trace - 12:20:07 PM] Received notification 'window/logMessage'.
2023-11-21 12:20:07.126 [info] file:///c%3A/Users/[PROJECT_PATH]/.vscode/mypytest.py :
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "mypy\semanal.py", line 6525, in accept
File "mypy\nodes.py", line 785, in accept
File "mypy\semanal.py", line 832, in visit_func_def
File "mypy\semanal.py", line 866, in analyze_func_def
File "mypy\semanal_shared.py", line 373, in has_placeholder
File "mypy\types.py", line 1964, in accept
File "mypy\type_visitor.py", line 505, in visit_callable_type
File "mypy\type_visitor.py", line 557, in query_types
File "mypy\types.py", line 395, in accept
File "mypy\type_visitor.py", line 550, in visit_type_alias_type
File "mypy\types.py", line 3072, in get_proper_type
File "mypy\types.py", line 337, in _expand_once
File "mypy\types.py", line 1964, in accept
File "mypy\expandtype.py", line 368, in visit_callable_type
File "mypy\expandtype.py", line 317, in interpolate_args_for_unpack
AssertionError:
2023-11-21 12:20:07.126 [info] [Trace - 12:20:07 PM] Received notification 'textDocument/publishDiagnostics'.
Playground gist output (Python 3.11 and mypy 1.7.0)
Failed (exit code: 2) (3302 ms)
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "mypy/semanal.py", line 6525, in accept
File "mypy/nodes.py", line 785, in accept
File "mypy/semanal.py", line 832, in visit_func_def
File "mypy/semanal.py", line 866, in analyze_func_def
File "mypy/semanal_shared.py", line 373, in has_placeholder
File "mypy/types.py", line 1964, in accept
File "mypy/type_visitor.py", line 505, in visit_callable_type
File "mypy/type_visitor.py", line 557, in query_types
File "mypy/types.py", line 395, in accept
File "mypy/type_visitor.py", line 550, in visit_type_alias_type
File "mypy/types.py", line 3072, in get_proper_type
File "mypy/types.py", line 337, in _expand_once
File "mypy/types.py", line 1964, in accept
File "mypy/expandtype.py", line 368, in visit_callable_type
File "mypy/expandtype.py", line 317, in interpolate_args_for_unpack
AssertionError:
main.py:8: error: INTERNAL ERROR -- Please try using mypy master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 1.7.0
main.py:8: : note: use --pdb to drop into pdb
Your Environment
- Mypy version used: 1.7.0 (compiled: yes)
- Mypy command-line flags:
-no-color-output --no-error-summary --show-absolute-path --show-column-numbers --show-error-codes --no-pretty --show-traceback --show-error-end c:\Users\[PROJECT_PATH]\.vscode\mypytest.py
- Mypy configuration options from
mypy.ini
(and other config files):
[mypy]
plugins = pydantic.mypy
follow_imports = silent
warn_redundant_casts = True
disallow_untyped_defs = True
disallow_any_unimported = False
no_implicit_optional = True
check_untyped_defs = True
warn_return_any = True
show_error_codes = True
warn_unused_ignores = True
- Python version used: 3.11.2
(It's reproducable on the mypy playground, please see the "Playground"-link at the bottom of the "To Reproduce"-section.)