summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
Diffstat (limited to 'py')
-rw-r--r--py/builtinimport.c3
-rw-r--r--py/mpconfig.h5
-rw-r--r--py/qstrdefs.h3
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__)