Stubtest crashes if an `@overload` is decorated
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Crash Report
I tried running stubtest on the numpy codebase using the compiled mypy 1.18.2 version + the patch from #20063. This triggered an assertion failure in hypothesis.extra.numpy.arrays (huh?). The relevant code contains code like
@overload
@defines_strategy(force_reusable_values=True)
def arrays(
# --snip--
which I believe is what is triggering this asserion to fail. See HypothesisWorks/hypothesis#4564 for the relevant code.
Traceback
Traceback (most recent call last):
File "/home/joren/Workspace/numpy/.venv/bin/stubtest", line 10, in <module>
sys.exit(main())
~~~~^^
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 2448, in main
return test_stubs(parse_options(sys.argv[1:]))
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 2296, in test_stubs
for error in test_module(module):
~~~~~~~~~~~^^^^^^^^
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 257, in test_module
yield from verify(stub, runtime, [module_name])
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 436, in verify_mypyfile
yield from verify(stub_entry, runtime_entry, object_path + [entry])
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 1347, in verify_overloadedfuncdef
stub_sig = Signature.from_overloadedfuncdef(stub)
File "/home/joren/Workspace/numpy/.venv/lib/python3.14/site-packages/mypy/stubtest.py", line 971, in from_overloadedfuncdef
assert func is not None, f"Failed to resolve decorated overload of {stub.fullname!r}"
^^^^^^^^^^^^^^^^
AssertionError: Failed to resolve decorated overload of 'hypothesis.extra.numpy.arrays'
To Reproduce
- clone https://github.com/numpy/numpy
uv venv .venvsource .venv/bin/activateuv pip install -r requirements/build_requirements.txt -r requirements/test_requirements.txtspin build- create
mypy.ini:[mypy] ignore_errors = True - create
allowlist.txt:numpy\._typing.* numpy\.typing\.mypy_plugin numpy\.conftest.* numpy\.random\._generator\.__test__ numpy(\.\w+)?\.tests.* numpy\._core\.cversions numpy\.f2py\.__main__ numpy\.distutils.* numpy\.f2py\._backends\._distutils numpy\._build_utils.* numpy\._pyinstaller.* stubtest --mypy-config-file=mypy.ini --allowlist=allowlist.txt --concise --tb numpy
Your Environment
- Mypy version used: 1.18.2 (compiled: yes)
- Mypy command-line flags: see above
- Mypy configuration options from
mypy.ini(and other config files): see above - Python version used: 3.14.0
- Operating system and version: Ubuntu 22.04
BTW, adding hypothesis.* to the allowlist doesn't seem to help.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu trong mypy/stubtest.py tại Signature.from_overloadedfuncdef và verify_overloadedfuncdef, dùng traceback để theo dõi cách các hàm @overload được trang trí được phân giải. Tái hiện bằng thiết lập NumPy và lệnh stubtest được cung cấp; hoàn tất khi overload được trang trí này không còn gây ra lỗi assertion.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- testing-qa, tooling
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 52/100