Working with Michelson code
Expanding macros
- class pymavryk.michelson.macros.PxrNode(depth, annots, args, is_root)
 - annots
 Alias for field number 1
- args
 Alias for field number 2
- depth
 Alias for field number 0
- is_root
 Alias for field number 3
- pymavryk.michelson.macros.expand_macro(prim, annots, args, internal=False)[source]
 Expands Michelson macro.
- Parameters:
 prim – macro name
annots – annotations (optional)
args – arguments (optional)
internal – this function is called during another macro expansion
- Returns:
 Code sequence (Micheline expression)
Parsing AST
- class pymavryk.michelson.parse.MichelsonParser(debug=False, write_tables=False, extra_primitives: List[str] | None = None)[source]
 Customizable Michelson parser
- parse(code)[source]
 Parse Michelson source.
- Parameters:
 code – Michelson source
- Returns:
 Micheline expression
- tokens = ('INT', 'BYTE', 'STR', 'ANNOT', 'PRIM', 'LEFT_CURLY', 'RIGHT_CURLY', 'LEFT_PAREN', 'RIGHT_PAREN', 'SEMI')
 
- class pymavryk.michelson.parse.SimpleMichelsonLexer[source]
 - t_ANNOT = '[:@%]+([_0-9a-zA-Z\\.]*)?'
 
- t_BYTE = '0x[A-Fa-f0-9]*'
 
- t_INT = '-?[0-9]+'
 
- t_LEFT_CURLY = '\\{'
 
- t_LEFT_PAREN = '\\('
 
- t_PRIM = '[A-Za-z][A-Za-z0-9_]+'
 
- t_RIGHT_CURLY = '\\}'
 
- t_RIGHT_PAREN = '\\)'
 
- t_SEMI = ';'
 
- t_STR = '\\"(\\\\.|[^\\"])*\\"'
 
- t_ignore = ' \t\r\n\x0c'
 
- t_ignore_COMMENT = '#[^\\n]*'
 
- t_ignore_MULTI_COMMENT = '/\\*[^*]*\\*/'
 
- tokens = ('INT', 'BYTE', 'STR', 'ANNOT', 'PRIM', 'LEFT_CURLY', 'RIGHT_CURLY', 'LEFT_PAREN', 'RIGHT_PAREN', 'SEMI')
 
Code formatter
- pymavryk.michelson.format.format_timestamp(timestamp: int) str[source]
 Format unix timestamp.
- Parameters:
 timestamp – Unix timestamp (seconds)
- pymavryk.michelson.format.micheline_to_michelson(data, inline=False, wrap=False) str[source]
 Converts micheline expression into formatted Michelson source.
- Parameters:
 data – Micheline expression
inline – produce single line, used for mavkit-client arguments (False by default)
wrap – ensure expression is wrapped in brackets
Parameter section
- class pymavryk.michelson.sections.parameter.ParameterSection(item: MichelsonType)[source]
 - 
- classmethod create_type(args: List[Type[Micheline] | Any], annots: list | None = None, **kwargs) Type[ParameterSection][source]
 
- classmethod from_micheline_value(val_expr) ParameterSection[source]
 
- classmethod from_parameters(parameters: Dict[str, Any]) ParameterSection[source]
 
- classmethod from_python_object(py_obj) ParameterSection[source]
 
- classmethod list_entrypoints() Dict[str, Type[MichelsonType]][source]
 
- static match(type_expr) Type[ParameterSection][source]
 
- merge_lazy_diff(lazy_diff: List[dict]) ParameterSection[source]
 
- prim: str | None = 'parameter'
 
- root_name: str
 
 
Storage section
- class pymavryk.michelson.sections.storage.StorageSection(item: MichelsonType)[source]
 - 
- classmethod from_micheline_value(val_expr) StorageSection[source]
 
- classmethod from_python_object(py_obj) StorageSection[source]
 
- static match(type_expr) Type[StorageSection][source]
 
- merge_lazy_diff(lazy_diff: List[dict]) StorageSection[source]
 
- prim: str | None = 'storage'
 
 
Code section
Script wrapper
- class pymavryk.michelson.program.MichelsonProgram(name: str, parameter: ParameterSection, storage: StorageSection)[source]
 Michelson .tz contract interpreter interface
- begin(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) None[source]
 Prepare stack for contract execution
- code: Type[CodeSection]
 
- static create(sequence: Type[MichelineSequence]) Type[MichelsonProgram][source]
 Create MichelsonProgram type from micheline
- end(stack: MichelsonStack, stdout: List[str], output_mode='readable') Tuple[List[dict], Any, List[dict], PairType][source]
 Finish contract execution
- execute(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) MichelsonInstruction[source]
 Execute contract in interpreter
- execute_view(stack: MichelsonStack, stdout: List[str], context: ExecutionContext)[source]
 Execute view in interpreter
- classmethod instantiate(entrypoint: str, parameter, storage) MichelsonProgram[source]
 
- classmethod instantiate_view(name: str, parameter, storage) MichelsonProgram[source]
 
- static load(context: ExecutionContext, with_code=False) Type[MichelsonProgram][source]
 Create MichelsonProgram type from filled context
- static match(expr) Type[MichelsonProgram][source]
 
- parameter: Type[ParameterSection]
 
- ret(stack: MichelsonStack, stdout: List[str], output_mode='readable') MichelsonType[source]
 
- storage: Type[StorageSection]
 
- views: List[Type[ViewSection]]
 
- class pymavryk.michelson.program.TztMichelsonProgram[source]
 Michelson .tzt contract interpreter interface
- begin(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) None[source]
 Prepare stack for contract execution
- big_maps: Type[BigMapsSection] | None
 
- code: Type[CodeSection]
 
- static create(sequence: Type[MichelineSequence]) Type[TztMichelsonProgram][source]
 Create TztMichelsonProgram type from micheline
- end(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) None[source]
 Finish contract execution
- execute(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) MichelsonInstruction[source]
 Execute contract in interpreter
- fill_context(script, context: ExecutionContext) None[source]
 
- input: Type[InputSection]
 
- classmethod instantiate() TztMichelsonProgram[source]
 
- static load(context: ExecutionContext, with_code=False)[source]
 Create TztMichelsonProgram type from filled context
- static match(expr) Type[TztMichelsonProgram][source]
 
- output: Type[OutputSection]
 
- register_bigmaps(stack: MichelsonStack, stdout: List[str], context: ExecutionContext) None[source]