python / python/mypy

`ClassVar` cannot be overridden with `Final`

Ouverte
#20,183 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug topic-final
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Métriques de merge des PR
Métriques de PR en attente

Description

Bug Report

A typing.ClassVar cannot be overridden with typing.Final.

main.py:7: error: Cannot override class variable (previously declared on base class "Base") with instance variable  [misc]
Found 1 error in 1 file (checked 1 source file)

To Reproduce

import typing

class Base:
    value : typing.ClassVar[str]
    
class Derived(Base):
    value : typing.Final[str] = 'derived'

https://mypy-play.net/?mypy=latest&python=3.12&flags=verbose&gist=03819c6e8c7b6fb53baebe094faed123

Expected Behavior

I though using a typing.Final annotation would imply typing.ClassVar.

Actual Behavior

It seems not allowed to override a ClassVar with a Final.

Your Environment

See reproducer.

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.

Piste de recherche

Commencez par le reproducteur Python fourni et suivez la manière dont mypy gère la redéfinition d’une ClassVar avec une annotation Final. Confirmez le comportement de typage attendu et ajoutez une couverture pour ce cas ; le travail est terminé lorsque le reproducteur ne signale plus l’erreur incorrecte de redéfinition et que les vérifications existantes continuent de réussir.

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

Évaluation

Stack technique
python
Domaine
devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
38/100

Recevez les nouvelles issues par e-mail

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