Skip to content

type-name-incorrect-variance (PLC0105)

Added in v0.0.278 · Related issues · View source

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