Cannot infer type of generic attributes in `match` statements when inheritance is involved
Đang mở
@sobolevn đang làm issue này rồi.
Từ ngày 7/9/2022.
bug
topic-match-statement
- 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ả
Bug Report
mypy has trouble inferring the type of generic attributes in match statements when inheritance is involved.
This issue was encountered while investigating #13612
To Reproduce
from typing import Generic, TypeVar
T = TypeVar("T")
class Base(Generic[T]):
...
class A(Base[T]):
x: T
__match_args__ = ('x', )
def __init__(self, x: T):
self.x = x
a: Base[str] = A("foo")
reveal_type(a) # Base[str] (correct)
match a:
case A(b):
reveal_type(b) # Any (incorrect! Should be builtins.str)
Expected Behavior
The attribute on the last line above is revealed to be str
Actual Behavior
It is revealed to be Any
Your Environment
- Mypy version used:
mypy-0.980+dev.b031f1c04e1ee4331e4d6957c7a9b727293328a9 - Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.10.5
- Operating system and version: n/a
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.
Đánh giá
Issue này chưa được đánh giá.