diff options
author | Paul m. p. P <paul.peny@wanadoo.fr> | 2018-10-22 18:34:29 +0200 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-10-23 11:22:50 +1100 |
commit | 454cca6016afc96deb6d1ad5d1b3553ab9ad18dd (patch) | |
tree | 953cb4bdd6de7b25498d2e35e831c2b307a1b496 /tests/import/module_getattr.py | |
parent | a5273133829ed3e2a8c8e3c44e37e198e109f340 (diff) |
py/objmodule: Implement PEP 562's __getattr__ for modules.
Configurable via MICROPY_MODULE_GETATTR, disabled by default. Among other
things __getattr__ for modules can help to build lazy loading / code
unloading at runtime.
Diffstat (limited to 'tests/import/module_getattr.py')
-rw-r--r-- | tests/import/module_getattr.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/import/module_getattr.py b/tests/import/module_getattr.py new file mode 100644 index 000000000..4a18f414d --- /dev/null +++ b/tests/import/module_getattr.py @@ -0,0 +1,23 @@ +# test __getattr__ on module + +# ensure that does_not_exist doesn't exist to start with +this = __import__(__name__) +try: + this.does_not_exist + assert False +except AttributeError: + pass + +# define __getattr__ +def __getattr__(attr): + if attr == 'does_not_exist': + return False + raise AttributeError + +# do feature test (will also test functionality if the feature exists) +if not hasattr(this, 'does_not_exist'): + print('SKIP') + raise SystemExit + +# check that __getattr__ works as expected +print(this.does_not_exist) |