On Jul 16, 2021, at 2:20 AM, Richard van der Hoff <richard@matrix.org> wrote:

On 16/07/2021 00:18, Glyph wrote:

On Jul 15, 2021, at 9:00 AM, Richard van der Hoff <richard@matrix.org> wrote:

We can't just go and add type annotations because we need to maintain compatibility with older Twisted (to make it possible to package in Debian et al).

Any suggestions for keeping mypy happy?

Are you saying you need it to typecheck against older versions or just run against them?

Ah, this gave me the clue I needed. We just need to run against them. Which means I can put type hints in comments, where they will be ignored at runtime. It's fiddly, but it will work well enough.

You can also do 'from __future__ import annotations' to avoid the annotations getting evaluated, which might be slightly less awkward.

Thanks Glyph, and thanks to Adi and Barry for your suggestions too.

One particular problem I came across was the type annotation on inlineCallbacks. I've filed https://twistedmatrix.com/trac/ticket/10231 about it - would appreciate thoughts.

This definitely looks wrong; there should be a TypeVar in there.  Adi, I'd go so far as to say that this should be a release blocker, although the change should be fairly minimal.

Richard, could you please make a proper PR for this to get CI kicked off and make sure the new annotation doesn't cause any failures?