Don't require annotations of kwargs initialized to bool, float, int or string constants
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
See PR: #12918 (draft).
Feature
There should be no need for annotations for kwargs in the following (partial) function definitions:
def bool_args(ok=True, die=False)
def int_arg(i=1)
def float_arg(ratio=1.0)
def string_arg(s="Hello World")
In this example, the natural annotations are as follows:
def bool_args(ok: bool=True, die: bool=False): pass
def int_arg(i:int=1): pass
def float_arg(ratio: float=1.0): pass
def string_arg(s:str="Hello World"): pass
The issue proposes a non-trivial change to mypy's type inference. The proposal suggests that mypy act as if a natural annotation exists for an initialized kwarg. Note: mypy will (must!) check the new (natural) annotation, and mypy must complain if the natural annotation is not correct.
Pitch
At present, with disallow_untyped_defs = True and disallow_incomplete_defs = False, mypy complains that the signatures above lack annotations for the kinds of kwargs shown above. Such annotations unnecessarily clutter code. It should be possible to infer the types of the kwargs based on the obvious types of the constants!
This feature would fix my biggest gripe about mypy :-)
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
Comienza revisando el PR preliminar #12918 y los ejemplos del issue de anotaciones naturales para argumentos de palabra clave inicializados con constantes bool, int, float y string. Sigue el comportamiento relevante de la inferencia de tipos y verifica que las anotaciones inferidas se comprueben para garantizar su corrección. Se considera terminado cuando estos casos satisfacen disallow_untyped_defs sin anotaciones explícitas, mientras que los valores predeterminados no válidos siguen produciendo errores.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100