From ca41dc27504c68e805472a6788c4cddbb0da28b1 Mon Sep 17 00:00:00 2001
From: Antonin ENFRUN <antonin.e@me.com>
Date: Sun, 22 May 2016 19:28:04 +0200
Subject: [PATCH] py/objnamedtuple: Allow passing field names as a tuple.

So the documentation's example works.  Besides, a tuple can be more
memory efficient.
---
 py/objnamedtuple.c          | 5 +----
 tests/basics/namedtuple1.py | 5 +++++
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/py/objnamedtuple.c b/py/objnamedtuple.c
index 76dc9a1fc..38cda1ad7 100644
--- a/py/objnamedtuple.c
+++ b/py/objnamedtuple.c
@@ -165,10 +165,7 @@ STATIC mp_obj_t new_namedtuple_type(mp_obj_t name_in, mp_obj_t fields_in) {
         fields_in = mp_obj_str_split(1, &fields_in);
     }
     #endif
-    if (!MP_OBJ_IS_TYPE(fields_in, &mp_type_list)) {
-        nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "list required"));
-    }
-    mp_obj_list_get(fields_in, &n_fields, &fields);
+    mp_obj_get_array(fields_in, &n_fields, &fields);
     return mp_obj_new_namedtuple_type(name, n_fields, fields);
 }
 MP_DEFINE_CONST_FUN_OBJ_2(mp_namedtuple_obj, new_namedtuple_type);
diff --git a/tests/basics/namedtuple1.py b/tests/basics/namedtuple1.py
index dfbb79f2e..346e32fbf 100644
--- a/tests/basics/namedtuple1.py
+++ b/tests/basics/namedtuple1.py
@@ -66,6 +66,11 @@ T3 = namedtuple("TupComma", "foo bar")
 t = T3(1, 2)
 print(t.foo, t.bar)
 
+# Try tuple
+T4 = namedtuple("TupTuple", ("foo", "bar"))
+t = T4(1, 2)
+print(t.foo, t.bar)
+
 # Try single string with comma field seperator
 # Not implemented so far
 #T2 = namedtuple("TupComma", "foo,bar")
-- 
GitLab