Skip to content
Snippets Groups Projects
Commit ca41dc27 authored by Antonin ENFRUN's avatar Antonin ENFRUN Committed by Damien George
Browse files

py/objnamedtuple: Allow passing field names as a tuple.

So the documentation's example works.  Besides, a tuple can be more
memory efficient.
parent 2133924e
No related branches found
No related tags found
No related merge requests found
...@@ -165,10 +165,7 @@ STATIC mp_obj_t new_namedtuple_type(mp_obj_t name_in, mp_obj_t fields_in) { ...@@ -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); fields_in = mp_obj_str_split(1, &fields_in);
} }
#endif #endif
if (!MP_OBJ_IS_TYPE(fields_in, &mp_type_list)) { mp_obj_get_array(fields_in, &n_fields, &fields);
nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "list required"));
}
mp_obj_list_get(fields_in, &n_fields, &fields);
return mp_obj_new_namedtuple_type(name, 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); MP_DEFINE_CONST_FUN_OBJ_2(mp_namedtuple_obj, new_namedtuple_type);
......
...@@ -66,6 +66,11 @@ T3 = namedtuple("TupComma", "foo bar") ...@@ -66,6 +66,11 @@ T3 = namedtuple("TupComma", "foo bar")
t = T3(1, 2) t = T3(1, 2)
print(t.foo, t.bar) 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 # Try single string with comma field seperator
# Not implemented so far # Not implemented so far
#T2 = namedtuple("TupComma", "foo,bar") #T2 = namedtuple("TupComma", "foo,bar")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment