(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 do method) emits an error.
If some option allows us to emit an error on do method, it will be fine.
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):
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 additionalAny
.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.
Expected Behavior
We expect
do
and others to be the same error-condition.i.e. one of:
do
method) emits an error.do
method, it will be fine.Actual Behavior
As shown in reproduction code.
Your Environment
--disallow-any-decorated
mypy.ini
(and other config files):