diff options
Diffstat (limited to 'py')
-rw-r--r-- | py/builtinimport.c | 3 | ||||
-rw-r--r-- | py/mpconfig.h | 5 | ||||
-rw-r--r-- | py/qstrdefs.h | 3 |
3 files changed, 11 insertions, 0 deletions
diff --git a/py/builtinimport.c b/py/builtinimport.c index 467a27897c..debf75fd4d 100644 --- a/py/builtinimport.c +++ b/py/builtinimport.c @@ -120,6 +120,9 @@ STATIC void do_load(mp_obj_t module_obj, vstr_t *file) { // set the new context mp_locals_set(mp_obj_module_get_globals(module_obj)); mp_globals_set(mp_obj_module_get_globals(module_obj)); + #if MICROPY_PY___FILE__ + mp_store_attr(module_obj, MP_QSTR___file__, mp_obj_new_str(vstr_str(file), vstr_len(file), false)); + #endif // parse the imported script mp_parse_error_kind_t parse_error_kind; diff --git a/py/mpconfig.h b/py/mpconfig.h index 99d697f9ad..bb1c0b5fe7 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -279,6 +279,11 @@ typedef double mp_float_t; #define MICROPY_PY_BUILTINS_PROPERTY (1) #endif +// Whether to set __file__ for imported modules +#ifndef MICROPY_PY___FILE__ +#define MICROPY_PY___FILE__ (1) +#endif + // Whether to provide "array" module. Note that large chunk of the // underlying code is shared with "bytearray" builtin type, so to // get real savings, it should be disabled too. diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 0deb646c7b..27b695722c 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -43,6 +43,9 @@ Q(__next__) Q(__qualname__) Q(__path__) Q(__repl_print__) +#if MICROPY_PY___FILE__ +Q(__file__) +#endif Q(__bool__) Q(__contains__) |