TODO list
Remove Bytecode.cellvars and Bytecode.freevars?
Remove Bytecode.first_lineno? Compute it on conversions.
Add instruction constants/enums? Example:
from bytecode import instructions as i bytecode = Bytecode([i.LOAD_NAME('print'), i.LOAD_CONST('Hello World!'), i.CALL_FUNCTION(1), i.POP_TOP(), i.LOAD_CONST(None), i.RETURN_VALUE()])
Should we support instructions without parenthesis for instruction with no parameter? Example with POP_TOP and RETURN_VALUE:
from bytecode import instructions as i bytecode = Bytecode([i.LOAD_NAME('print'), i.LOAD_CONST('Hello World!'), i.CALL_FUNCTION(1), i.POP_TOP, i.LOAD_CONST(None), i.RETURN_VALUE])
Nicer API for function arguments in bytecode object? Bytecode has argcount, kwonlyargcount and argnames. 4 types of parameters: indexed,
*args
,**kwargs
and*, kwonly=3
. See inspect.signature()