Do not allow class-level keywords for `NamedTuple` by sobolevn · Pull Request #16526 · python/mypy
Expand Up
@@ -9,6 +9,7 @@
from typing import Final, Iterator, List, Mapping, cast
from mypy.exprtotype import TypeTranslationError, expr_to_unanalyzed_type from mypy.messages import MessageBuilder from mypy.nodes import ( ARG_NAMED_OPT, ARG_OPT, Expand Down Expand Up @@ -91,9 +92,12 @@
class NamedTupleAnalyzer: def __init__(self, options: Options, api: SemanticAnalyzerInterface) -> None: def __init__( self, options: Options, api: SemanticAnalyzerInterface, msg: MessageBuilder ) -> None: self.options = options self.api = api self.msg = msg
def analyze_namedtuple_classdef( self, defn: ClassDef, is_stub_file: bool, is_func_scope: bool Expand Down Expand Up @@ -204,6 +208,10 @@ def check_namedtuple_classdef( ) else: default_items[name] = stmt.rvalue if defn.keywords: for_function = ' for "__init_subclass__" of "NamedTuple"' for key in defn.keywords: self.msg.unexpected_keyword_argument_for_function(for_function, key, defn) return items, types, default_items, statements
def check_namedtuple( Expand Down
from mypy.exprtotype import TypeTranslationError, expr_to_unanalyzed_type from mypy.messages import MessageBuilder from mypy.nodes import ( ARG_NAMED_OPT, ARG_OPT, Expand Down Expand Up @@ -91,9 +92,12 @@
class NamedTupleAnalyzer: def __init__(self, options: Options, api: SemanticAnalyzerInterface) -> None: def __init__( self, options: Options, api: SemanticAnalyzerInterface, msg: MessageBuilder ) -> None: self.options = options self.api = api self.msg = msg
def analyze_namedtuple_classdef( self, defn: ClassDef, is_stub_file: bool, is_func_scope: bool Expand Down Expand Up @@ -204,6 +208,10 @@ def check_namedtuple_classdef( ) else: default_items[name] = stmt.rvalue if defn.keywords: for_function = ' for "__init_subclass__" of "NamedTuple"' for key in defn.keywords: self.msg.unexpected_keyword_argument_for_function(for_function, key, defn) return items, types, default_items, statements
def check_namedtuple( Expand Down