Incorrect type parameter scope inference with nested classes

Aberta
#21,210 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
python
Domínio
devtools

Direção de pesquisa

Comece executando mypy test_mypy.py com o exemplo aninhado Foo[T] e Bar[R] do relatório e, em seguida, rastreie o tratamento do escopo de parâmetros de tipo para corpos de classes aninhadas. Adicione um teste de regressão mostrando que o T externo é reconhecido junto com o R interno e confirme que o erro name-defined não aparece mais.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug topic-pep-695

Bug Report

In a class whose body is nested in another, mypy doesn't recognize the type parameters of the outer class as bound in the inner.

To Reproduce

# test_mypy.py
class Foo[T]:
    class Bar[R]:
        def foobar(self, t: T, r: R, /) -> None: ...
        print(T, R)

Output of program

T R

Note that there is no NameError being thrown. The names T and R are indeed both bound in the scope of the definition of R.

Actual Behavior

test_mypy.py:3: error: Name "T" is not defined  [name-defined]
Found 1 error in 1 file (checked 1 source file)

Your Environment

  • Mypy version used:
  • Command used: mypy test_mypy.py
  • Mypy configuration options from mypy.ini (and other config files): None relevant
  • Python version used: 3.12, 3.13, 3.14
Linguagem predominante
Python
Estrelas
20.6k
Forks
3.3k
Merge médio
1d 18h
PRs com merge (30d)
54

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de python/mypy

Todas as issues de python/mypy

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.