With `--disallow-any-decorated`, `Any` detection logic changes w/wo decorator
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy test case testDisallowAnyDecoratedShouldNeverAffect với --disallow-any-decorated và fixture builtins fixtures/classmethod.pyi được cung cấp. So sánh các trường hợp không có decorator, classmethod và decorator tùy chỉnh, sau đó làm cho hành vi nhất quán và bao phủ điều kiện lỗi đã chọn bằng các regression test.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Bug Report
(A clear and concise description of what the bug is.)
We expect that adding a decorator to a method will never produce a new mypy error unless the decorator itself introduces a new Any annotation, i.e. expect no new error if the decorator itself does not introduce any additional Any.
We also believe that it is difficult to call this behavior a bug. The behavior of the option itself seems self-evident in its own way.
But we would expect a situation where simply applying a harmless decorator would not change the presence or absence of errors.
To Reproduce
Here is a test case.
[case testDisallowAnyDecoratedShouldNeverAffect]
# flags: --disallow-any-decorated
import dataclasses
from typing import Any, Callable
from typing_extensions import TypedDict, TypeVar
class CtxAny(TypedDict):
place: Any
CallableT = TypeVar("CallableT")
def custom_decorator(func: CallableT) -> CallableT:
return func
class Something:
# No error
def do(self, ctx: CtxAny) -> None:
pass
@classmethod
# This emits an error, unexpected.
def do_classmethod(cls, ctx: CtxAny) -> None: # E: Type of decorated function contains type "Any" ("Callable[[Type[Something], CtxAny], None]")
pass
@custom_decorator
# This emits an error, unexpected.
def do_custom_decorator(self, ctx: CtxAny) -> None: # E: Type of decorated function contains type "Any" ("Callable[[Something, CtxAny], None]")
pass
[builtins fixtures/classmethod.pyi]
Expected Behavior
We expect do and others to be the same error-condition.
i.e. one of:
- No mypy errors emitted.
- All (containing
domethod) emits an error.- If some option allows us to emit an error on
domethod, it will be fine.
- If some option allows us to emit an error on
Actual Behavior
As shown in reproduction code.
Your Environment
- Mypy version used:current master
- Mypy command-line flags:
--disallow-any-decorated - Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.8.16, 3.11.3
- 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
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.
Issue khác của python/mypy
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
bug topic-configuration topic-error-reporting
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
zostera/django-bootstrap4#894 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
use-agent-os/agent-os#3276 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
NousResearch/hermes-agent#117848 ·