From cb89510ee73f866b0eddf38b393733bbc7a8e2e5 Mon Sep 17 00:00:00 2001 From: Vanessa Ung Date: Fri, 16 Jul 2021 11:16:00 +1000 Subject: [PATCH 1/2] Handle spaces and commas in namedtuple syntax, add test --- mypy/stubgen.py | 2 +- test-data/unit/stubgen.test | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mypy/stubgen.py b/mypy/stubgen.py index 032b48d1aa5ca..452dff5e34657 100755 --- a/mypy/stubgen.py +++ b/mypy/stubgen.py @@ -926,7 +926,7 @@ def process_namedtuple(self, lvalue: NameExpr, rvalue: CallExpr) -> None: if self._state != EMPTY: self.add('\n') if isinstance(rvalue.args[1], StrExpr): - items = rvalue.args[1].value.split(" ") + items = rvalue.args[1].value.replace(',', ' ').split() elif isinstance(rvalue.args[1], (ListExpr, TupleExpr)): list_items = cast(List[StrExpr], rvalue.args[1].items) items = [item.value for item in list_items] diff --git a/test-data/unit/stubgen.test b/test-data/unit/stubgen.test index b1995b57e7759..09580198da3e0 100644 --- a/test-data/unit/stubgen.test +++ b/test-data/unit/stubgen.test @@ -590,6 +590,17 @@ xx [out] from typing import Any, NamedTuple +class X(NamedTuple): + a: Any + b: Any + +[case testNamedtupleAltSyntaxUsingComma] +from collections import namedtuple, xx +X = namedtuple('X', 'a, b') +xx +[out] +from typing import Any, NamedTuple + class X(NamedTuple): a: Any b: Any From e9502ba42e87fa97dd5958a563d653cc35c4386a Mon Sep 17 00:00:00 2001 From: Vanessa Ung Date: Fri, 16 Jul 2021 13:19:02 +1000 Subject: [PATCH 2/2] Add test case for two commas in a row --- test-data/unit/stubgen.test | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test-data/unit/stubgen.test b/test-data/unit/stubgen.test index 09580198da3e0..7d95072800dc5 100644 --- a/test-data/unit/stubgen.test +++ b/test-data/unit/stubgen.test @@ -601,6 +601,17 @@ xx [out] from typing import Any, NamedTuple +class X(NamedTuple): + a: Any + b: Any + +[case testNamedtupleAltSyntaxUsingMultipleCommas] +from collections import namedtuple, xx +X = namedtuple('X', 'a,, b') +xx +[out] +from typing import Any, NamedTuple + class X(NamedTuple): a: Any b: Any