diff options
| author | Jeff Epler <jepler@gmail.com> | 2019-11-26 08:45:07 -0600 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2019-11-26 08:45:44 -0600 |
| commit | e188ae8b230c464d1deb4cc4a1e853c32d093c4d (patch) | |
| tree | b3e1f1b8cff91c8a130f84d7f700d1c8d5de5c69 /shared-bindings | |
| parent | 8f24ea48fbddf19429e02a211bae62c3913e4f9d (diff) | |
time: struct_time: allow construction like a namedtuple, too
Whenever there is more than one argument, delegate the operation to
namedtuple_make_new. This allows other circuitpython-compatible
idioms, like with keywords
time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0,
tm_min=0, tm_sec=14, tm_wday=5, tm_yday=5, tm_isdst=-1)
with 9 positional arguments, etc.
The only vaguely plausible CPython behavior still not permitted in
CircuitPython that I found is constructing a timetuple from a length-9
list, a la
time.struct_time(list(time.localtime())
Even better, by getting rid of an error message, the build shrinks a
tiny bit.
Diffstat (limited to 'shared-bindings')
| -rw-r--r-- | shared-bindings/time/__init__.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/shared-bindings/time/__init__.c b/shared-bindings/time/__init__.c index 7f9e5816e..b3e4604b5 100644 --- a/shared-bindings/time/__init__.c +++ b/shared-bindings/time/__init__.c @@ -85,7 +85,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(time_sleep_obj, time_sleep); #if MICROPY_PY_COLLECTIONS mp_obj_t struct_time_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) { if (n_args != 1 || (kw_args != NULL && kw_args->used > 0)) { - mp_raise_TypeError(translate("time.struct_time() takes exactly 1 argument")); + return namedtuple_make_new(type, n_args, args, kw_args); } if (mp_obj_get_type(args[0])->getiter != mp_obj_tuple_getiter || ((mp_obj_tuple_t*) MP_OBJ_TO_PTR(args[0]))->len != 9) { mp_raise_TypeError(translate("time.struct_time() takes a 9-sequence")); |
