PyMavryk

A Python library for interacting with Mavryk blockchain,
testing smart contracts, and writing Michelson scripts.

Integration testing


You can run tests either on a remote node (without actual injecting) or using a builtin interpreter, it takes seconds to execute, not minutes.


PyMavryk allows to patch AMOUNT, SENDER, SOURCE, BALANCE, NOW, initial storage, and handle exceptions raised by FAILWITH.


Builtin REPL allows to mock cross-contract calls — all you need is to validate parameters of the spawned transactions.


Contract interface is derived straight from the compiled Michelson code, it doesn't matter what is the source language, LIGO, SmartPy, or else.


Use the whole power of the Python unit testing framework, including various assert helpers and interactive debugging plugins in VSCode and PyCharm.

PyMavryk client


The minimal setup requires only a browser — you can manage Mavryk contracts using Google Colaboratory, or any other online service that allows you to run Jupyter notebooks.


PyMavryk is capable of almost everything octez-client can do, so you can automate any CI/CD task, key management, data conversion or other.


PyMavryk is perfect when you need to do something fast: the default node and key settings allow you to get started right away, and the built-in documentation allows you to avoid switching between windows.


PyMavryk is built as flexible as possible: in most cases you will need only high-level interfaces, but at any moment you can go deeper and customize the logic.

Michelson kernel


Visualize and better understand stack transformations with the step-by-step execution and verbose logging.


Michelson instruction set is extended with useful helpers for debugging and patching context.


Mock blockchain bindings as you wish, even complicated scenarios like Big_map copying can be reproduced.


Shipped with autocomplete and builtin documentation, no need to switch tabs if you forget something.