API Reference¶
codetransformer.transformers
¶
-
class
codetransformer.transformers.
asconstants
(*builtin_names, **kwargs)[source]¶ A code transformer that inlines names as constants.
- Positional arguments are interpreted as names of builtins (e.g.
len
,print
) to freeze as constants in the decorated function’s namespace. - Keyword arguments provide additional custom names to freeze as constants.
- If invoked with no positional or keyword arguments,
asconstants
inlines all names inbuiltins
.
Parameters: - *builtin_names – Names of builtins to freeze as constants.
- **kwargs – Additional key-value pairs to bind as constants.
Examples
Freezing Builtins:
>>> from codetransformer.transformers import asconstants >>> >>> @asconstants('len') ... def with_asconstants(x): ... return len(x) * 2 ... >>> def without_asconstants(x): ... return len(x) * 2 ... >>> len = lambda x: 0 >>> with_asconstants([1, 2, 3]) 6 >>> without_asconstants([1, 2, 3]) 0
Adding Custom Constants:
>>> @asconstants(a=1) ... def f(): ... return a ... >>> f() 1 >>> a = 5 >>> f() 1
- Positional arguments are interpreted as names of builtins (e.g.
-
class
codetransformer.transformers.
interpolated_strings
(*, transform_bytes=True, transform_str=False)[source]¶ A transformer that interpolates local variables into string literals.
Parameters: - transform_bytes (bool, optional) – Whether to transform bytes literals to interpolated unicode strings. Default is True.
- transform_str (bool, optional) – Whether to interpolate values into unicode strings. Default is False.
Example
>>> @interpolated_strings() ... def foo(a, b): ... c = a + b ... return b"{a} + {b} = {c}" ... >>> foo(1, 2) '1 + 2 = 3'
-
types
¶ Tuple containing types transformed by this transformer.
-
class
codetransformer.transformers.
overloaded_complexes
(xform)¶ Transformer that applies a callable to each complex constant in the transformed code object.
Parameters: xform (callable) – A callable to be applied to complex literals. See also
codetransformer.transformers.literals.overloaded_strs
-
class
codetransformer.transformers.
overloaded_floats
(xform)¶ Transformer that applies a callable to each float constant in the transformed code object.
Parameters: xform (callable) – A callable to be applied to float literals. See also
codetransformer.transformers.literals.overloaded_strs
-
class
codetransformer.transformers.
overloaded_ints
(xform)¶ Transformer that applies a callable to each int constant in the transformed code object.
Parameters: xform (callable) – A callable to be applied to int literals. See also
codetransformer.transformers.literals.overloaded_strs
-
class
codetransformer.transformers.
overloaded_lists
(xform)¶ A CodeTransformer for overloading BUILD_LIST instructions.
-
class
codetransformer.transformers.
overloaded_sets
(xform)¶ A CodeTransformer for overloading BUILD_SET instructions.
-
class
codetransformer.transformers.
overloaded_slices
(xform)¶ A CodeTransformer for overloading BUILD_SLICE instructions.
-
class
codetransformer.transformers.
overloaded_strs
(xform)¶ A transformer that overloads string literals.
Rewrites all constants of the form:
"some string"
as:
xform("some string")
Parameters: xform (callable) – Function to call on all string literals in the transformer target. Examples
>>> @overloaded_strs(lambda x: "ayy lmao ") ... def prepend_foo(s): ... return "foo" + s ... >>> prepend_foo("bar") 'ayy lmao bar'
-
class
codetransformer.transformers.
overloaded_tuples
(xform)¶ A CodeTransformer for overloading BUILD_TUPLE instructions.
-
class
codetransformer.transformers.
pattern_matched_exceptions
(matcher=<function match>)[source]¶ Allows usage of arbitrary expressions and matching functions in except blocks.
When an exception is raised in an except block in a function decorated with pattern_matched_exceptions, a matching function will be called with the block’s expression and the three values returned by sys.exc_info(). If the matching function returns True, we enter the corresponding except-block, otherwise we continue to the next block, or re-raise if there are no more blocks to check
Parameters: matcher (function, optional) – A function accepting an expression and the values of sys.exc_info, returning True if the exception info “matches” the expression.
The default behavior is to emulate standard python when the match expression is a subtype of Exception, and to compare exc.type and exc.args when the match expression is an instance of Exception.
Example
>>> @pattern_matched_exceptions() ... def foo(): ... try: ... raise ValueError('bar') ... except ValueError('buzz'): ... return 'buzz' ... except ValueError('bar'): ... return 'bar' >>> foo() 'bar'
-
class
codetransformer.transformers.
precomputed_slices
[source]¶ An optimizing transformer that precomputes and inlines slice literals.
Example
>>> from dis import dis >>> def first_five(l): ... return l[:5] ... >>> dis(first_five) 2 0 LOAD_FAST 0 (l) 3 LOAD_CONST 0 (None) 6 LOAD_CONST 1 (5) 9 BUILD_SLICE 2 12 BINARY_SUBSCR 13 RETURN_VALUE >>> dis(precomputed_slices()(first_five)) 2 0 LOAD_FAST 0 (l) 3 LOAD_CONST 0 (slice(None, 5, None)) 6 BINARY_SUBSCR 7 RETURN_VALUE
-
codetransformer.transformers.
islice_literals
[source]¶ Transformer that turns slice indexing into an islice object.
Examples
>>> from codetransformer.transformers.literals import islice_literals >>> @islice_literals ... def f(): ... return map(str, (1, 2, 3, 4))[:2] ... >>> f() <itertools.islice at ...> >>> tuple(f()) ('1', '2')
-
codetransformer.transformers.
bytearray_literals
¶
codetransformer.code
¶
-
class
codetransformer.code.
Code
(instrs, argnames=(), *, cellvars=(), freevars=(), name='<code>', filename='<code>', firstlineno=1, lnotab=None, flags=None)[source]¶ A higher abstraction over python’s CodeType.
See Include/code.h for more information.
Parameters: - instrs (iterable of Instruction) – A sequence of codetransformer Instruction objects.
- argnames (iterable of str, optional) – The names of the arguments to the code object.
- name (str, optional) – The name of this code object.
- filename (str, optional) – The file that this code object came from.
- firstlineno (int, optional) – The first line number of the code in this code object.
- lnotab (dict[Instruction -> int], optional) – The mapping from instruction to the line that it starts.
- flags (dict[str -> bool], optional) – Any flags to set. This updates the default flag set.
Variables: - argcount –
- argnames –
- cellvars –
- constructs_new_locals –
- consts –
- filename –
- flags –
- freevars –
- instrs –
- is_coroutine –
- is_generator –
- is_iterable_coroutine –
- is_nested –
- kwonlyargcount –
- lnotab –
- name –
- names –
- py_lnotab –
- sparse_instrs –
- stacksize –
- varnames –
-
argcount
¶ The number of arguments this code object accepts.
This does not include varargs (*args).
-
argnames
¶ The names of the arguments to this code object.
The format is: [args] [vararg] [kwonlyargs] [varkwarg] where each group is optional.
-
bytecode_offset
(instr)[source]¶ Returns the offset of instr in the bytecode representation.
Parameters: instr (Instruction) – The instruction the check the index of. Returns: idx – The index of instr in this code object in the sparse instructions. Return type: int
-
cellvars
¶ The names of the variables closed over by inner code objects.
-
constructs_new_locals
¶ Does this code object construct new locals?
This is True for things like functions where executing the code needs a new locals dict each time; however, something like a module does not normally need new locals.
-
consts
¶ The constants referenced in this code object.
-
dis
(file=None)[source]¶ Print self via the stdlib
dis
module.Parameters: file (file-like, optional) – A file-like object into which we should print. Defaults to sys.stdout.
-
filename
¶ The filename of this code object.
-
firstlineno
¶ The first source line from self.filename that this code object represents.
-
flags
¶ The flags of this code object represented as a mapping from flag name to boolean status.
Notes
This is a copy of the underlying flags. Mutations will not affect the code object.
-
freevars
¶ The names of the variables this code object has closed over.
-
classmethod
from_pycode
(co)[source]¶ Create a Code object from a python code object.
Parameters: co (CodeType) – The python code object. Returns: code – The codetransformer Code object. Return type: Code
-
classmethod
from_pyfunc
(f)[source]¶ Create a Code object from a python function object.
Parameters: f (function) – The function from which to construct a code object. Returns: code – A Code object representing f.__code__. Return type: Code
-
index
(instr)[source]¶ Returns the index of instr.
Parameters: instr (Instruction) – The instruction the check the index of. Returns: idx – The index of instr in this code object. Return type: int
-
instrs
¶ The instructions in this code object.
-
is_coroutine
¶ Is this a coroutine defined with async def?
This is 3.5 and greater.
-
is_generator
¶ Is this a generator?
-
is_iterable_coroutine
¶ Is this an async generator defined with types.coroutine?
This is 3.5 and greater.
-
is_nested
¶ Is this a nested code object?
-
kwonlyargcount
¶ The number of keyword only arguments this code object accepts.
This does not include varkwargs (**kwargs).
-
lnotab
¶ The mapping of line number to the first instruction on that line.
-
name
¶ The name of this code object.
-
names
¶ The names referenced in this code object.
Names come from instructions like LOAD_GLOBAL or STORE_ATTR where the name of the global or attribute is needed at runtime.
-
py_flags
¶ The flags of this code object represented as a bitmask.
-
py_lnotab
¶ The encoded lnotab that python uses to compute when lines start.
Note
See Objects/lnotab_notes.txt in the cpython source for more details.
-
sparse_instrs
¶ The instructions where the index of an instruction is the bytecode offset of that instruction.
None indicates that no instruction is at that offset.
-
stacksize
¶ The maximum amount of stack space used by this code object.
-
to_pycode
()[source]¶ Create a python code object from the more abstract codetransfomer.Code object.
Returns: co – The python code object. Return type: CodeType
-
varnames
¶ The names of all of the local variables in this code object.
-
class
codetransformer.code.
Flag
[source]¶ An enum describing the bitmask of flags that can be set on a code object.
-
CO_COROUTINE
= <Flag.CO_COROUTINE: 128>¶
-
CO_FUTURE_ABSOLUTE_IMPORT
= <Flag.CO_FUTURE_ABSOLUTE_IMPORT: 16384>¶
-
CO_FUTURE_BARRY_AS_BDFL
= <Flag.CO_FUTURE_BARRY_AS_BDFL: 262144>¶
-
CO_FUTURE_DIVISION
= <Flag.CO_FUTURE_DIVISION: 8192>¶
-
CO_FUTURE_GENERATOR_STOP
= <Flag.CO_FUTURE_GENERATOR_STOP: 524288>¶
-
CO_FUTURE_PRINT_FUNCTION
= <Flag.CO_FUTURE_PRINT_FUNCTION: 65536>¶
-
CO_FUTURE_UNICODE_LITERALS
= <Flag.CO_FUTURE_UNICODE_LITERALS: 131072>¶
-
CO_FUTURE_WITH_STATEMENT
= <Flag.CO_FUTURE_WITH_STATEMENT: 32768>¶
-
CO_GENERATOR
= <Flag.CO_GENERATOR: 32>¶
-
CO_ITERABLE_COROUTINE
= <Flag.CO_ITERABLE_COROUTINE: 256>¶
-
CO_NESTED
= <Flag.CO_NESTED: 16>¶
-
CO_NEWLOCALS
= <Flag.CO_NEWLOCALS: 2>¶
-
CO_NOFREE
= <Flag.CO_NOFREE: 64>¶
-
CO_OPTIMIZED
= <Flag.CO_OPTIMIZED: 1>¶
-
CO_VARARGS
= <Flag.CO_VARARGS: 4>¶
-
CO_VARKEYWORDS
= <Flag.CO_VARKEYWORDS: 8>¶
-
max
= 1040895¶
-
classmethod
pack
(*, CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS, CO_NESTED, CO_GENERATOR, CO_NOFREE, CO_COROUTINE, CO_ITERABLE_COROUTINE, CO_FUTURE_DIVISION, CO_FUTURE_ABSOLUTE_IMPORT, CO_FUTURE_WITH_STATEMENT, CO_FUTURE_PRINT_FUNCTION, CO_FUTURE_UNICODE_LITERALS, CO_FUTURE_BARRY_AS_BDFL, CO_FUTURE_GENERATOR_STOP)[source]¶ Pack a flags into a bitmask.
I hope you like kwonly args.
Parameters: - CO_OPTIMIZED (bool) –
- CO_NEWLOCALS (bool) –
- CO_VARARGS (bool) –
- CO_VARKEYWORDS (bool) –
- CO_NESTED (bool) –
- CO_GENERATOR (bool) –
- CO_NOFREE (bool) –
- CO_COROUTINE (bool) –
- CO_ITERABLE_COROUTINE (bool) –
- CO_FUTURE_DIVISION (bool) –
- CO_FUTURE_ABSOLUTE_IMPORT (bool) –
- CO_FUTURE_WITH_STATEMENT (bool) –
- CO_FUTURE_PRINT_FUNCTION (bool) –
- CO_FUTURE_UNICODE_LITERALS (bool) –
- CO_FUTURE_BARRY_AS_BDFL (bool) –
- CO_FUTURE_GENERATOR_STOP (bool) –
Returns: mask
Return type: See also
-
codetransformer.core
¶
-
class
codetransformer.core.
CodeTransformer
[source]¶ A code object transformer, similar to the NodeTransformer from the ast module.
Variables: code – -
begin
(startcode)[source]¶ Begin a new startcode.
Parameters: startcode (any) – The startcode to begin.
-
code
¶ The code object we are currently manipulating.
-
context
¶ Lookup the current transformation context.
Raises: NoContext
– Raised when there is no active transformation context.
-
startcode
¶ The startcode we are currently in.
-
transform
(code, *, name=None, filename=None)[source]¶ Transform a codetransformer.Code object applying the transforms.
Parameters: - code (Code) – The code object to transform.
- name (str, optional) – The new name for this code object.
- filename (str, optional) – The new filename for this code object.
Returns: new_code – The transformed code object.
Return type:
-
transform_cellvars
(obj)¶ Identity function.
Parameters: obj (any) – The object to return Returns: obj – The input unchanged Return type: any
-
transform_consts
(consts)[source]¶ transformer for the co_consts field.
Override this method to transform the co_consts of the code object.
Parameters: consts (tuple) – The co_consts Returns: new_consts – The new constants. Return type: tuple
-
transform_defaults
(obj)¶ Identity function.
Parameters: obj (any) – The object to return Returns: obj – The input unchanged Return type: any
-
transform_freevars
(obj)¶ Identity function.
Parameters: obj (any) – The object to return Returns: obj – The input unchanged Return type: any
-
transform_name
(obj)¶ Identity function.
Parameters: obj (any) – The object to return Returns: obj – The input unchanged Return type: any
-
codetransformer.instructions
¶
For details on particular instructions, see the dis stdlib module docs.
-
class
codetransformer.instructions.
Instruction
(arg=no_default)[source]¶ Base class for all instruction types.
Parameters: arg (any, optional) – The argument for the instruction. This should be the actual value of the argument, for example, if this is a LOAD_CONST
, use the constant value, not the index that would appear in the bytecode.-
absjmp
¶
-
equiv
(instr)[source]¶ Check equivalence of instructions. This checks against the types and the arguments of the instructions
Parameters: instr (Instruction) – The instruction to check against. Returns: is_equiv – If the instructions are equivalent. Return type: bool Notes
This is a separate concept from instruction identity. Two separate instructions can be equivalent without being the same exact instance. This means that two equivalent instructions can be at different points in the bytecode or be targeted by different jumps.
-
classmethod
from_opcode
(opcode, arg=no_default)[source]¶ Create an instruction from an opcode and raw argument.
Parameters: - opcode (int) – Opcode for the instruction to create.
- arg (int, optional) – The argument for the instruction.
Returns: intsr – An instance of the instruction named by
opcode
.Return type:
-
have_arg
¶
-
opcode
¶
-
opname
¶
-
reljmp
¶
-
stack_effect
¶ The net effect of executing this instruction on the interpreter stack.
Instructions that pop values off the stack have negative stack effect equal to the number of popped values.
Instructions that push values onto the stack have positive stack effect equal to the number of popped values.
Examples
- LOAD_{FAST,NAME,GLOBAL,DEREF} push one value onto the stack. They have a stack_effect of 1.
- POP_JUMP_IF_{TRUE,FALSE} always pop one value off the stack. They have a stack effect of -1.
- BINARY_* instructions pop two instructions off the stack, apply a binary operator, and push the resulting value onto the stack. They have a stack effect of -1 (-2 values consumed + 1 value pushed).
-
steal
(instr)[source]¶ Steal the jump index off of instr.
This makes anything that would have jumped to instr jump to this Instruction instead.
Parameters: instr (Instruction) – The instruction to steal the jump sources from. Returns: self – The instruction that owns this method. Return type: Instruction Notes
This mutates self and
instr
inplace.
-
-
class
codetransformer.instructions.
BEFORE_ASYNC_WITH
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 52¶
-
opname
= 'BEFORE_ASYNC_WITH'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_ADD
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 23¶
-
opname
= 'BINARY_ADD'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_AND
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 64¶
-
opname
= 'BINARY_AND'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_FLOOR_DIVIDE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 26¶
-
opname
= 'BINARY_FLOOR_DIVIDE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_LSHIFT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 62¶
-
opname
= 'BINARY_LSHIFT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_MATRIX_MULTIPLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 16¶
-
opname
= 'BINARY_MATRIX_MULTIPLY'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_MODULO
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 22¶
-
opname
= 'BINARY_MODULO'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_MULTIPLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 20¶
-
opname
= 'BINARY_MULTIPLY'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_OR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 66¶
-
opname
= 'BINARY_OR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_POWER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 19¶
-
opname
= 'BINARY_POWER'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_RSHIFT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 63¶
-
opname
= 'BINARY_RSHIFT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_SUBSCR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 25¶
-
opname
= 'BINARY_SUBSCR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_SUBTRACT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 24¶
-
opname
= 'BINARY_SUBTRACT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_TRUE_DIVIDE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 27¶
-
opname
= 'BINARY_TRUE_DIVIDE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BINARY_XOR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 65¶
-
opname
= 'BINARY_XOR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BREAK_LOOP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 80¶
-
opname
= 'BREAK_LOOP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_LIST
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 103¶
-
opname
= 'BUILD_LIST'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_LIST_UNPACK
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 149¶
-
opname
= 'BUILD_LIST_UNPACK'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_MAP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 105¶
-
opname
= 'BUILD_MAP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_MAP_UNPACK
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 150¶
-
opname
= 'BUILD_MAP_UNPACK'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_MAP_UNPACK_WITH_CALL
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 151¶
-
opname
= 'BUILD_MAP_UNPACK_WITH_CALL'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_SET
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 104¶
-
opname
= 'BUILD_SET'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_SET_UNPACK
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 153¶
-
opname
= 'BUILD_SET_UNPACK'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_SLICE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 133¶
-
opname
= 'BUILD_SLICE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_TUPLE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 102¶
-
opname
= 'BUILD_TUPLE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
BUILD_TUPLE_UNPACK
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 152¶
-
opname
= 'BUILD_TUPLE_UNPACK'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
CALL_FUNCTION
(packed=no_default, *, positional=0, keyword=0)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 131¶
-
opname
= 'CALL_FUNCTION'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
CALL_FUNCTION_KW
(packed=no_default, *, positional=0, keyword=0)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 141¶
-
opname
= 'CALL_FUNCTION_KW'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
CALL_FUNCTION_VAR
(packed=no_default, *, positional=0, keyword=0)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 140¶
-
opname
= 'CALL_FUNCTION_VAR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
CALL_FUNCTION_VAR_KW
(packed=no_default, *, positional=0, keyword=0)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 142¶
-
opname
= 'CALL_FUNCTION_VAR_KW'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
COMPARE_OP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 107¶
-
opname
= 'COMPARE_OP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
CONTINUE_LOOP
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 119¶
-
opname
= 'CONTINUE_LOOP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DELETE_ATTR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 96¶
-
opname
= 'DELETE_ATTR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DELETE_DEREF
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 138¶
-
opname
= 'DELETE_DEREF'¶
-
reljmp
= False¶
-
uses_free
= True¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
vartype
¶
-
-
class
codetransformer.instructions.
DELETE_FAST
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 126¶
-
opname
= 'DELETE_FAST'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= True¶
-
-
class
codetransformer.instructions.
DELETE_GLOBAL
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 98¶
-
opname
= 'DELETE_GLOBAL'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DELETE_NAME
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 91¶
-
opname
= 'DELETE_NAME'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DELETE_SUBSCR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 61¶
-
opname
= 'DELETE_SUBSCR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DUP_TOP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 4¶
-
opname
= 'DUP_TOP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
DUP_TOP_TWO
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 5¶
-
opname
= 'DUP_TOP_TWO'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
END_FINALLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 88¶
-
opname
= 'END_FINALLY'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
EXTENDED_ARG
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 144¶
-
opname
= 'EXTENDED_ARG'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
FOR_ITER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 93¶
-
opname
= 'FOR_ITER'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
GET_AITER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 50¶
-
opname
= 'GET_AITER'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
GET_ANEXT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 51¶
-
opname
= 'GET_ANEXT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
GET_AWAITABLE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 73¶
-
opname
= 'GET_AWAITABLE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
GET_ITER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 68¶
-
opname
= 'GET_ITER'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
GET_YIELD_FROM_ITER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 69¶
-
opname
= 'GET_YIELD_FROM_ITER'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
IMPORT_FROM
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 109¶
-
opname
= 'IMPORT_FROM'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
IMPORT_NAME
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 108¶
-
opname
= 'IMPORT_NAME'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
IMPORT_STAR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 84¶
-
opname
= 'IMPORT_STAR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_ADD
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 55¶
-
opname
= 'INPLACE_ADD'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_AND
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 77¶
-
opname
= 'INPLACE_AND'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_FLOOR_DIVIDE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 28¶
-
opname
= 'INPLACE_FLOOR_DIVIDE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_LSHIFT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 75¶
-
opname
= 'INPLACE_LSHIFT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_MATRIX_MULTIPLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 17¶
-
opname
= 'INPLACE_MATRIX_MULTIPLY'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_MODULO
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 59¶
-
opname
= 'INPLACE_MODULO'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_MULTIPLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 57¶
-
opname
= 'INPLACE_MULTIPLY'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_OR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 79¶
-
opname
= 'INPLACE_OR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_POWER
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 67¶
-
opname
= 'INPLACE_POWER'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_RSHIFT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 76¶
-
opname
= 'INPLACE_RSHIFT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_SUBTRACT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 56¶
-
opname
= 'INPLACE_SUBTRACT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_TRUE_DIVIDE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 29¶
-
opname
= 'INPLACE_TRUE_DIVIDE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
INPLACE_XOR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 78¶
-
opname
= 'INPLACE_XOR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
JUMP_ABSOLUTE
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 113¶
-
opname
= 'JUMP_ABSOLUTE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
JUMP_FORWARD
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 110¶
-
opname
= 'JUMP_FORWARD'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
JUMP_IF_FALSE_OR_POP
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 111¶
-
opname
= 'JUMP_IF_FALSE_OR_POP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
JUMP_IF_TRUE_OR_POP
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 112¶
-
opname
= 'JUMP_IF_TRUE_OR_POP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LIST_APPEND
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 145¶
-
opname
= 'LIST_APPEND'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LOAD_ATTR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 106¶
-
opname
= 'LOAD_ATTR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LOAD_BUILD_CLASS
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 71¶
-
opname
= 'LOAD_BUILD_CLASS'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LOAD_CLASSDEREF
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 148¶
-
opname
= 'LOAD_CLASSDEREF'¶
-
reljmp
= False¶
-
uses_free
= True¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
vartype
¶
-
-
class
codetransformer.instructions.
LOAD_CLOSURE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 135¶
-
opname
= 'LOAD_CLOSURE'¶
-
reljmp
= False¶
-
uses_free
= True¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
vartype
¶
-
-
class
codetransformer.instructions.
LOAD_CONST
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 100¶
-
opname
= 'LOAD_CONST'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LOAD_DEREF
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 136¶
-
opname
= 'LOAD_DEREF'¶
-
reljmp
= False¶
-
uses_free
= True¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
vartype
¶
-
-
class
codetransformer.instructions.
LOAD_FAST
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 124¶
-
opname
= 'LOAD_FAST'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= True¶
-
-
class
codetransformer.instructions.
LOAD_GLOBAL
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 116¶
-
opname
= 'LOAD_GLOBAL'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
LOAD_NAME
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 101¶
-
opname
= 'LOAD_NAME'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
MAKE_CLOSURE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 134¶
-
opname
= 'MAKE_CLOSURE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
MAKE_FUNCTION
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 132¶
-
opname
= 'MAKE_FUNCTION'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
MAP_ADD
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 147¶
-
opname
= 'MAP_ADD'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
NOP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 9¶
-
opname
= 'NOP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
POP_BLOCK
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 87¶
-
opname
= 'POP_BLOCK'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
POP_EXCEPT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 89¶
-
opname
= 'POP_EXCEPT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
POP_JUMP_IF_FALSE
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 114¶
-
opname
= 'POP_JUMP_IF_FALSE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
POP_JUMP_IF_TRUE
(arg=no_default)¶ -
absjmp
= True¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 115¶
-
opname
= 'POP_JUMP_IF_TRUE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
POP_TOP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 1¶
-
opname
= 'POP_TOP'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
PRINT_EXPR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 70¶
-
opname
= 'PRINT_EXPR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
RAISE_VARARGS
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 130¶
-
opname
= 'RAISE_VARARGS'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
RETURN_VALUE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 83¶
-
opname
= 'RETURN_VALUE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
ROT_THREE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 3¶
-
opname
= 'ROT_THREE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
ROT_TWO
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 2¶
-
opname
= 'ROT_TWO'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SETUP_ASYNC_WITH
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 154¶
-
opname
= 'SETUP_ASYNC_WITH'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SETUP_EXCEPT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 121¶
-
opname
= 'SETUP_EXCEPT'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SETUP_FINALLY
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 122¶
-
opname
= 'SETUP_FINALLY'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SETUP_LOOP
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 120¶
-
opname
= 'SETUP_LOOP'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SETUP_WITH
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= True¶
-
opcode
= 143¶
-
opname
= 'SETUP_WITH'¶
-
reljmp
= True¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
SET_ADD
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 146¶
-
opname
= 'SET_ADD'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
STORE_ATTR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 95¶
-
opname
= 'STORE_ATTR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
STORE_DEREF
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 137¶
-
opname
= 'STORE_DEREF'¶
-
reljmp
= False¶
-
uses_free
= True¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
vartype
¶
-
-
class
codetransformer.instructions.
STORE_FAST
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 125¶
-
opname
= 'STORE_FAST'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= True¶
-
-
class
codetransformer.instructions.
STORE_GLOBAL
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 97¶
-
opname
= 'STORE_GLOBAL'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
STORE_NAME
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 90¶
-
opname
= 'STORE_NAME'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= True¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
STORE_SUBSCR
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 60¶
-
opname
= 'STORE_SUBSCR'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNARY_INVERT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 15¶
-
opname
= 'UNARY_INVERT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNARY_NEGATIVE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 11¶
-
opname
= 'UNARY_NEGATIVE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNARY_NOT
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 12¶
-
opname
= 'UNARY_NOT'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNARY_POSITIVE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 10¶
-
opname
= 'UNARY_POSITIVE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNPACK_EX
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 94¶
-
opname
= 'UNPACK_EX'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
UNPACK_SEQUENCE
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= True¶
-
is_jmp
= False¶
-
opcode
= 92¶
-
opname
= 'UNPACK_SEQUENCE'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
WITH_CLEANUP_FINISH
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 82¶
-
opname
= 'WITH_CLEANUP_FINISH'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
-
class
codetransformer.instructions.
WITH_CLEANUP_START
(arg=no_default)¶ -
absjmp
= False¶
-
have_arg
= False¶
-
is_jmp
= False¶
-
opcode
= 81¶
-
opname
= 'WITH_CLEANUP_START'¶
-
reljmp
= False¶
-
uses_free
= False¶
-
uses_name
= False¶
-
uses_varname
= False¶
-
codetransformer.patterns
¶
-
class
codetransformer.patterns.
pattern
(*matchables, startcodes=(0, ))[source]¶ A pattern of instructions that can be matched against.
This class is intended to be used as a decorator on methods of CodeTransformer subclasses. It is used to mark that a given method should be called on sequences of instructions that match the pattern described by the inputs.
Parameters: - *matchables (iterable of matchable) – The type of instructions to match against.
- startcodes (container of any) – The startcodes where this pattern should be tried.
Examples
Match a single BINARY_ADD instruction:
pattern(BINARY_ADD)
Match a single BINARY_ADD followed by a RETURN_VALUE:
pattern(BINARY_ADD, RETURN_VALUE)
Match a single BINARY_ADD followed by any other single instruction:
pattern(BINARY_ADD, matchany)
Match a single BINARY_ADD followed by any number of instructions:
pattern(BINARY_ADD, matchany[var])
-
codetransformer.patterns.
DEFAULT_STARTCODE
= 0¶ The default startcode for patterns.
codetransformer.utils
¶
codetransformer.utils.pretty¶
Utilities for pretty-printing ASTs and code objects.
-
codetransformer.utils.pretty.
a
(text, mode='exec', indent=' ', file=None)[source]¶ Interactive convenience for displaying the AST of a code string.
Writes a pretty-formatted AST-tree to file.
Parameters: - text (str) – Text of Python code to render as AST.
- mode ({'exec', 'eval'}, optional) – Mode for ast.parse. Default is ‘exec’.
- indent (str, optional) – String to use for indenting nested expressions. Default is two spaces.
- file (None or file-like object, optional) – File to use to print output. If the default of None is passed, we use sys.stdout.
-
codetransformer.utils.pretty.
d
(obj, mode='exec', file=None)[source]¶ Interactive convenience for displaying the disassembly of a function, module, or code string.
Compiles text and recursively traverses the result looking for code objects to render with dis.dis.
Parameters: - obj (str, CodeType, or object with __code__ attribute) – Object to disassemble. If obj is an instance of CodeType, we use it unchanged. If obj is a string, we compile it with mode and then disassemble. Otherwise, we look for a __code__ attribute on obj.
- mode ({'exec', 'eval'}, optional) – Mode for compile. Default is ‘exec’.
- file (None or file-like object, optional) – File to use to print output. If the default of None is passed, we use sys.stdout.
-
codetransformer.utils.pretty.
display
(text, mode='exec', file=None)[source]¶ Show text, rendered as AST and as Bytecode.
Parameters: - text (str) – Text of Python code to render.
- mode ({'exec', 'eval'}, optional) – Mode for ast.parse and compile. Default is ‘exec’.
- file (None or file-like object, optional) – File to use to print output. If the default of None is passed, we use sys.stdout.
-
codetransformer.utils.pretty.
pformat_ast
(node, include_attributes=False, indent=' ')[source]¶ Pretty-format an AST tree element
Parameters: - node (ast.AST) – Top-level node to render.
- include_attributes (bool, optional) – Whether to include node attributes. Default False.
- indent (str, optional.) – Indentation string for nested expressions. Default is two spaces.
-
codetransformer.utils.pretty.
pprint_ast
(node, include_attributes=False, indent=' ', file=None)[source]¶ Pretty-print an AST tree.
Parameters: - node (ast.AST) – Top-level node to render.
- include_attributes (bool, optional) – Whether to include node attributes. Default False.
- indent (str, optional.) – Indentation string for nested expressions. Default is two spaces.
- file (None or file-like object, optional) – File to use to print output. If the default of None is passed, we use sys.stdout.
codetransformer.utils.immutable¶
Utilities for creating and working with immutable objects.
codetransformer.utils.functional¶
Utilities for functional programming.
-
codetransformer.utils.functional.
ffill
(iterable)[source]¶ Forward fill non None values in some iterable.
Parameters: iterable (iterable) – The iterable to forward fill. Yields: e (any) – The last non None value or None if there has not been a non None value.
-
codetransformer.utils.functional.
flatten
(seq, *, recurse_types=(<class 'tuple'>, <class 'list'>, <class 'set'>, <class 'frozenset'>))[source]¶ Convert a (possibly nested) iterator into a flattened iterator.
Parameters: - seq (iterable) – The sequence to flatten.
- optional (recurse_types,) – Types to recursively flatten. Defaults to (tuple, list, set, frozenset).
- list(flatten((1, (2, 3), ((4,), 5)))) (>>>) –
- 2, 3, 4, 5] ([1,) –
- list(flatten(["abc", "def"], recurse_types=(str,))) (>>>) –
- 'b', 'c', 'd', 'e', 'f'] (['a',) –
-
codetransformer.utils.functional.
reverse_dict
(d)[source]¶ Reverse a dictionary, replacing the keys and values.
Parameters: d (dict) – The dict to reverse. Returns: rd – The dict with the keys and values flipped. Return type: dict Examples
>>> d = {'a': 1, 'b': 2, 'c': 3} >>> e = reverse_dict(d) >>> e == {1: 'a', 2: 'b', 3: 'c'} True
-
codetransformer.utils.functional.
scanl
(f, n, ns)[source]¶ Reduce ns by f starting with n yielding each intermediate value.
tuple(scanl(f, n, ns))[-1] == reduce(f, ns, n)
Parameters: Yields: p (any) – The value of reduce(f, ns[:idx]) where idx is the current index.
Examples
>>> import operator as op >>> tuple(scanl(op.add, 0, (1, 2, 3, 4))) (0, 1, 3, 6, 10)