Inconsistent dataclass declaration
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 5.1k
- Fork
- 2.1k
- Merge medio
- 1g 19h
- PR unite (30g)
- 82
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia individuando gli overload del decoratore dataclass nel pacchetto typeshed e confrontali con l’esempio mostrato dataclass(None, kw_only=True). Determina se cls=None con argomenti aggiuntivi è supportato, quindi fai in modo che gli overload e la documentazione esprimano coerentemente questa decisione. Il lavoro è completato quando il comportamento è inequivocabile per i type checker e gli utenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100