`__slots__` is incorrectly classified as an instance variable across inheritance
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 55/100
Direção de pesquisa
Comece reproduzindo o erro com mypy em example.py e, em seguida, rastreie como slots herdados são classificados para declarações comuns e slots gerados por plugins a partir de dataclasses e attrs. Adicione cobertura para esses casos e verifique se mypy não relata nenhum erro de sobrescrita entre classe e instância.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Bug Report
Mypy classifies __slots__ as an instance variable even though Python defines it on the class. This causes a false-positive override error when a subclass explicitly annotates __slots__ as a ClassVar.
The issue also affects plugin-generated __slots__, including slots generated by dataclasses and attrs.
To Reproduce
from dataclasses import dataclass
from typing import ClassVar
@dataclass(slots=True)
class Base:
x: float
y: float
class Child(Base):
__slots__: ClassVar[tuple[()]] = ()
Run:
mypy example.py
Playground link: https://mypy-play.net/?mypy=latest&python=3.14&gist=e0e2f906ab9e0201c43d2b5cb6ff950c
Expected Behavior
Mypy should report no errors. Both generated and explicitly declared __slots__ should be treated as class variables across inheritance.
Actual Behavior
Cannot override instance variable (previously declared on base class "Base") with class variable [misc]
A # type: ignore[misc] comment is currently required on the subclass declaration even though __slots__ is a class-level attribute.
The same inconsistent classification occurs with ordinary __slots__ declarations and attrs-generated slots.
Your Environment
- Mypy version used: 2.3.1
- Mypy command-line flags: none
- Mypy configuration options from
mypy.ini(and other config files): none - Python version used: 3.14.7
- Linguagem predominante
- Python
- Estrelas
- 20.6k
- Forks
- 3.3k
- Merge médio
- 1d 3h
- PRs com merge (30d)
- 63
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de python/mypy
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
python/mypy#21658 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug topic-configuration topic-error-reporting
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
python/mypy#21376 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug topic-attrs
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
python/mypy#20818 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de python/mypy
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
PedestrianDynamics/pyFDS-Evac#199 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
521xueweihan/HelloGitHub#3790 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
sandialabs/atlas-ui-3#978 ·
Mantenedores costumam responder em até 1 dia
-
area: tests perceived difficulty: 2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Nitjsefnie-Harness-Commons/daedalus#1255 ·
Mantenedores costumam responder em até 1 dia
-
hf-audiolm-qwen: `generate_until` hardcodes `.to("cuda")` and aborts on non-CUDA acceleratorsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
EleutherAI/lm-evaluation-harness#4256 ·
Mantenedores costumam responder em até 1 dia