Decorated Function Should Be Considered Used
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
El issue no menciona archivos ni pruebas del repositorio. Empieza reproduciendo los ejemplos con el decorador y los ejemplos equivalentes con llamadas directas; después, sigue el análisis existente de unused-name y F811. Se considera terminado cuando las definiciones decoradas se tratan como usadas sin suprimir advertencias genuinas de redefinición.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 1.5k
- Forks
- 205
- Merge medio
- 1 d 2 h
- PR fusionados (30 d)
- 5
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PyCQA/pyflakes
-
F542 is not a crimeAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
setuptools deprecation warningsAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 52/100
-
Use of await in a function that is not async should be shown as a syntax error by flake8Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de PyCQA/pyflakes
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
micropython/micropython#19906 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
FinanceFlash/unvibecode#597 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
TomAnthony/YourOwnWeigh#21 ·
Los mantenedores suelen responder en 1 día
-
[BUG]: Compliance rules never see Unity Catalog views as viewsPosiblemente ocupada @wagnercsantos la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
databrickslabs/ontos#1348 ·
Los mantenedores suelen responder en 3 días
-
Deprecated datetime.utcnow() is called on every log line (DeprecationWarning on Python 3.12+)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días