O problema Link para o cabeçalho
Quando uma função só precisa escrever em um stream, tipar o argumento como IO[str] é exagero, já que você está exigindo read, seek, close e todo o resto da interface, mesmo que nunca vá usá-los.
A dica Link para o cabeçalho
A partir do Python 3.14, o módulo io expõe os protocolos Writer[T] e Reader[T]. Eles descrevem só o contrato mínimo (write() ou read()), então qualquer objeto que implemente apenas esse método já satisfaz o tipo.
Antes Link para o cabeçalho
| |
Depois Link para o cabeçalho
| |
Na linha 3, a assinatura passa a dizer exatamente o que a função faz, fica mais fácil de testar (basta um stub com write()) e aceita mais objetos legítimos.
De onde veio o exemplo Link para o cabeçalho
O trecho acima vem do capital_gains/cli.py, parte de uma refatoração de um teste técnico onde explorei técnicas mais avançadas de Python. Se quiser ver o contexto completo do projeto, a apresentação está aqui.
Então é isso pessoal!
Até a próxima!
{}’s