There is a PR implementing typing ABC cache optimization:
https://github.com/python/typing/pull/383The main idea is straightforward: subscripted generic ABCs like Iterable[int], Iterable[str], etc. should not have separate ABC caches (positive and negative), since they all are equivalent to plain Iterable at runtime.
It is proposed that they will share their caches with a parent ABC from abc module for abstract collections, or with original (unsubscripted) class generic for concrete classes.
Inada-san confirmed that this optimization reduces the memory footprint.
I will be grateful for a code review.