This rule raises an issue when a `TypeVar` is used in a function instead of the generic function type syntax. == Why is this an issue? Prior to Python 3.12 functions using generic types were created as follows: [source,python] ---- from typing import TypeVar _T = TypeVar("_T") def func(a: _T, b: _T) -> _T: ... ---- This snippet of code can be confusing and difficult to read. This is why is it a good idea to use the new type parameter syntax of Python 3.12 that allows for a more concise and more readable code by removing the `TypeVar` and its import statement: [source,python] ---- def func[T](a: T, b: T) -> T: ... ---- === Exceptions This rule will only raise an issue when the Python version of the analyzed project is set to 3.12 or higher. == How to fix it To fix this issue, replace the usage of a `TypeVar` as a parameter type with the generic type parameter syntax. === Code examples ==== Noncompliant code example [source,python,diff-id=1,diff-type=noncompliant] ---- from typing import TypeVar _T = TypeVar("_T", bound=str) def func(a: _T, b: int) -> _T: # Noncompliant: the usage of a TypeVar could be simplified with a generic type parameter. ... ---- ==== Compliant solution [source,python,diff-id=1,diff-type=compliant] ---- def func[T: str](a: T, b: int) -> T: # Compliant: the code is clear and concise. ... ---- == Resources === Documentation * Python Documentation - https://docs.python.org/3.12/reference/simple_stmts.html#type[The type statement] * Python 3.12 Release Notes - https://docs.python.org/3.12/whatsnew/3.12.html#pep-695-type-parameter-syntax[PEP 695: Type Parameter Syntax] * PEP 695 - https://peps.python.org/pep-0695/[Type Parameter Syntax] ifdef::env-github,rspecator-view[] ''' == Implementation Specification === Message (visible only on this page) Use a generic type parameter for this function instead of a `TypeVar`. ''' endif::env-github,rspecator-view[]