python / python/mypy

`ClassVar` cannot be overridden with `Final`

Aperta
#20,183 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug topic-final
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con il riproduttore Python fornito e traccia il modo in cui mypy gestisce l’override di una ClassVar con un’annotazione Final. Conferma il comportamento di tipizzazione previsto e aggiungi la coverage per questo caso; il lavoro è completato quando il riproduttore non segnala più l’errore errato di override e i controlli esistenti continuano a passare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.