Skip to content

type-name-incorrect-variance (PLC0105)#

Derived from the Pylint linter.

What it does#

Checks for type names that do not match the variance of their associated type parameter.

Why is this bad?#

PEP 484 recommends the use of the _co and _contra suffixes for covariant and contravariant type parameters, respectively (while invariant type parameters should not have any such suffix).

Example#

from typing import TypeVar

T = TypeVar("T", covariant=True)
U = TypeVar("U", contravariant=True)
V_co = TypeVar("V_co")

Use instead:

from typing import TypeVar

T_co = TypeVar("T_co", covariant=True)
U_contra = TypeVar("U_contra", contravariant=True)
V = TypeVar("V")

References#