Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Mypy treating type of final class variable in dataclass as Any

Ouverte
#21,906 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
devtools

Piste de recherche

Commencez par le reproducteur minimal fourni dans l’issue ou par son lien mypy-play, puis suivez la manière dont le traitement des dataclasses gère ClassVar[Final[...]] lors de l’exécution de reveal_type. Le travail est terminé lorsque mypy signale dict[type[Bar], Foo] pour Foo.cv et que le comportement est couvert par un test de régression.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug

Bug Report

from dataclasses import dataclass
from typing import ClassVar, Final, reveal_type

class Bar: pass

@dataclass
class Foo:
    cv: ClassVar[Final[dict[type[Bar], Foo]]] = {}

reveal_type(Foo.cv)
$ mypy test.py
test.py:10: note: Revealed type is "Any"
Success: no issues found in 1 source file

The correct type of Foo.cv is builtins.dict[type[Bar], Foo].

To Reproduce

https://mypy-play.net/?mypy=latest&python=3.14&gist=2fad4ef5fded90ecaeb0f1d1e59d882a

Expected Behavior

reveal_type should report the correct type for the class variable.

Actual Behavior

reveal_type showed incorrect type (Any).

Your Environment

  • Fedora 44
  • python3-mypy-1.18.2-4.fc44.noarch (reproducible with Mypy 2.3.1)
  • python3-3.14.6-1.fc44.x86_64
  • No config files used
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Merge moyen
1 j 12 h
PR mergées (30 j)
58

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python/mypy

Toutes les issues de python/mypy

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.