Back to Intellij Community

PyNewStyleGenericSyntaxInspection

python/python-psi-impl/resources/inspectionDescriptions/PyNewStyleGenericSyntaxInspection.html

2025.3-rc-2991 B
Original Source

Reports invalid usage of PEP 695 type parameter syntax

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

  • Extending typing.Generic in new-style generic classes
  • Extending parameterized typing.Protocol in new-style generic classes
  • Using generic upper bounds and constraints with type parameters for ParamSpec and TypeVarTuple
  • Mixing traditional and new-style type variables
  • Using traditional type variables in new-style type aliases

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