prefer-typing-namedtuple / R6105#

Message emitted:

Prefer 'typing.NamedTuple' over 'collections.namedtuple'


'typing.NamedTuple' uses the well-known 'class' keyword with type-hints for readability (it's also faster as it avoids an internal exec call). Disabled by default!


This message is disabled by default. To enable it, add prefer-typing-namedtuple to the enable option.

Problematic code:

from collections import namedtuple

Philosophy = namedtuple(  # [prefer-typing-namedtuple]
    "Philosophy", ("goodness", "truth", "beauty")

Correct code:

from typing import NamedTuple

class Philosophy(NamedTuple):
    goodness: str
    truth: bool
    beauty: float

Configuration file:

load-plugins = pylint.extensions.code_style

Related links:


This message is emitted by the optional 'code_style'

checker which requires the pylint.extensions.code_style plugin to be loaded.

Created by the code_style checker.