mypy et django-pgtrigger

J’ai un cas bizarre aujourd’hui avec mypy :

pip install mypy==2.3.1 django-pgtrigger==4.17.0
import pgtrigger

pgtrigger.Q(foo_bar=42)

lancer mypy sur le fichier me donne :

foo.py:4: error: Unexpected keyword argument "foo_bar" for "Q"  [call-arg]
foo.py:4: note: "Q" defined in "pgtrigger.core"
Found 1 error in 1 file (checked 1 source file)

Mais je ne vois pas du tout pourquoi… et je n’arrive pas à reproduire l’erreur en dehors de Django (copier-coller la class Q de Django en entier dans un autre fichier corrige le bug, ça n’a pas de sens à mes yeux).

Je n’ai aucun stub d’installé et j’ai triplement vérifié (find, strace, …), mypy n’a pas l’air de se faire piéger par un sub. D’ailleurs installer django-stubs corrige l’erreur (mais pourquoi !?).

Le seul truc qui me fait tiquer c’est que le __init__ de class Condition ne coopère pas (pas de super().__init__(**kwargs)), et que l’ajouter cache l’erreur (mais je ne comprends pas pourquoi, un effet de bord dans mypy ?)

Quelqu’un y voit plus clair ? Je fatigue ou quelque chose ?

Je ne connais pas le package que tu utilises mais j’ai déjà rencontré plusieurs bizarreries entre mypy et l’écosystème Django, et très souvent installer django-stubs résoud le problème comme dans ta situation.

Ouais c’est possible que django-stubs soit spécialement fait pour typer correctement certaines fonctions de Django qui ne le sont pas sinon.