Using `classmethod` of generic alias of a generic type and `--disallow-any-generics`
Abierto
Nadie ha tomado este issue todavía.
topic-inference
topic-type-alias
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Code:
from typing import TypeVar, Generic, reveal_type
T = TypeVar('T')
N = TypeVar('N')
class My(Generic[T]):
def __init__(self, arg: T) -> None:
self.arg = arg
@classmethod
def from_arg(cls, arg: N) -> 'My[N]':
return My(arg)
Alias = My[T]
reveal_type(My.from_arg(1))
# note: Revealed type is "__main__.My[builtins.int]"
reveal_type(Alias.from_arg(1))
# error: Missing type parameters for generic type "Alias" [type-arg]
# note: Revealed type is "__main__.My[builtins.int]"
Problem: I think that [type-arg] error should not be raised in this case, because no type param is actually needed in this case. classmethod is often used as a constructor, duplicating type vars is verbose and unneeded.
Guía de contribución
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.
Línea de trabajo
Empieza reproduciendo el ejemplo del caso enlazado de mypy-play con --disallow-any-generics y, después, sigue cómo se analizan los alias genéricos y las llamadas a classmethod. Se considera terminado cuando Alias.from_arg(1) ya no provoca el error de type-arg, mientras su tipo revelado sigue siendo My[int].
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100