From 3c9c3687d6c1001b88ef6dde200566456a1f2641 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 15 Sep 2015 14:56:13 +0100 Subject: py: Add support to call __init__ from a builtin module on first import. --- py/objmodule.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'py/objmodule.c') diff --git a/py/objmodule.c b/py/objmodule.c index 940a8daf2..63cccde2b 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -215,6 +215,17 @@ mp_obj_t mp_module_get(qstr module_name) { if (el == NULL) { return MP_OBJ_NULL; } + + if (MICROPY_MODULE_BUILTIN_INIT) { + // look for __init__ and call it if it exists + mp_obj_t dest[2]; + mp_load_method_maybe(el->value, MP_QSTR___init__, dest); + if (dest[0] != MP_OBJ_NULL) { + mp_call_method_n_kw(0, 0, dest); + // register module so __init__ is not called again + mp_module_register(module_name, el->value); + } + } } // module found, return it -- cgit v1.2.3