python / python/typeshed

Inconsistent dataclass declaration

Abierto
#13,189 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
5.1k
Forks
2.1k
Merge medio
1 d 19 h
PR fusionados (30 d)
82

Descripción

The dataclass decorator in the typeshed package has an inconsistency in its overloads. Specifically, when cls is passed explicitly as None, it is unclear whether additional arguments (e.g., init, repr, etc.) should be allowed or not. The current implementation allows passing cls=None alongside additional arguments, but this usage is not explicitly documented or validated.

Expected Behavior

The overloads should clearly define and document the behavior of cls=None when additional arguments are provided:

If allowed, the typing should reflect that explicitly.
If not allowed, the implementation should prevent or warn against such usage.

Current Behavior

Passing cls=None with arguments like kw_only=True is allowed, but this behavior is not described in the overloads. For example:

decorator = dataclass(None, kw_only=True)
@decorator
class MyClass:
    x: int

The above works but is ambiguous in terms of type checking and intended usage.

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

Comienza localizando las sobrecargas del decorador dataclass en el paquete typeshed y compáralas con el ejemplo mostrado dataclass(None, kw_only=True). Determina si se admite cls=None con argumentos adicionales y, a continuación, haz que las sobrecargas y la documentación expresen esa decisión de forma coherente. La tarea estará terminada cuando el comportamiento no deje lugar a ambigüedades para los type checkers y los usuarios.

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
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.