Reports invalid usage of PEP 695 type parameter syntax

Finds the following problems in function and class definitions and new-style type alias statements:

Examples:


  from typing import Generic

  class Example[T](Generic[T]): ... # Classes with type parameter list should not extend 'Generic'

  class Example[T: (list[S], str)]: ... # Generic types are not allowed inside constraints and bounds of type parameters

  from typing import TypeVar

  K = TypeVar("K")

  class ClassC[V]:
      def method2[M](self, a: M, b: K) -> M | K: ... # Mixing traditional and new-style TypeVars is not allowed