Decorated Function Should Be Considered Used
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.5k
- Forks
- 190
- Avg merge
- 8m
- Merged PRs (30d)
- 13
Description
Functions with a decorator are considered unused, leading to situations like https://github.com/PyCQA/pyflakes/issues/320 and https://github.com/sympy/sympy/issues/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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no repository files or tests. Start by reproducing the decorator and equivalent direct-call examples, then trace the existing unused-name and F811 analysis; done means decorated definitions are treated as used without suppressing genuine redefinition warnings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100