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