mirror of
https://github.com/micropython/micropython.git
synced 2025-08-22 18:40:35 +02:00
py/objfun: Implement function.__code__ and function constructor.
This allows retrieving the code object of a function using `function.__code__`, and then reconstructing a function from a code object using `FunctionType(code_object)`. This feature is controlled by `MICROPY_PY_FUNCTION_ATTRS_CODE` and is enabled at the full-features level. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -1041,6 +1041,11 @@ typedef double mp_float_t;
|
||||
#define MICROPY_PY_FUNCTION_ATTRS (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_EXTRA_FEATURES)
|
||||
#endif
|
||||
|
||||
// Whether to implement the __code__ attribute on functions, and function constructor
|
||||
#ifndef MICROPY_PY_FUNCTION_ATTRS_CODE
|
||||
#define MICROPY_PY_FUNCTION_ATTRS_CODE (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_FULL_FEATURES)
|
||||
#endif
|
||||
|
||||
// Whether to support the descriptors __get__, __set__, __delete__
|
||||
// This costs some code size and makes load/store/delete of instance
|
||||
// attributes slower for the classes that use this feature
|
||||
@@ -1135,7 +1140,7 @@ typedef double mp_float_t;
|
||||
#define MICROPY_PY_BUILTINS_CODE_BASIC (2)
|
||||
#define MICROPY_PY_BUILTINS_CODE_FULL (3)
|
||||
#ifndef MICROPY_PY_BUILTINS_CODE
|
||||
#define MICROPY_PY_BUILTINS_CODE (MICROPY_PY_SYS_SETTRACE ? MICROPY_PY_BUILTINS_CODE_FULL : (MICROPY_PY_BUILTINS_COMPILE ? MICROPY_PY_BUILTINS_CODE_MINIMUM : MICROPY_PY_BUILTINS_CODE_NONE))
|
||||
#define MICROPY_PY_BUILTINS_CODE (MICROPY_PY_SYS_SETTRACE ? MICROPY_PY_BUILTINS_CODE_FULL : (MICROPY_PY_FUNCTION_ATTRS_CODE ? MICROPY_PY_BUILTINS_CODE_BASIC : (MICROPY_PY_BUILTINS_COMPILE ? MICROPY_PY_BUILTINS_CODE_MINIMUM : MICROPY_PY_BUILTINS_CODE_NONE)))
|
||||
#endif
|
||||
|
||||
// Whether to support dict.fromkeys() class method
|
||||
|
Reference in New Issue
Block a user