python / python/mypy

`@deprecated` doesn't work with non-overloaded constructors

Abierto
#20,103 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug topic-pep-702
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Bug Report, To Reproduce, & Actual Behaviour

This is similar to #19588, but that was fixed on master for the case when __init__ is overloaded.

In the non-overloaded case, @deprecated still doesn't report anything (mypy Playground):

To Reproduce

from typing import overload
from typing_extensions import deprecated, Self

class Some:
    @deprecated("reason")
    def __new__(cls, x: str) -> Self: ...

Some('test')  # No reports here

class Some2:
    @deprecated("reason")
    def __init__(self, x: str) -> None: ...

Some2('test')  # No reports here

Expected Behavior

Some('test')  # E: function Some.__new__ is deprecated: reason  [deprecated]
Some2('test')  # E: function Some.__init__ is deprecated: reason  [deprecated]

Your Environment

  • Mypy version used: 1.18.2, master

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo los casos no sobrecargados de Some.new y Some2.init en el mypy Playground enlazado y, a continuación, compara su tratamiento con el caso sobrecargado de #19588. Se considera terminado cuando ambas llamadas al constructor emitan los diagnósticos [deprecated] esperados que se muestran en el issue.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
devtools
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.