Dotted decorators on `TypedDict` classes fails for a certain package layout
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Bug Report, To Reproduce, & Actual Behaviour
I'm hitting a strange error in data_structures.py with the following project structure, with a potential culprit in runtime_validation.py:
Project/
└── package/
├── __init__.py
├── data_structures.py
└── runtime_validation.py
- Contents of
data_structures.pyimport typing as tp import package.runtime_validation as _runtime_validation # from package.runtime_validation import register_runtime_validator # Uncomment to make errors disappear deco = _runtime_validation.register_runtime_validator # OK @_runtime_validation.register_runtime_validator # OK class A: ... @_runtime_validation.register_runtime_validator # E: Module has no attribute "register_runtime_validator" class TD(tp.TypedDict): ... - Contents of
__init__.pyimport typing as tp RUNTIME_VALIDATORS: tp.Final = ... from package.data_structures import TD - Contents of
runtime_validation.pyimport typing as tp from package import RUNTIME_VALIDATORS # Comment out to make errors in `data_structures.py` disappear def register_runtime_validator(Type: type[tp.Any], /) -> type[tp.Any]: ... return Type
Expected Behavior
No issues
Your Environment
- Mypy version used: 1.11.1
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): None - Python version used: 3.10.11
Guia de contribuição
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.
Direção de pesquisa
Reproduza o problema usando o layout e o conteúdo do pacote mostrados em data_structures.py, init.py e runtime_validation.py com mypy 1.11.1. Comece rastreando como o ciclo de importação afeta a busca de atributos do decorator com notação de ponto na classe TypedDict. A tarefa estará concluída quando o exemplo não relatar nenhum erro de atributo ausente sem descomentar a importação direta.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- devtools
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 42/100