Positional arguments to TypedDict constructor
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- python
- Domínio
- documentation
Direção de pesquisa
Comece pela especificação vinculada do construtor TypedDict e pela seção correspondente da PEP 589; em seguida, compare as regras documentadas com os exemplos em tempo de execução e com os diferentes comportamentos de mypy e Pyright descritos aqui. O trabalho estará concluído quando for tomada uma decisão sobre os argumentos posicionais permitidos e a especificação for atualizada com uma redação normativa clara.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
The spec says "The constructor takes only keyword arguments, corresponding to the items of the TypedDict." This derives from wording in PEP 589 "It can be used as a callable object with keyword arguments corresponding to the TypedDict items. Non-keyword arguments are not allowed."
But at runtime, the TypedDict constructor also takes positional arguments. This works:
from typing import TypedDict
class TD1(TypedDict):
a: int
class TD2(TD1):
b: str
def f(x: TD2) -> TD1:
return TD1(x)
Pyright allows this program; mypy does not and reports Expected keyword arguments, {...}, or dict(...) in TypedDict constructor.
The spec should say whether or not this should be allowed. (My opinion: it should be allowed, since it works at runtime and doesn't appear to break any type safety rule.)
At runtime, even more is allowed; the TypedDict constructor actually allows whatever dict() allows. So you could do TD1([("a", 1)]), or TD1(TD2, a=3). Pyright allows some but not all of that. I'm inclined to prohibit anything other than calls with keyword arguments and calls with a single positional argument of TypedDict type; anything else is rarely useful and prone to unsound behavior.
- Linguagem predominante
- Python
- Estrelas
- 1.8k
- Forks
- 302
- Merge médio
- 23h
- PRs com merge (30d)
- 8
Preparar o ambiente
Ainda não verificamos os arquivos de configuração deste projeto. Comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
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/typing
-
topic: typing spec
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
python/typing#2356 · 2 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
topic: typing spec
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
topic: documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
python/typing#2227 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
topic: documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
python/typing#2150 · 2 comentários · 2 reações ·
Mantenedores costumam responder em até 1 dia
-
topic: conformance tests topic: typing spec
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
python/typing#2351 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de python/typing
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
gradio-app/gradio#13895 ·
Mantenedores costumam responder em até 1 dia
-
build-error
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
spack/spack-packages#6713 ·
Mantenedores costumam responder em até 1 dia
-
Use issue templatesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ActivityWatch/activitywatch#1464 · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
[Bug]: The ckg tool drops the return type of every decorated Python method in class search resultsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
bytedance/trae-agent#483 ·
Mantenedores costumam responder em até 1 dia