From 29d28c2574d6c0b93fd3fc869b389a61dee12102 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 10 May 2018 23:07:19 +1000 Subject: [PATCH] py/modbuiltins: In built-in dir make use of mp_load_method_protected. This gives dir() better behaviour when listing the attributes of a user type that defines __getattr__: it will now not list those attributes for which __getattr__ raises AttributeError (meaning the attribute is not supported by the object). --- py/modbuiltins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/modbuiltins.c b/py/modbuiltins.c index 2f35264159..bc99f82610 100644 --- a/py/modbuiltins.c +++ b/py/modbuiltins.c @@ -188,7 +188,7 @@ STATIC mp_obj_t mp_builtin_dir(size_t n_args, const mp_obj_t *args) { size_t nqstr = QSTR_TOTAL(); for (size_t i = MP_QSTR_ + 1; i < nqstr; ++i) { mp_obj_t dest[2]; - mp_load_method_maybe(args[0], i, dest); + mp_load_method_protected(args[0], i, dest, false); if (dest[0] != MP_OBJ_NULL) { mp_obj_list_append(dir, MP_OBJ_NEW_QSTR(i)); }