Start moving away from named_type callback architecture by ilevkivskyi · Pull Request #21201 · python/mypy

This is a follow-up for #21170

Now that we have modules available as part of the global state (for the purposes of lazy deserialization), I propose to gradually move away from (IMO awkward) architecture where we pass around a lot of named_type callbacks, and instead use:

  • A library of lookup functions (we already started migrating lookup functions to lookup.py)
  • And the newly added global modules state

I am not sure yet what is the best way to use instance cache in a most robust way. For now I am starting with something a bit ad-hoc. We can experiment with this, and see if this works.

Note I only migrate few most problematic cases of the old callback-based pattern (one of those actually used an invalid callback). I also rename the global state file added in #21170 to have more generic name.

This also removes one function-level import and few nested functions, which may make code faster with mypyc (I measure 0.5% improvement, but this is at the noise level).

cc @JukkaL