-
Notifications
You must be signed in to change notification settings - Fork 181
Open
Description
Functions with a decorator are considered unused, leading to situations like #320 and sympy/sympy#17795.
If I run flake8 on the:
def my_overload(func):
print(func)
pass
@my_overload
def utf8(value: bytes) -> bytes:
pass
@my_overload
def utf8(value: str) -> bytes:
pass
def utf8(value):
pass # actual implementation
I get:
test.py:8:1: F811 redefinition of unused 'utf8' from line 4
test.py:12:1: F811 redefinition of unused 'utf8' from line 8
But the semantically-equivalent:
def utf8(value: bytes) -> bytes:
pass
my_overload(utf8)
def utf8(value: str) -> bytes:
pass
my_overload(utf8)
def utf8(value):
pass # actual implementation
Does not have any errors. As in my example above, annotations to functions have arbitrary side-effects and should be considered a use of the function
Alternatives:
I can either add an additional prepend overload to my own decorator
def my_decorator(func):
return func
@overload
@my_decorator
def utf8(value: None) -> None:
pass
Or I can add two noqa per overloaded function declaration:
@my_overload # noqa
def utf8(value: str) -> bytes: # noqa
pass
These both work for now but it would be nice if I didn't have to do them.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels