The key difficulty here is that:
# TypeError: Subscripted generics cannot be used with class and instance checks
If the only subscripted generics you want to support are garden-variety collection types like List[MyClass]
or Set[MyClass]
then you might consider using isassignable from trycast or similar enhanced isinstance functions in other libraries.
In the case of the trycast library in particular, I know that “User-defined generic types” (which would also support custom subscripted generics beyond the usual collection types) is on the roadmap.