3

Fiz um negócio que obriga o Python a ter tipo em tudo

Fiz um negócio aí que talvez só eu queira usar.

O gawain é uma ferramenta pra Python que reclama de tudo que não tem tipo escrito: variável, parâmetro, retorno, constante, atributo de classe. Reclama de Any também. Quando tá tudo tipado, ele roda o ty pra ver se os tipos batem.

"Mas cara, pra que você fez isso?"

Não sei mano, talvez eu seja maluco? Eu quis fazer. Eu odeio dict[str, Any]. Mano, olha isso aqui:

def load(path: str) -> dict[str, Any]:
    return {"timeout": "30"}


def timeout(path: str) -> int:
    config = load(path)
    seconds = config["timeout"]
    return seconds

Ah não, chega.

O ty olha isso e fala All checks passed!, mas a função promete int e devolve "30". Aí resolvi fazer algo a respeito. O gawain não deixa passar: reclama do Any, do config e do seconds. Quando você escreve os tipos de verdade, o ty acha o erro na hora.

"Mas o Python já infere isso." "Mas minha IDE já infere pra mim." Então não use, meu brother. Não é pra todo mundo.

Se quiser testar, o modo padrão deixa passar o que é óbvio, tipo retries = 3, e o --mode strict cobra anotação em tudo. É feito em Rust com o parser do ruff, então roda rápido. Só toma cuidado que o ty ainda tá em beta, e os diagnósticos dele podem mudar de uma versão pra outra. Se isso incomodar, o --no-types roda só a parte das anotações.

Não tô vendendo nada. Pra mim software deveria ser de graça e todo mundo deveria ter acesso. Tá aberto, MIT, se alguém mais já pensou nisso ou quiser testar:

https://github.com/matheuzgomes/gawain

Carregando publicação patrocinada...