mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 13:01:10 +02:00
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>
37 lines
642 B
Python
37 lines
642 B
Python
# Test function.__code__ attribute.
|
|
|
|
try:
|
|
(lambda: 0).__code__
|
|
except AttributeError:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
|
|
def f():
|
|
return a
|
|
|
|
|
|
ftype = type(f)
|
|
|
|
# Test __code__ access and function constructor.
|
|
code = f.__code__
|
|
print(type(ftype(code, {})) is ftype)
|
|
|
|
# Test instantiating multiple code's with different globals dicts.
|
|
code = f.__code__
|
|
f1 = ftype(code, {"a": 1})
|
|
f2 = ftype(code, {"a": 2})
|
|
print(f1(), f2())
|
|
|
|
# Test bad first argument type.
|
|
try:
|
|
ftype(None, {})
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
# Test bad second argument type.
|
|
try:
|
|
ftype(f.__code__, None)
|
|
except TypeError:
|
|
print("TypeError")
|