NamedTuple with dependent default values causes unexpected 'Name is not defined' errors
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Merge trung bình
- 1 ngày 18 giờ
- Pull request đã merge (30 ngày)
- 54
Mô tả
Hi there,
When there is a NamedTuple with a default value that depends on one or more other default values, followed by a default value that should resolve into a NameError, all preceding default values get the Name <variable> is not defined error as well.
E.g.
from typing import NamedTuple
class Example(NamedTuple):
a: int = 1
b: int = 2
c: int = a*b
d: int = does_not_exist*5
Causes:
scratch.py:6: error: Name 'a' is not defined
scratch.py:6: error: Name 'b' is not defined
scratch.py:7: error: Name 'does_not_exist' is not defined
If I comment out line 6, I do, however, get the expected result.
from typing import NamedTuple
class Example(NamedTuple):
a: int = 1
b: int = 2
# c: int = a*b
d: int = does_not_exist*5
scratch.py:7: error: Name 'does_not_exist' is not defined
This was tried on version 0.760.
$ mypy --version
mypy 0.760
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 bằng cách tái hiện vấn đề từ ví dụ NamedTuple trong scratch.py bằng mypy 0.760, sau đó kiểm tra đường dẫn kiểm tra kiểu của NamedTuple chịu trách nhiệm cho các giá trị mặc định. So sánh trường hợp giá trị mặc định phụ thuộc với phiên bản trong đó c bị chú thích. Hoàn thành khi tên chưa được định nghĩa trong d được báo cáo mà không có các lỗi thừa đối với a, b hoặc c.
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
- tooling
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 35/100