python / python/mypy

Not finding type specifications in make_dataclass

Abierto
#6,063 11 comentarios 5 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

feature priority-1-normal topic-dataclasses
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Given the following script:

from typing import NamedTuple
from dataclasses import make_dataclass, dataclass

Emp1 = NamedTuple('Emp1', [('name', str), ('id', int)])
r1 = Emp1('raymond', 'xyz')

Emp2 = make_dataclass('Emp2', [('name', str), ('id', int)])
r2 = Emp2('raymond', 'xyz')

class Emp3(NamedTuple):
    name: str
    id: int

r3 = Emp3('raymond', 'xyz')

@dataclass
class Emp4:
    name: str
    id: int

r4 = Emp4('raymond', 'xyz')

mypy only finds three of the four type errors:

$ mypy --version
mypy 0.650
$ mypy nt_example.py
nt_example.py:5: error: Argument 2 to "Emp1" has incompatible type "str"; expected "int"
nt_example.py:14: error: Argument 2 to "Emp3" has incompatible type "str"; expected "int"
nt_example.py:21: error: Argument 2 to "Emp4" has incompatible type "str"; expected "int"

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

Reproduce el ejemplo con mypy 0.650, centrándote en la llamada a make_dataclass y en el constructor que genera. Rastrea cómo mypy gestiona dataclasses.make_dataclass y después añade una prueba de regresión basada en el script; la tarea estará terminada cuando el argumento de string no válido para Emp2 se notifique junto con los otros tres errores.

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
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.